Compare commits

..

5 commits

Author SHA1 Message Date
G2
79e8691865
Update rust.yml 2024-04-23 12:42:40 -05:00
G2
36de6bc030
Update rust.yml 2024-04-23 12:40:50 -05:00
G2
334c29e98d
Update rust.yml 2024-04-23 12:38:44 -05:00
efe895d4ff Bumped version to 0.3.2 2024-04-23 11:34:25 -05:00
9597aef05c Fixed not compiling on WASM 2024-04-23 11:33:11 -05:00
4 changed files with 23 additions and 21 deletions

View file

@ -3,5 +3,5 @@ rustflags = ["--cfg=web_sys_unstable_apis"]
[build] [build]
#just comment in the "current" target #just comment in the "current" target
target = "x86_64-unknown-linux-gnu" #target = "x86_64-unknown-linux-gnu"
#target = "wasm32-unknown-unknown" target = "wasm32-unknown-unknown"

View file

@ -16,9 +16,11 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Build - name: Setup rust environment
run: cargo build --verbose run: rustup target add wasm32-unknown-unknown
- name: Run tests - name: Build WASM
run: cargo test --verbose run: cargo build --verbose --target wasm32-unknown-unknown
- name: Build Native (Linux)
run: cargo build --verbose --target x86_64-unknown-linux-gnu
- name: Run clippy - name: Run clippy
run: cargo clippy --verbose run: cargo clippy --verbose

View file

@ -1,6 +1,6 @@
[package] [package]
name = "cross_usb" name = "cross_usb"
version = "0.3.1" version = "0.3.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

@ -10,24 +10,24 @@ use web_sys::{
// Crate stuff // Crate stuff
use crate::usb::{ use crate::usb::{
ControlIn, ControlOut, ControlType, Descriptor, Device, Interface, Recipient, UsbError, ControlIn, ControlOut, ControlType, UsbDescriptor, UsbDevice, UsbInterface, Recipient, UsbError,
}; };
#[wasm_bindgen] #[wasm_bindgen]
#[derive(Debug)] #[derive(Debug)]
pub struct UsbDescriptor { pub struct Descriptor {
device: WasmUsbDevice, device: WasmUsbDevice,
} }
#[wasm_bindgen] #[wasm_bindgen]
#[derive(Debug)] #[derive(Debug)]
pub struct UsbDevice { pub struct Device {
device: WasmUsbDevice, device: WasmUsbDevice,
} }
#[wasm_bindgen] #[wasm_bindgen]
#[derive(Debug)] #[derive(Debug)]
pub struct UsbInterface { pub struct Interface {
device: WasmUsbDevice, device: WasmUsbDevice,
_number: u8, _number: u8,
} }
@ -61,7 +61,7 @@ impl DeviceFilter {
} }
#[wasm_bindgen] #[wasm_bindgen]
pub async fn get_device(device_filter: Vec<DeviceFilter>) -> Result<UsbDescriptor, js_sys::Error> { pub async fn get_device(device_filter: Vec<DeviceFilter>) -> Result<Descriptor, js_sys::Error> {
let window = web_sys::window().unwrap(); let window = web_sys::window().unwrap();
let navigator = window.navigator(); let navigator = window.navigator();
@ -102,7 +102,7 @@ pub async fn get_device(device_filter: Vec<DeviceFilter>) -> Result<UsbDescripto
result result
}) { }) {
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?; let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;
return Ok(UsbDescriptor { device }); return Ok(Descriptor { device });
} }
} }
@ -161,7 +161,7 @@ pub async fn get_device(device_filter: Vec<DeviceFilter>) -> Result<UsbDescripto
let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?; let _open_promise = JsFuture::from(Promise::resolve(&device.open())).await?;
Ok(UsbDescriptor { device }) Ok(Descriptor { device })
} }
/* /*
@ -273,8 +273,8 @@ pub async fn get_device_list(device_filter: Vec<DeviceFilter>) -> Result<Vec<Usb
} }
*/ */
impl Descriptor for UsbDescriptor { impl UsbDescriptor for Descriptor {
type Device = UsbDevice; type Device = Device;
async fn open(self) -> Result<Self::Device, UsbError> { async fn open(self) -> Result<Self::Device, UsbError> {
Ok(Self::Device { Ok(Self::Device {
@ -307,10 +307,10 @@ impl Descriptor for UsbDescriptor {
} }
} }
impl Device for UsbDevice { impl UsbDevice for Device {
type Interface = UsbInterface; type Interface = Interface;
async fn open_interface(&self, number: u8) -> Result<UsbInterface, UsbError> { async fn open_interface(&self, number: u8) -> Result<Interface, UsbError> {
let dev_promise = let dev_promise =
JsFuture::from(Promise::resolve(&self.device.claim_interface(number))).await; JsFuture::from(Promise::resolve(&self.device.claim_interface(number))).await;
@ -324,7 +324,7 @@ impl Device for UsbDevice {
} }
}; };
Ok(UsbInterface { Ok(Interface {
device: self.device.clone(), device: self.device.clone(),
_number: number, _number: number,
}) })
@ -381,7 +381,7 @@ impl Device for UsbDevice {
} }
} }
impl<'a> Interface<'a> for UsbInterface { impl<'a> UsbInterface<'a> for Interface {
async fn control_in(&self, data: crate::usb::ControlIn) -> Result<Vec<u8>, UsbError> { async fn control_in(&self, data: crate::usb::ControlIn) -> Result<Vec<u8>, UsbError> {
let length = data.length; let length = data.length;
let params: UsbControlTransferParameters = data.into(); let params: UsbControlTransferParameters = data.into();