From 2cf7cc4c92fe0f7897513286e4bce944870e1bad Mon Sep 17 00:00:00 2001 From: matteo Date: Sun, 21 Sep 2025 18:00:32 +0200 Subject: fix compilation with usbd-hid feature off --- embassy-usb/src/class/hid.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'embassy-usb') diff --git a/embassy-usb/src/class/hid.rs b/embassy-usb/src/class/hid.rs index 8df23b384..f97bcdfac 100644 --- a/embassy-usb/src/class/hid.rs +++ b/embassy-usb/src/class/hid.rs @@ -8,6 +8,7 @@ use core::sync::atomic::{AtomicUsize, Ordering}; use ssmarshal::serialize; #[cfg(feature = "usbd-hid")] use usbd_hid::descriptor::AsInputReport; +#[cfg(feature = "usbd-hid")] use usbd_hid::hid_class::HidProtocolMode; use crate::control::{InResponse, OutResponse, Recipient, Request, RequestType}; @@ -32,6 +33,30 @@ const HID_REQ_SET_REPORT: u8 = 0x09; const HID_REQ_GET_PROTOCOL: u8 = 0x03; const HID_REQ_SET_PROTOCOL: u8 = 0x0b; +/// Get/Set Protocol mapping +/// See (7.2.5 and 7.2.6): +#[cfg(not(feature = "usbd-hid"))] +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] +#[repr(u8)] +pub enum HidProtocolMode { + /// Hid Boot Protocol Mode + Boot = 0, + /// Hid Report Protocol Mode + Report = 1, +} + +#[cfg(not(feature = "usbd-hid"))] +impl From for HidProtocolMode { + fn from(mode: u8) -> HidProtocolMode { + if mode == HidProtocolMode::Boot as u8 { + HidProtocolMode::Boot + } else { + HidProtocolMode::Report + } + } +} + /// Configuration for the HID class. pub struct Config<'d> { /// HID report descriptor. -- cgit