diff options
-rw-r--r-- | chip/stm32/usb_hid_keyboard.c | 13 | ||||
-rw-r--r-- | include/usb_hid.h | 5 |
2 files changed, 18 insertions, 0 deletions
diff --git a/chip/stm32/usb_hid_keyboard.c b/chip/stm32/usb_hid_keyboard.c index 7ca9aeb164..e55e8a432b 100644 --- a/chip/stm32/usb_hid_keyboard.c +++ b/chip/stm32/usb_hid_keyboard.c @@ -425,10 +425,23 @@ USB_DECLARE_EP(USB_EP_HID_KEYBOARD, hid_keyboard_tx, #endif hid_keyboard_event); +static int hid_keyboard_get_report(uint8_t report_id, uint8_t report_type, + const uint8_t **buffer_ptr, int *buffer_size) +{ + if (report_type == REPORT_TYPE_INPUT) { + *buffer_ptr = (uint8_t *)&report; + *buffer_size = sizeof(report); + return 0; + } + + return -1; +} + static struct usb_hid_config_t hid_config_kb = { .report_desc = report_desc, .report_size = sizeof(report_desc), .hid_desc = &hid_desc_kb, + .get_report = &hid_keyboard_get_report, }; static int hid_keyboard_iface_request(usb_uint *ep0_buf_rx, diff --git a/include/usb_hid.h b/include/usb_hid.h index d8626b4dba..e7b1cfe74b 100644 --- a/include/usb_hid.h +++ b/include/usb_hid.h @@ -25,6 +25,11 @@ #define USB_HID_DT_REPORT (USB_TYPE_CLASS | 0x02) #define USB_HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03) +/* Pre-defined report types */ +#define REPORT_TYPE_INPUT 0x01 +#define REPORT_TYPE_OUTPUT 0x02 +#define REPORT_TYPE_FEATURE 0x03 + struct usb_hid_class_descriptor { uint8_t bDescriptorType; uint16_t wDescriptorLength; |