summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <thach@tinyusb.org>2018-07-31 23:02:15 +0700
committerhathach <thach@tinyusb.org>2018-07-31 23:02:15 +0700
commit4bece22c9224799c8aa495f73f1019e3266de031 (patch)
tree85a41794086a2a37de4c349751c1ea6be2cfc177
parent05139e2aee21b6e49ff91eb0652cf6068a35bf84 (diff)
add hid keyboard LED indicator stub
-rw-r--r--ports/nrf/common-hal/usb_hid/Device.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/ports/nrf/common-hal/usb_hid/Device.c b/ports/nrf/common-hal/usb_hid/Device.c
index 27a50858f..19ccb3fe2 100644
--- a/ports/nrf/common-hal/usb_hid/Device.c
+++ b/ports/nrf/common-hal/usb_hid/Device.c
@@ -70,21 +70,29 @@ void common_hal_usb_hid_device_send_report(usb_hid_device_obj_t *self, uint8_t*
}
// Callbacks invoked when receive Get_Report request through control endpoint
-uint16_t tud_hid_generic_get_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen)
-{
+uint16_t tud_hid_generic_get_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen) {
// only support Input Report
if ( report_type != HID_REPORT_TYPE_INPUT ) return 0;
+ // index is ID-1
+ uint8_t idx = ( report_id ? (report_id-1) : 0 );
+
// fill buffer with current report
- memcpy(buffer, usb_hid_devices[report_id].report_buffer, reqlen);
+ memcpy(buffer, usb_hid_devices[idx].report_buffer, reqlen);
return reqlen;
}
// Callbacks invoked when receive Set_Report request through control endpoint
-void tud_hid_generic_set_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t const* buffer, uint16_t bufsize)
-{
+void tud_hid_generic_set_report_cb(uint8_t report_id, hid_report_type_t report_type, uint8_t const* buffer, uint16_t bufsize) {
+ // index is ID-1
+ uint8_t idx = ( report_id ? (report_id-1) : 0 );
+
if ( report_type == HID_REPORT_TYPE_OUTPUT ) {
- // TODO Support Keyboard LED e.g Capslock
+ // Check if it is Keyboard device
+ if ( (usb_hid_devices[idx].usage_page == HID_USAGE_PAGE_DESKTOP) && (usb_hid_devices[idx].usage == HID_USAGE_DESKTOP_KEYBOARD) ) {
+ // This is LED indicator (CapsLock, NumLock)
+ // TODO Light up some LED here
+ }
}
}