chore: clean up restore payload generation
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -237,6 +237,7 @@ name = "fujicli"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"byteorder",
|
||||
"clap",
|
||||
"libptp",
|
||||
"log",
|
||||
|
@@ -15,6 +15,7 @@ codegen-units = 1
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0.100"
|
||||
byteorder = "1.5.0"
|
||||
clap = { version = "4.5.48", features = ["derive", "wrap_help"] }
|
||||
libptp = "0.6.5"
|
||||
log = "0.4.28"
|
||||
|
@@ -1,10 +1,12 @@
|
||||
use std::{
|
||||
fmt,
|
||||
io::Cursor,
|
||||
ops::{Deref, DerefMut},
|
||||
time::Duration,
|
||||
};
|
||||
|
||||
use anyhow::bail;
|
||||
use byteorder::{LittleEndian, WriteBytesExt};
|
||||
use libptp::{DeviceInfo, StandardCommandCode};
|
||||
use log::{debug, error};
|
||||
use rusb::{DeviceDescriptor, GlobalContext};
|
||||
@@ -280,29 +282,18 @@ pub trait CameraImpl {
|
||||
debug!("Preparing ObjectInfo header for backup");
|
||||
|
||||
let mut obj_info = vec![0u8; 1088];
|
||||
let mut offset = 0;
|
||||
|
||||
let padding0: u32 = 0x0;
|
||||
let object_format: u16 = 0x5000;
|
||||
let padding1: u16 = 0x0;
|
||||
|
||||
obj_info[offset..offset + size_of::<u32>()].copy_from_slice(&padding0.to_le_bytes());
|
||||
offset += size_of::<u32>();
|
||||
obj_info[offset..offset + size_of::<u16>()].copy_from_slice(&object_format.to_le_bytes());
|
||||
offset += size_of::<u16>();
|
||||
obj_info[offset..offset + size_of::<u16>()].copy_from_slice(&padding1.to_le_bytes());
|
||||
offset += size_of::<u16>();
|
||||
obj_info[offset..offset + size_of::<u32>()]
|
||||
.copy_from_slice(&u32::try_from(buffer.len())?.to_le_bytes());
|
||||
|
||||
let param0: u32 = 0x0;
|
||||
let param1: u32 = 0x0;
|
||||
let mut cursor = Cursor::new(&mut obj_info[..]);
|
||||
cursor.write_u32::<LittleEndian>(0x0)?;
|
||||
cursor.write_u16::<LittleEndian>(0x5000)?;
|
||||
cursor.write_u16::<LittleEndian>(0x0)?;
|
||||
cursor.write_u32::<LittleEndian>(u32::try_from(buffer.len())?)?;
|
||||
|
||||
debug!("Sending ObjectInfo for backup");
|
||||
|
||||
ptp.command(
|
||||
libptp::StandardCommandCode::SendObjectInfo,
|
||||
&[param0, param1],
|
||||
&[0x0, 0x0],
|
||||
Some(&obj_info),
|
||||
Some(TIMEOUT),
|
||||
)?;
|
||||
|
Reference in New Issue
Block a user