mirror of
https://github.com/G2-Games/cross-usb.git
synced 2025-04-19 05:12:53 -05:00
v0.1.2, ran cargo fmt
This commit is contained in:
parent
d70248cc1d
commit
9aa10a019c
3 changed files with 27 additions and 16 deletions
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "cross_usb"
|
||||
version = "0.1.1"
|
||||
version = "0.1.2"
|
||||
authors = ["G2-Games <ke0bhogsg@gmail.com>"]
|
||||
repository = "https://github.com/G2-Games/cross-usb"
|
||||
documentation = "https://docs.rs/cross_usb"
|
||||
|
|
|
@ -38,22 +38,27 @@ pub async fn get_device(vendor_id: u16, product_id: u16) -> Result<UsbDevice, Bo
|
|||
#[derive(PartialEq, Eq, Clone)]
|
||||
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 mut device_info = None;
|
||||
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(_) => {
|
||||
device_info = Some(device);
|
||||
break;
|
||||
},
|
||||
}
|
||||
None => device_info = 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 {
|
||||
|
|
|
@ -29,7 +29,9 @@ pub async fn get_device(vendor_id: u16, product_id: u16) -> Result<UsbDevice, js
|
|||
let navigator = window.navigator();
|
||||
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
|
||||
for js_device in device_list {
|
||||
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 {
|
||||
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;
|
||||
|
||||
return Ok(UsbDevice {
|
||||
device
|
||||
})
|
||||
return Ok(UsbDevice { 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 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?;
|
||||
|
||||
|
@ -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);
|
||||
|
||||
#[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 navigator = window.navigator();
|
||||
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
|
||||
for js_device in device_list {
|
||||
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 {
|
||||
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;
|
||||
|
||||
return Ok(UsbDevice {
|
||||
device
|
||||
})
|
||||
return Ok(UsbDevice { device });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,7 +121,9 @@ pub async fn get_device_filter(device_filter: Vec<FilterTuple>) -> Result<UsbDev
|
|||
let filters = JsValue::from(&arr);
|
||||
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?;
|
||||
|
||||
|
|
Loading…
Reference in a new issue