use std::env;
use hidra::MaybeFuture;
fn main() -> hidra::HidResult<()> {
let mut args = env::args().skip(1);
let vid = u16::from_str_radix(&args.next().expect("usage: read_input <vid> <pid>"), 16)
.expect("vid must be hex");
let pid = u16::from_str_radix(&args.next().expect("usage: read_input <vid> <pid>"), 16)
.expect("pid must be hex");
let api = hidra::Hidra::new()?;
let device = api.open(vid, pid).wait()?;
println!("product: {:?}", device.get_product_string().wait()?);
let descriptor = device.parsed_report_descriptor().wait()?;
println!(
"report descriptor: {} top-level collection(s), max input report {} bytes, numbered ids: {}",
descriptor.collections.len(),
descriptor.max_report_size(hidra::descriptor::ReportKind::Input),
descriptor.uses_report_ids(),
);
println!("reading input reports (ctrl-c to quit)...");
let mut buf = [0u8; 256];
loop {
let len = device.read(&mut buf).wait()?;
println!("{:02x?}", &buf[..len]);
}
}