From f0cf13c89bcd809b41f9adff2e937805ee914c59 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 22 Sep 2015 00:07:06 +0200 Subject: [PATCH 1/2] HID: Renamed fields in HIDDescriptorListNode and HID_Descriptor In particular HIDDescriptorListNode.cb has been renamed to HIDDescriptorListNode.descriptor because it contains decriptor data and not callbacks. Moreover the HID_Descriptor.descriptor field has been renamed to HID_Descriptor.data so the structure has now two fields length and data. typedef struct __attribute__((packed)) { uint16_t length; const void* data; } HID_Descriptor; class HIDDescriptorListNode { public: HIDDescriptorListNode *next = NULL; const HID_Descriptor *descriptor; HIDDescriptorListNode(const HID_Descriptor *d) : descriptor(d) { } }; This imply a change in the use of the node from: node->cb->lenght node->cd->descriptor to node->descriptor->length node->descriptor->data --- hardware/arduino/avr/libraries/HID/HID.cpp | 4 ++-- hardware/arduino/avr/libraries/HID/HID.h | 6 +++--- hardware/arduino/sam/libraries/HID/HID.cpp | 6 +++--- hardware/arduino/sam/libraries/HID/HID.h | 8 ++++---- libraries/Keyboard/src/Keyboard.cpp | 6 +++--- libraries/Mouse/src/Mouse.cpp | 6 +++--- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/hardware/arduino/avr/libraries/HID/HID.cpp b/hardware/arduino/avr/libraries/HID/HID.cpp index c5954ed25f6..c1b5fdf01e2 100644 --- a/hardware/arduino/avr/libraries/HID/HID.cpp +++ b/hardware/arduino/avr/libraries/HID/HID.cpp @@ -61,7 +61,7 @@ int HID_GetDescriptor(int8_t t) HIDDescriptorListNode* current = rootNode; int total = 0; while(current != NULL) { - total += USB_SendControl(TRANSFER_PGM,current->cb->descriptor,current->cb->length); + total += USB_SendControl(TRANSFER_PGM,current->descriptor->data,current->descriptor->length); current = current->next; } return total; @@ -82,7 +82,7 @@ void HID_::AppendDescriptor(HIDDescriptorListNode *node) current->next = node; } modules_count++; - sizeof_hidReportDescriptor += (uint16_t)node->cb->length; + sizeof_hidReportDescriptor += (uint16_t)node->descriptor->length; } void HID_::SendReport(u8 id, const void* data, int len) diff --git a/hardware/arduino/avr/libraries/HID/HID.h b/hardware/arduino/avr/libraries/HID/HID.h index b9f29b4be4f..760090a9c62 100644 --- a/hardware/arduino/avr/libraries/HID/HID.h +++ b/hardware/arduino/avr/libraries/HID/HID.h @@ -46,14 +46,14 @@ typedef struct __attribute__((packed)) { uint16_t length; - const void* descriptor; + const void* data; } HID_Descriptor; class HIDDescriptorListNode { public: HIDDescriptorListNode *next = NULL; - const HID_Descriptor * cb; - HIDDescriptorListNode(const HID_Descriptor *ncb) {cb = ncb;} + const HID_Descriptor *descriptor; + HIDDescriptorListNode(const HID_Descriptor *d) : descriptor(d) { } }; class HID_ diff --git a/hardware/arduino/sam/libraries/HID/HID.cpp b/hardware/arduino/sam/libraries/HID/HID.cpp index 935039096d5..9c423f3da46 100644 --- a/hardware/arduino/sam/libraries/HID/HID.cpp +++ b/hardware/arduino/sam/libraries/HID/HID.cpp @@ -68,7 +68,7 @@ int HID_GetDescriptor(int8_t t) HIDDescriptorListNode* current = rootNode; int total = 0; while(current != NULL) { - total += USBD_SendControl(0,current->cb->descriptor,current->cb->length); + total += USBD_SendControl(0,current->descriptor->data,current->descriptor->length); current = current->next; } return total; @@ -89,7 +89,7 @@ void HID_::AppendDescriptor(HIDDescriptorListNode *node) current->next = node; } modules_count++; - sizeof_hidReportDescriptor += node->cb->length; + sizeof_hidReportDescriptor += node->descriptor->length; } void HID_::SendReport(uint8_t id, const void* data, int len) @@ -165,4 +165,4 @@ HID_::HID_(void) int HID_::begin(void) { return 0; -} \ No newline at end of file +} diff --git a/hardware/arduino/sam/libraries/HID/HID.h b/hardware/arduino/sam/libraries/HID/HID.h index 7288552d890..7ad231bd6cb 100644 --- a/hardware/arduino/sam/libraries/HID/HID.h +++ b/hardware/arduino/sam/libraries/HID/HID.h @@ -44,14 +44,14 @@ typedef struct __attribute__((packed)) { uint8_t length; - const void* descriptor; + const void* data; } HID_Descriptor; class HIDDescriptorListNode { public: HIDDescriptorListNode *next = NULL; - const HID_Descriptor * cb; - HIDDescriptorListNode(const HID_Descriptor *ncb) {cb = ncb;} + const HID_Descriptor *descriptor; + HIDDescriptorListNode(const HID_Descriptor *d) : descriptor(d) { } }; class HID_ @@ -90,4 +90,4 @@ typedef struct #define WEAK __attribute__ ((weak)) -#endif \ No newline at end of file +#endif diff --git a/libraries/Keyboard/src/Keyboard.cpp b/libraries/Keyboard/src/Keyboard.cpp index 6ea365c5e39..4a7d5b7d7b1 100644 --- a/libraries/Keyboard/src/Keyboard.cpp +++ b/libraries/Keyboard/src/Keyboard.cpp @@ -62,11 +62,11 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { Keyboard_::Keyboard_(void) { - static HID_Descriptor cb = { + static HID_Descriptor descriptor = { .length = sizeof(_hidReportDescriptor), - .descriptor = _hidReportDescriptor, + .data = _hidReportDescriptor, }; - static HIDDescriptorListNode node(&cb); + static HIDDescriptorListNode node(&descriptor); HID.AppendDescriptor(&node); } diff --git a/libraries/Mouse/src/Mouse.cpp b/libraries/Mouse/src/Mouse.cpp index 234ca60341d..c0e4439ffbc 100644 --- a/libraries/Mouse/src/Mouse.cpp +++ b/libraries/Mouse/src/Mouse.cpp @@ -62,11 +62,11 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { Mouse_::Mouse_(void) : _buttons(0) { - const static HID_Descriptor cb = { + const static HID_Descriptor descriptor = { .length = sizeof(_hidReportDescriptor), - .descriptor = _hidReportDescriptor, + .data = _hidReportDescriptor, }; - static HIDDescriptorListNode node(&cb); + static HIDDescriptorListNode node(&descriptor); HID.AppendDescriptor(&node); } From 401c4f0cf87b4cac320bccd1bfa4eb836fd37955 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 22 Sep 2015 01:40:35 +0200 Subject: [PATCH 2/2] HID: merged HID_Descriptor into HIDDescriptorListNode This simplifies the object model and produce a small gain in code size and performance. --- hardware/arduino/avr/libraries/HID/HID.cpp | 4 ++-- hardware/arduino/avr/libraries/HID/HID.h | 11 ++++------- hardware/arduino/sam/libraries/HID/HID.cpp | 4 ++-- hardware/arduino/sam/libraries/HID/HID.h | 10 +++------- libraries/Keyboard/src/Keyboard.cpp | 6 +----- libraries/Mouse/src/Mouse.cpp | 6 +----- 6 files changed, 13 insertions(+), 28 deletions(-) diff --git a/hardware/arduino/avr/libraries/HID/HID.cpp b/hardware/arduino/avr/libraries/HID/HID.cpp index c1b5fdf01e2..8533f08ed40 100644 --- a/hardware/arduino/avr/libraries/HID/HID.cpp +++ b/hardware/arduino/avr/libraries/HID/HID.cpp @@ -61,7 +61,7 @@ int HID_GetDescriptor(int8_t t) HIDDescriptorListNode* current = rootNode; int total = 0; while(current != NULL) { - total += USB_SendControl(TRANSFER_PGM,current->descriptor->data,current->descriptor->length); + total += USB_SendControl(TRANSFER_PGM,current->data,current->length); current = current->next; } return total; @@ -82,7 +82,7 @@ void HID_::AppendDescriptor(HIDDescriptorListNode *node) current->next = node; } modules_count++; - sizeof_hidReportDescriptor += (uint16_t)node->descriptor->length; + sizeof_hidReportDescriptor += (uint16_t)node->length; } void HID_::SendReport(u8 id, const void* data, int len) diff --git a/hardware/arduino/avr/libraries/HID/HID.h b/hardware/arduino/avr/libraries/HID/HID.h index 760090a9c62..1a87bb7cb2b 100644 --- a/hardware/arduino/avr/libraries/HID/HID.h +++ b/hardware/arduino/avr/libraries/HID/HID.h @@ -44,16 +44,13 @@ #define HID_REPORT_DESCRIPTOR_TYPE 0x22 #define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 -typedef struct __attribute__((packed)) { - uint16_t length; - const void* data; -} HID_Descriptor; - class HIDDescriptorListNode { public: HIDDescriptorListNode *next = NULL; - const HID_Descriptor *descriptor; - HIDDescriptorListNode(const HID_Descriptor *d) : descriptor(d) { } + HIDDescriptorListNode(const void *d, uint16_t l) : data(d), length(l) { } + + const void* data; + uint16_t length; }; class HID_ diff --git a/hardware/arduino/sam/libraries/HID/HID.cpp b/hardware/arduino/sam/libraries/HID/HID.cpp index 9c423f3da46..b2a79423e35 100644 --- a/hardware/arduino/sam/libraries/HID/HID.cpp +++ b/hardware/arduino/sam/libraries/HID/HID.cpp @@ -68,7 +68,7 @@ int HID_GetDescriptor(int8_t t) HIDDescriptorListNode* current = rootNode; int total = 0; while(current != NULL) { - total += USBD_SendControl(0,current->descriptor->data,current->descriptor->length); + total += USBD_SendControl(0,current->data,current->length); current = current->next; } return total; @@ -89,7 +89,7 @@ void HID_::AppendDescriptor(HIDDescriptorListNode *node) current->next = node; } modules_count++; - sizeof_hidReportDescriptor += node->descriptor->length; + sizeof_hidReportDescriptor += node->length; } void HID_::SendReport(uint8_t id, const void* data, int len) diff --git a/hardware/arduino/sam/libraries/HID/HID.h b/hardware/arduino/sam/libraries/HID/HID.h index 7ad231bd6cb..5c8313b5d11 100644 --- a/hardware/arduino/sam/libraries/HID/HID.h +++ b/hardware/arduino/sam/libraries/HID/HID.h @@ -42,16 +42,12 @@ #define HID_REPORT_DESCRIPTOR_TYPE 0x22 #define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23 -typedef struct __attribute__((packed)) { - uint8_t length; - const void* data; -} HID_Descriptor; - class HIDDescriptorListNode { public: HIDDescriptorListNode *next = NULL; - const HID_Descriptor *descriptor; - HIDDescriptorListNode(const HID_Descriptor *d) : descriptor(d) { } + HIDDescriptorListNode(const void *d, uint16_t l) : data(d), length(l) { } + uint8_t length; + const void* data; }; class HID_ diff --git a/libraries/Keyboard/src/Keyboard.cpp b/libraries/Keyboard/src/Keyboard.cpp index 4a7d5b7d7b1..468891de7f6 100644 --- a/libraries/Keyboard/src/Keyboard.cpp +++ b/libraries/Keyboard/src/Keyboard.cpp @@ -62,11 +62,7 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { Keyboard_::Keyboard_(void) { - static HID_Descriptor descriptor = { - .length = sizeof(_hidReportDescriptor), - .data = _hidReportDescriptor, - }; - static HIDDescriptorListNode node(&descriptor); + static HIDDescriptorListNode node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); HID.AppendDescriptor(&node); } diff --git a/libraries/Mouse/src/Mouse.cpp b/libraries/Mouse/src/Mouse.cpp index c0e4439ffbc..0cb5b2908fb 100644 --- a/libraries/Mouse/src/Mouse.cpp +++ b/libraries/Mouse/src/Mouse.cpp @@ -62,11 +62,7 @@ static const uint8_t _hidReportDescriptor[] PROGMEM = { Mouse_::Mouse_(void) : _buttons(0) { - const static HID_Descriptor descriptor = { - .length = sizeof(_hidReportDescriptor), - .data = _hidReportDescriptor, - }; - static HIDDescriptorListNode node(&descriptor); + static HIDDescriptorListNode node(_hidReportDescriptor, sizeof(_hidReportDescriptor)); HID.AppendDescriptor(&node); }