Try to implement slash bar functionality - part 1

This commit is contained in:
jochen@g14
2024-03-25 01:54:05 +01:00
parent 1366422d96
commit cdc9ca7b58
33 changed files with 887 additions and 367 deletions

View File

@@ -11,9 +11,11 @@ impl USBRaw {
pub fn new(id_product: u16) -> Result<Self> {
for device in rusb::devices()?.iter() {
let device_desc = device.device_descriptor()?;
if device_desc.vendor_id() == 0x0b05 && device_desc.product_id() == id_product {
let handle = Self::get_dev_handle(&device)?;
return Ok(Self(handle));
if device_desc.vendor_id() == 0x0b05 {
if device_desc.product_id() == id_product {
let handle = Self::get_dev_handle(&device)?;
return Ok(Self(handle));
}
}
}
@@ -27,11 +29,16 @@ impl USBRaw {
device: &Device<rusb::GlobalContext>,
) -> Result<DeviceHandle<rusb::GlobalContext>> {
// We don't expect this ID to ever change
let mut device = device.open()?;
device.reset()?;
device.set_auto_detach_kernel_driver(true)?;
device.claim_interface(0)?;
Ok(device)
let device_open = device.open();
if let Err(err) = device_open {
panic!("Could not open device, try running as root: {}", err);
} else {
let mut device = device_open.unwrap();
device.reset()?;
device.set_auto_detach_kernel_driver(true)?;
device.claim_interface(0)?;
Ok(device)
}
}
pub fn write_bytes(&self, message: &[u8]) -> Result<usize> {