hid-decode 0.2.0

HID report descriptor decoding utilities
Documentation
#[test]
fn decoder_example() {
    let hid_descriptor_bytes = [0x05, 0x01, 0x09, 0x02];
    let mut output = Vec::new();
    hid_decode::decode(&mut output, &hid_descriptor_bytes).expect("write error");
    // FIXME: figure out how to decode to a String.
    let output = String::try_from(output).expect("non-UTF8 output");
    assert_eq!(
        output,
        concat!("Usage Page: GenericDesktop\n", "Usage: Mouse\n")
    );
}

#[test]
fn structured_decoder() {
    use hid_types::id::usage::{KnownUsagePage, UsagePage, generic_desktop};
    use hid_types::item::usage::{KnownUsage, Usage};
    use hid_types::item::{Global, Item, Local};

    let hid_descriptor_bytes = [0x05, 0x01, 0x09, 0x02];
    let items = hid_decode::decode_items(&hid_descriptor_bytes).expect("decode failed");
    assert_eq!(
        items,
        [
            Item::Global(Global::UsagePage(UsagePage::Known(
                KnownUsagePage::GenericDesktop
            ))),
            Item::Local(Local::Usage(Usage::Known(KnownUsage::GenericDesktop(
                generic_desktop::KnownUsage::Mouse
            )))),
        ]
    );
}