v0.1.2, ran cargo fmt

This commit is contained in:
G2-Games 2024-02-01 00:28:46 -06:00
parent d70248cc1d
commit 9aa10a019c
3 changed files with 27 additions and 16 deletions

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cross_usb" name = "cross_usb"
version = "0.1.1" version = "0.1.2"
authors = ["G2-Games <ke0bhogsg@gmail.com>"] authors = ["G2-Games <ke0bhogsg@gmail.com>"]
repository = "https://github.com/G2-Games/cross-usb" repository = "https://github.com/G2-Games/cross-usb"
documentation = "https://docs.rs/cross_usb" documentation = "https://docs.rs/cross_usb"

View file

@ -38,22 +38,27 @@ pub async fn get_device(vendor_id: u16, product_id: u16) -> Result<UsbDevice, Bo
#[derive(PartialEq, Eq, Clone)] #[derive(PartialEq, Eq, Clone)]
pub struct FilterTuple(pub u16, pub u16); pub struct FilterTuple(pub u16, pub u16);
pub async fn get_device_filter(device_filter: Vec<FilterTuple>) -> Result<UsbDevice, Box<dyn Error>> { pub async fn get_device_filter(
device_filter: Vec<FilterTuple>,
) -> Result<UsbDevice, Box<dyn Error>> {
let devices = nusb::list_devices().unwrap(); let devices = nusb::list_devices().unwrap();
let mut device_info = None; let mut device_info = None;
for device in devices { for device in devices {
match device_filter.iter().position(|i| i == &FilterTuple(device.vendor_id(), device.product_id())) { match device_filter
.iter()
.position(|i| i == &FilterTuple(device.vendor_id(), device.product_id()))
{
Some(_) => { Some(_) => {
device_info = Some(device); device_info = Some(device);
break; break;
}, }
None => device_info = None, None => device_info = None,
} }
} }
if device_info.is_none() { if device_info.is_none() {
return Err("No devices from the list found".into()) return Err("No devices from the list found".into());
} }
let device_info = match device_info { let device_info = match device_info {

View file

@ -29,7 +29,9 @@ pub async fn get_device(vendor_id: u16, product_id: u16) -> Result<UsbDevice, js
let navigator = window.navigator(); let navigator = window.navigator();
let usb = navigator.usb(); let usb = navigator.usb();
let device_list: Array = JsFuture::from(Promise::resolve(&usb.get_devices())).await?.into(); let device_list: Array = JsFuture::from(Promise::resolve(&usb.get_devices()))
.await?
.into();
// Check if the device is already paired, if so, we don't need to request it again // Check if the device is already paired, if so, we don't need to request it again
for js_device in device_list { for js_device in device_list {
let device: WasmUsbDevice = js_device.into(); let device: WasmUsbDevice = js_device.into();
@ -37,9 +39,7 @@ pub async fn get_device(vendor_id: u16, product_id: u16) -> Result<UsbDevice, js
if device.vendor_id() == vendor_id && device.product_id() == product_id { if device.vendor_id() == vendor_id && device.product_id() == product_id {
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?; let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;
return Ok(UsbDevice { return Ok(UsbDevice { device });
device
})
} }
} }
@ -62,7 +62,9 @@ pub async fn get_device(vendor_id: u16, product_id: u16) -> Result<UsbDevice, js
let filters2 = UsbDeviceRequestOptions::new(&filters); let filters2 = UsbDeviceRequestOptions::new(&filters);
let device: WasmUsbDevice = JsFuture::from(Promise::resolve(&usb.request_device(&filters2))).await?.into(); let device: WasmUsbDevice = JsFuture::from(Promise::resolve(&usb.request_device(&filters2)))
.await?
.into();
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?; let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;
@ -74,13 +76,17 @@ pub async fn get_device(vendor_id: u16, product_id: u16) -> Result<UsbDevice, js
pub struct FilterTuple(pub u16, pub u16); pub struct FilterTuple(pub u16, pub u16);
#[wasm_bindgen] #[wasm_bindgen]
pub async fn get_device_filter(device_filter: Vec<FilterTuple>) -> Result<UsbDevice, js_sys::Error> { pub async fn get_device_filter(
device_filter: Vec<FilterTuple>,
) -> Result<UsbDevice, js_sys::Error> {
let window = web_sys::window().unwrap(); let window = web_sys::window().unwrap();
let navigator = window.navigator(); let navigator = window.navigator();
let usb = navigator.usb(); let usb = navigator.usb();
let device_list: Array = JsFuture::from(Promise::resolve(&usb.get_devices())).await?.into(); let device_list: Array = JsFuture::from(Promise::resolve(&usb.get_devices()))
.await?
.into();
// Check if the device is already paired, if so, we don't need to request it again // Check if the device is already paired, if so, we don't need to request it again
for js_device in device_list { for js_device in device_list {
let device: WasmUsbDevice = js_device.into(); let device: WasmUsbDevice = js_device.into();
@ -89,9 +95,7 @@ pub async fn get_device_filter(device_filter: Vec<FilterTuple>) -> Result<UsbDev
if device.vendor_id() == filter_info.0 && device.product_id() == filter_info.1 { if device.vendor_id() == filter_info.0 && device.product_id() == filter_info.1 {
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?; let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;
return Ok(UsbDevice { return Ok(UsbDevice { device });
device
})
} }
} }
} }
@ -117,7 +121,9 @@ pub async fn get_device_filter(device_filter: Vec<FilterTuple>) -> Result<UsbDev
let filters = JsValue::from(&arr); let filters = JsValue::from(&arr);
let filters2 = UsbDeviceRequestOptions::new(&filters); let filters2 = UsbDeviceRequestOptions::new(&filters);
let device: WasmUsbDevice = JsFuture::from(Promise::resolve(&usb.request_device(&filters2))).await?.into(); let device: WasmUsbDevice = JsFuture::from(Promise::resolve(&usb.request_device(&filters2)))
.await?
.into();
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?; let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;