From 917484aae04fe172315ce07fb8931af4c7311e14 Mon Sep 17 00:00:00 2001 From: David Hoppenbrouwers Date: Sat, 10 Sep 2022 02:01:11 +0200 Subject: [PATCH] Update examples in usb_hid_item README --- usb_hid_item/README.md | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/usb_hid_item/README.md b/usb_hid_item/README.md index 4678b22..8344432 100644 --- a/usb_hid_item/README.md +++ b/usb_hid_item/README.md @@ -1,22 +1,8 @@ # HID report descriptor item parser -## Example +## Examples -### Using items directly - -```rs -const QEMU_USB_TABLET: &[u8] = &[ - 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, - 0x03, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x01, 0x75, 0x05, - 0x81, 0x01, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x15, 0x00, 0x26, 0xff, 0x7f, 0x35, 0x00, - 0x46, 0xff, 0x7f, 0x75, 0x10, 0x95, 0x02, 0x81, 0x02, 0x05, 0x01, 0x09, 0x38, 0x15, 0x81, - 0x25, 0x7f, 0x35, 0x00, 0x45, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, -]; - -dbg!(usb_hid_item::parse(QEMU_USB_TABLET).collect::>()); -``` - -### Using the tree parser +### Using the default stateful parser ```rs const QEMU_USB_TABLET: &[u8] = &[ @@ -39,21 +25,33 @@ let mut usages = Usages::new(); fn f(val: Value, fields: &mut Vec<(Usages, Field)>, usages: &mut Usages) { match val { - Value::Collection(c) => { - usages.clear(); - c.for_each(|c| f(val.unwrap(), fields, usages)); - } + Value::Collection(_) | Value::EndCollection => usages.clear(), Value::Usage { page, ids } => usages.push((page, ids)), Value::Field(f) => fields.push((mem::take(usages), f)), + Value::StackFrame(s) => s.for_each(|s| f(val.unwrap(), fields, usages)), } } -usb_hid_item::tree::parse(data) +usb_hid_item::parse(data) .iter() - .for_each(|c| f(c.unwrap(), &mut fields, &mut usages)); + .for_each(|e| f(e.unwrap(), &mut fields, &mut usages)); dbg!(fields); ``` +### Using items directly + +```rs +const QEMU_USB_TABLET: &[u8] = &[ + 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, + 0x03, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x01, 0x75, 0x05, + 0x81, 0x01, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x15, 0x00, 0x26, 0xff, 0x7f, 0x35, 0x00, + 0x46, 0xff, 0x7f, 0x75, 0x10, 0x95, 0x02, 0x81, 0x02, 0x05, 0x01, 0x09, 0x38, 0x15, 0x81, + 0x25, 0x7f, 0x35, 0x00, 0x45, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, +]; + +dbg!(usb_hid_item::item::parse(QEMU_USB_TABLET).collect::>()); +``` + ## References *