Skip to content

Commit 340a112

Browse files
committed
Initial commit
1 parent e0dec90 commit 340a112

File tree

4 files changed

+251
-258
lines changed

4 files changed

+251
-258
lines changed

src/HID/HID.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,7 @@ void HID_::AppendDescriptor(HIDSubDescriptor *node)
9090
int HID_::SetFeature(uint8_t id, const void* data, int len)
9191
{
9292
if(!rootReport) {
93-
static HIDReport report(id, data, len);
94-
rootReport = &report;
93+
rootReport = new HIDReport(id, data, len);
9594
} else {
9695
HIDReport* current;
9796
int i=0;
@@ -100,11 +99,12 @@ int HID_::SetFeature(uint8_t id, const void* data, int len)
10099
return i;
101100
}
102101
// check if we are on the last report
103-
if(i+1 == reportCount)
102+
if(!current->next) {
103+
current->next = new HIDReport(id, data, len);
104104
break;
105+
}
105106
}
106-
static HIDReport report(id, data, len);
107-
current->next = &report;
107+
108108
}
109109

110110
reportCount++;
@@ -149,17 +149,23 @@ bool HID_::setup(USBSetup& setup)
149149

150150
if(setup.wValueH == HID_REPORT_TYPE_FEATURE)
151151
{
152-
152+
// dbg->print(setup.wValueL);
153153
HIDReport* current;
154-
for(current=rootReport; current; current=current->next) {
155-
156-
if(current->id == setup.wValueL) {
154+
int i=0;
155+
for(current=rootReport; current && i<reportCount; current=current->next, i++) {
156+
// dbg->print(":");
157+
// dbg->print(current->id);
158+
// dbg->print(" ");
159+
// dbg->print(current->length);
160+
// dbg->print(" ");
161+
if(setup.wValueL == current->id) {
157162
if(USB_SendControl(0, &(current->id), 1)<0 ||
158163
USB_SendControl(0, current->data, current->length)<0)
159-
return false;
160-
164+
return false;
165+
161166
break;
162167
}
168+
// dbg->println("");
163169
}
164170

165171
}

src/HID/HID.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class HID_ : public PluggableUSBModule
140140
uint8_t protocol;
141141
uint8_t idle;
142142

143-
// Buffer pointers to hold the feature data
143+
// Buffer pointer to hold the feature data
144144
HIDReport* rootReport;
145145
uint16_t reportCount;
146146

0 commit comments

Comments
 (0)