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);