From 85922c28603c17bf450b45fed6ffa68a902385b3 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Tue, 22 Sep 2015 22:07:21 +0200 Subject: [PATCH] Added SetInterface function This might help use to set a different hid interface later via keyboard/mouse api --- src/PluggableHID/HID.cpp | 20 ++++++++++++-------- src/PluggableHID/HID.h | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/PluggableHID/HID.cpp b/src/PluggableHID/HID.cpp index 99560e0..e609add 100644 --- a/src/PluggableHID/HID.cpp +++ b/src/PluggableHID/HID.cpp @@ -55,21 +55,25 @@ uint8_t HID_::_hid_idle = 1; int HID_::HID_GetInterface(u8* interfaceNum) { interfaceNum[0] += 1; // uses 1 - _hidInterface = - { + _hidInterface.hid = #if defined(USE_BOOT_KEYBOARD_PROTOCOL) - D_INTERFACE(HID_INTERFACE,1,3,1,1), + D_INTERFACE(HID_INTERFACE,1,3,1,1); #elif defined(USE_BOOT_MOUSE_PROTOCOL) - D_INTERFACE(HID_INTERFACE,1,3,1,2), + D_INTERFACE(HID_INTERFACE,1,3,1,2); #else - D_INTERFACE(HID_INTERFACE,1,3,0,0), + D_INTERFACE(HID_INTERFACE,1,3,0,0); #endif - D_HIDREPORT(sizeof_hidReportDescriptor), - D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,USB_EP_SIZE,0x01) - }; + _hidInterface.desc = D_HIDREPORT(sizeof_hidReportDescriptor); + _hidInterface.in = D_ENDPOINT(USB_ENDPOINT_IN (HID_ENDPOINT_INT),USB_ENDPOINT_TYPE_INTERRUPT,USB_EP_SIZE,0x01); return USB_SendControl(0,&_hidInterface,sizeof(_hidInterface)); } +void HID_::SetInterface(InterfaceDescriptor interface) +{ + // Change the HID Interface (required for BOOT protocol) + _hidInterface.hid = interface; +} + int HID_::HID_GetDescriptor(int8_t t) { if (HID_REPORT_DESCRIPTOR_TYPE == t) { diff --git a/src/PluggableHID/HID.h b/src/PluggableHID/HID.h index 5562f9e..1bde479 100644 --- a/src/PluggableHID/HID.h +++ b/src/PluggableHID/HID.h @@ -78,6 +78,7 @@ private: int begin(void); void SendReport(uint8_t id, const void* data, int len); void AppendDescriptor(HIDDevice* device); + void SetInterface(InterfaceDescriptor interface); // Static functions static int HID_GetInterface(u8* interfaceNum);