use async_hid::{AsyncHidRead, HidBackend, HidResult}; use deku::DekuContainerRead; use futures_lite::StreamExt; use shared::hid::AudioTelemetryReport; #[pollster::main] async fn main() -> HidResult<()> { let usbhid = HidBackend::default(); let dev = usbhid .enumerate() .await? .find(|d| d.product_id == 0xcc1d && d.vendor_id == 0x1209) .await .expect("GUAC device not found or not accessible (try as root?)"); let mut reader = dev.open_readable().await?; let mut buf = [0u8; core::mem::size_of::()]; while let Ok(r) = reader.read_input_report(&mut buf).await { let buf = &buf[..r]; match AudioTelemetryReport::from_bytes((buf, 0)) { Ok((_, r)) => println!("{:?}", r), Err(e) => eprintln!("Unable to parse report: {:?}", e), } } Ok(()) }