mirror of
https://github.com/G2-Games/cross-usb.git
synced 2025-04-19 13:22: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]
|
[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"
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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?;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue