diff --git a/src/ImprovedKeyboard.cpp b/src/ImprovedKeyboard.cpp index b06ad38..4ddae0c 100644 --- a/src/ImprovedKeyboard.cpp +++ b/src/ImprovedKeyboard.cpp @@ -116,7 +116,7 @@ void Keyboard_::send_now(void){ } #if defined(HID_KEYBOARD_LEDS_ENABLED) -void Keyboard_::setReportData(const void* data, int len){ +void Keyboard_::setReportData(const void* data, uint8_t len){ // Save led state if(len == 1) leds = *(uint8_t*)data; diff --git a/src/ImprovedKeyboard.h b/src/ImprovedKeyboard.h index a8fddc1..8b94c34 100644 --- a/src/ImprovedKeyboard.h +++ b/src/ImprovedKeyboard.h @@ -57,7 +57,7 @@ private: HID_KeyboardReport_Data_t _keyReport; void sendReport(HID_KeyboardReport_Data_t* keys); #if defined(HID_KEYBOARD_LEDS_ENABLED) - virtual void setReportData(const void* data, int len); + virtual void setReportData(const void* data, uint8_t len); uint8_t leds; #endif public: diff --git a/src/NKROKeyboard.cpp b/src/NKROKeyboard.cpp index c37f488..0f9ae2c 100644 --- a/src/NKROKeyboard.cpp +++ b/src/NKROKeyboard.cpp @@ -121,7 +121,7 @@ void NKROKeyboard_::send_now(void){ } #if defined(HID_KEYBOARD_LEDS_ENABLED) -void NKROKeyboard_::setReportData(const void* data, int len){ +void NKROKeyboard_::setReportData(const void* data, uint8_t len){ // Save led state if(len == 1) leds = *(uint8_t*)data; diff --git a/src/NKROKeyboard.h b/src/NKROKeyboard.h index 60d62cc..0efb7ba 100644 --- a/src/NKROKeyboard.h +++ b/src/NKROKeyboard.h @@ -56,7 +56,7 @@ protected: HID_NKROKeyboardReport_Data_t _keyReport; void sendReport(HID_NKROKeyboardReport_Data_t* keys); #if defined(HID_KEYBOARD_LEDS_ENABLED) - virtual void setReportData(const void* data, int len); + virtual void setReportData(const void* data, uint8_t len); uint8_t leds; #endif public: diff --git a/src/PluggableHID/HID.cpp b/src/PluggableHID/HID.cpp index b8dc38d..d91ca56 100644 --- a/src/PluggableHID/HID.cpp +++ b/src/PluggableHID/HID.cpp @@ -160,12 +160,14 @@ bool HID_::HID_Setup(USBSetup& setup, u8 i) // Get reportID and search for the suited HIDDevice uint8_t ID = setup.wValueL; HIDDevice *current = rootDevice; + while(current != NULL) { // Search HIDDevice for report ID if(current->reportID == ID) { // Get the data length information and the corresponding bytes + // Assuming the host will never send more than 255 bytes uint8_t length = setup.wLength; uint8_t data[length]; USB_RecvControl(data, length); diff --git a/src/PluggableHID/HIDDevice.cpp b/src/PluggableHID/HIDDevice.cpp index 97b5c83..f971f6d 100644 --- a/src/PluggableHID/HIDDevice.cpp +++ b/src/PluggableHID/HIDDevice.cpp @@ -20,7 +20,7 @@ void HIDDevice::SendRawReport(const void* data, int len){ HID.SendReport(HID_REPORTID_NONE, data, len); } -void HIDDevice::setReportData(const void* data, int len){ +void HIDDevice::setReportData(const void* data, uint8_t len){ // Discard this information if its not implemented by the HIDDevice } diff --git a/src/PluggableHID/HIDDevice.h b/src/PluggableHID/HIDDevice.h index 1ec3495..62f78ec 100644 --- a/src/PluggableHID/HIDDevice.h +++ b/src/PluggableHID/HIDDevice.h @@ -49,7 +49,7 @@ public: const uint16_t descriptorLength; const uint8_t reportID; - virtual void setReportData(const void* data, int len); + virtual void setReportData(const void* data, uint8_t len); protected: // Could be used and inherited public for custom, professional usage, like raw Keyboard diff --git a/src/TeensyKeyboard.cpp b/src/TeensyKeyboard.cpp index fd7ba3a..5af384e 100644 --- a/src/TeensyKeyboard.cpp +++ b/src/TeensyKeyboard.cpp @@ -30,7 +30,7 @@ HIDDevice((uint8_t*)teensykeyboard_hid_report_desc, sizeof(teensykeyboard_hid_re } #if defined(HID_KEYBOARD_LEDS_ENABLED) -void usb_keyboard_class::setReportData(const void* data, int len){ +void usb_keyboard_class::setReportData(const void* data, uint8_t len){ // Save led state if(len == 1) leds = *(uint8_t*)data; diff --git a/src/TeensyKeyboard.h b/src/TeensyKeyboard.h index a2996f2..3db7299 100644 --- a/src/TeensyKeyboard.h +++ b/src/TeensyKeyboard.h @@ -128,7 +128,7 @@ class usb_keyboard_class : public Print, private HIDDevice uint8_t keyboard_report_data[8]; #if defined(HID_KEYBOARD_LEDS_ENABLED) - virtual void setReportData(const void* data, int len); + virtual void setReportData(const void* data, uint8_t len); uint8_t leds; #endif };