hid-decode crate
This crate contains tools for decoding USB HID report descriptors.
It can decode report descriptors to plain text or structured types from the hid-types crate.
Example
static GAMEPAD_DESCRIPTOR: &[u8] = include_bytes!("gamepad.bin");
let mut output = Vec::new();
hid_decode::decode(&mut output, &GAMEPAD_DESCRIPTOR).expect("write error");
let output = String::try_from(output).expect("non-UTF8 output");
assert_eq!(
output.lines().collect::<Vec<_>>(),
[
"Usage Page: GenericDesktop",
"Usage: Gamepad",
"Collection: Application",
"Usage Page: Button",
"Usage Minimum: 1",
"Usage Maximum: 8",
"Logical Minimum: 0",
"Logical Maximum: 1",
"Report Size: 1",
"Report Count: 8",
"Input: Data Variable Absolute No-Wrap Linear Preferred-State No-Null-Position Bit-Field",
"EndCollection",
]
);