diff --git a/Cargo.lock b/Cargo.lock index 98f0d57..73be35e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -299,9 +299,9 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nusb" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18ef13beb3b3a8fc16fd7aea912ebd3d45dde00a9a5b968d0742297468065845" +checksum = "03fba503685f5c3e9f6a11ff9711c16086ab6beacaa6ad3df9e217a91a8d4c82" dependencies = [ "core-foundation", "core-foundation-sys", diff --git a/Cargo.toml b/Cargo.toml index 696c521..2742fc0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ crate-type = ["cdylib"] futures-lite = "2.6.1" napi = { version = "3.9.0", features = ["tokio_rt"] } napi-derive = "3.5.6" -nusb = "=0.2.7" +nusb = "=0.2.8" tokio = { version = "1.52.3", features = ["rt", "time", "fs", "macros"] } [build-dependencies] diff --git a/src/webusb_device.rs b/src/webusb_device.rs index 24bfd1e..3652f16 100644 --- a/src/webusb_device.rs +++ b/src/webusb_device.rs @@ -680,53 +680,26 @@ impl UsbDevice { #[napi(getter)] pub unsafe fn manufacturerName(&mut self) -> Result> { - match &self.device_info.manufacturer_string() { - Some(str) => Ok(Some(str.to_string())), - None => { - let device = match self.device_guard().as_ref() { - Some(device) => device.clone(), - None => self._open()?, - }; - - get_string( - &device, - device.device_descriptor().manufacturer_string_index(), - ) - } - } + self.device_info + .get_manufacturer_string() + .wait() + .map_err(|e| napi::Error::from_reason(format!("getString error: {e}"))) } #[napi(getter)] pub unsafe fn productName(&mut self) -> Result> { - match &self.device_info.product_string() { - Some(str) => Ok(Some(str.to_string())), - None => { - let device = match self.device_guard().as_ref() { - Some(device) => device.clone(), - None => self._open()?, - }; - - get_string(&device, device.device_descriptor().product_string_index()) - } - } + self.device_info + .get_product_string() + .wait() + .map_err(|e| napi::Error::from_reason(format!("getString error: {e}"))) } #[napi(getter)] pub unsafe fn serialNumber(&mut self) -> Result> { - match &self.device_info.serial_number() { - Some(str) => Ok(Some(str.to_string())), - None => { - let device = match self.device_guard().as_ref() { - Some(device) => device.clone(), - None => self._open()?, - }; - - get_string( - &device, - device.device_descriptor().serial_number_string_index(), - ) - } - } + self.device_info + .get_serial_number_string() + .wait() + .map_err(|e| napi::Error::from_reason(format!("getString error: {e}"))) } #[napi(getter)]