Expand description
HID Report Descriptor parser.
Parses a USB HID report descriptor byte stream and provides typed access to field values inside raw report buffers, without heap allocation.
§Usage
ⓘ
use embassy_usb_host::class::hid::{HidHost, PROTOCOL_BOOT};
use embassy_usb_host::class::hid_report::{ReportDescriptor, usage_page, usage};
// After enumeration, fetch the HID report descriptor:
let mut desc_buf = [0u8; 256];
let desc_bytes = hid.fetch_report_descriptor(&mut desc_buf).await?;
let report: ReportDescriptor<32> = ReportDescriptor::parse(desc_bytes);
// In the read loop:
let mut buf = [0u8; 64];
hid.read(&mut buf).await?;
let x = report.extract_i32(&buf, 0, usage_page::GENERIC_DESKTOP, usage::X);
let y = report.extract_i32(&buf, 0, usage_page::GENERIC_DESKTOP, usage::Y);
let btn1 = report.extract_bool(&buf, 0, usage_page::BUTTON, 1);Modules§
- flags
- Bit flags from a HID Input/Output/Feature item (bits 0–7 of the item data).
- usage
- Generic Desktop usages (usage page
usage_page::GENERIC_DESKTOP). - usage_
page - Common HID usage page identifiers.
Structs§
- Report
Descriptor - Parsed HID report descriptor.
- Report
Field - A single logical field decoded from a HID report descriptor.