28 lines
879 B
Rust
28 lines
879 B
Rust
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::<AudioTelemetryReport>()];
|
|
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(())
|
|
}
|