mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-17 06:52:18 +01:00
HID: merged HID_Descriptor into HIDDescriptorListNode
This simplifies the object model and produce a small gain in code size and performance.
This commit is contained in:
parent
f0cf13c89b
commit
401c4f0cf8
@ -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)
|
||||
|
@ -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_
|
||||
|
@ -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)
|
||||
|
@ -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_
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user