From b970760c7468cea0d21297f1da80f2b96c63e182 Mon Sep 17 00:00:00 2001 From: Lennard Kittner Date: Thu, 27 Mar 2025 21:25:16 +0100 Subject: [PATCH] Add vendor and product ID to DeviceState --- src/devices/mod.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/devices/mod.rs b/src/devices/mod.rs index 8771d24..a8445e5 100644 --- a/src/devices/mod.rs +++ b/src/devices/mod.rs @@ -26,6 +26,8 @@ pub fn connect_compatible_device() -> Result, DeviceError> { #[derive(Debug)] pub struct DeviceState { pub hid_device: HidDevice, + pub product_id: u16, + pub vendor_id: u16, pub device_name: Option, pub battery_level: Option, pub charging: Option, @@ -80,21 +82,24 @@ Connected: {}", impl DeviceState { pub fn new(product_ids: &[u16], vendor_ids: &[u16]) -> Result { let hid_api = HidApi::new()?; - let hid_device = hid_api + let (hid_device, product_id, vendor_id) = hid_api .device_list() .find_map(|info| { if product_ids.contains(&info.product_id()) && vendor_ids.contains(&info.vendor_id()) { - Some(hid_api.open(info.vendor_id(), info.product_id())) + Some((hid_api.open(info.vendor_id(), info.product_id()), info.product_id(), info.vendor_id())) } else { None } }) - .ok_or(DeviceError::NoDeviceFound())??; + .ok_or(DeviceError::NoDeviceFound())?; + let hid_device = hid_device?; let device_name = hid_device.get_product_string()?; Ok(DeviceState { hid_device, + product_id, + vendor_id, device_name, charging: None, battery_level: None,