aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cores/arduino/PluggableUSB.cpp14
-rw-r--r--libraries/HID/HID.cpp20
-rw-r--r--libraries/HID/HID.h4
3 files changed, 23 insertions, 15 deletions
diff --git a/cores/arduino/PluggableUSB.cpp b/cores/arduino/PluggableUSB.cpp
index 50fd798..acc6276 100644
--- a/cores/arduino/PluggableUSB.cpp
+++ b/cores/arduino/PluggableUSB.cpp
@@ -29,19 +29,23 @@ PluggableUSB_ PluggableUSB;
int PluggableUSB_::getInterface(uint8_t* interfaceNum)
{
- int ret = 0;
+ int sent = 0;
PUSBListNode* node;
for (node = rootNode; node; node = node->next) {
- ret = node->getInterface(interfaceNum);
+ int res = node->getInterface(interfaceNum);
+ if (res == -1)
+ return -1;
+ sent += res;
}
- return ret;
+ return sent;
}
-int PluggableUSB_::getDescriptor(int8_t t)
+int PluggableUSB_::getDescriptor(int8_t type)
{
PUSBListNode* node;
for (node = rootNode; node; node = node->next) {
- int ret = node->getDescriptor(t);
+ int ret = node->getDescriptor(type);
+ // ret!=0 -> request has been processed
if (ret)
return ret;
}
diff --git a/libraries/HID/HID.cpp b/libraries/HID/HID.cpp
index a871415..a109574 100644
--- a/libraries/HID/HID.cpp
+++ b/libraries/HID/HID.cpp
@@ -35,19 +35,23 @@ int HID_::getInterface(uint8_t* interfaceNum)
return USB_SendControl(0, &hidInterface, sizeof(hidInterface));
}
-int HID_::getDescriptor(int8_t t)
+int HID_::getDescriptor(int8_t type)
{
- if (HID_REPORT_DESCRIPTOR_TYPE == t) {
+ if (HID_REPORT_DESCRIPTOR_TYPE == type) {
HIDDescriptorListNode* current = rootNode;
int total = 0;
- while(current != NULL) {
- total += USB_SendControl(TRANSFER_PGM,current->data,current->length);
+ while (current != NULL) {
+ int res = USB_SendControl(TRANSFER_PGM, current->data, current->length);
+ if (res == -1)
+ return -1;
+ total += res;
current = current->next;
}
return total;
- } else {
- return 0;
}
+
+ // Ignored
+ return 0;
}
void HID_::AppendDescriptor(HIDDescriptorListNode *node)
@@ -71,9 +75,9 @@ void HID_::SendReport(uint8_t id, const void* data, int len)
USB_Send(endpoint() | TRANSFER_RELEASE,data,len);
}
-bool HID_::setup(USBSetup& setup, uint8_t i)
+bool HID_::setup(USBSetup& setup, uint8_t interfaceNum)
{
- if (interface() != i) {
+ if (interface() != interfaceNum) {
return false;
} else {
uint8_t r = setup.bRequest;
diff --git a/libraries/HID/HID.h b/libraries/HID/HID.h
index f951229..ed08cf0 100644
--- a/libraries/HID/HID.h
+++ b/libraries/HID/HID.h
@@ -83,8 +83,8 @@ public:
protected:
// Implementation of the PUSBListNode
int getInterface(uint8_t* interfaceNum);
- int getDescriptor(int8_t t);
- bool setup(USBSetup& setup, uint8_t i);
+ int getDescriptor(int8_t type);
+ bool setup(USBSetup& setup, uint8_t interfaceNum);
private:
HIDDescriptor hidInterface;