aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cores/arduino/PluggableUSB.cpp8
-rw-r--r--cores/arduino/PluggableUSB.h8
-rw-r--r--cores/arduino/USBCore.cpp4
-rw-r--r--libraries/HID/HID.cpp29
-rw-r--r--libraries/HID/HID.h4
5 files changed, 26 insertions, 27 deletions
diff --git a/cores/arduino/PluggableUSB.cpp b/cores/arduino/PluggableUSB.cpp
index 95d4079..21dc7a8 100644
--- a/cores/arduino/PluggableUSB.cpp
+++ b/cores/arduino/PluggableUSB.cpp
@@ -38,11 +38,11 @@ int PluggableUSB_::getInterface(uint8_t* interfaceCount)
return sent;
}
-int PluggableUSB_::getDescriptor(int8_t type)
+int PluggableUSB_::getDescriptor(USBSetup& setup)
{
PUSBListNode* node;
for (node = rootNode; node; node = node->next) {
- int ret = node->getDescriptor(type);
+ int ret = node->getDescriptor(setup);
// ret!=0 -> request has been processed
if (ret)
return ret;
@@ -50,11 +50,11 @@ int PluggableUSB_::getDescriptor(int8_t type)
return 0;
}
-bool PluggableUSB_::setup(USBSetup& setup, uint8_t interfaceNum)
+bool PluggableUSB_::setup(USBSetup& setup)
{
PUSBListNode* node;
for (node = rootNode; node; node = node->next) {
- if (node->setup(setup, interfaceNum)) {
+ if (node->setup(setup)) {
return true;
}
}
diff --git a/cores/arduino/PluggableUSB.h b/cores/arduino/PluggableUSB.h
index b7c52d6..d12c4c4 100644
--- a/cores/arduino/PluggableUSB.h
+++ b/cores/arduino/PluggableUSB.h
@@ -35,9 +35,9 @@ public:
inline uint8_t endpoint() const { return pluggedEndpoint; }
protected:
- virtual bool setup(USBSetup& setup, uint8_t interfaceNum) = 0;
+ virtual bool setup(USBSetup& setup) = 0;
virtual int getInterface(uint8_t* interfaceCount) = 0;
- virtual int getDescriptor(int8_t t) = 0;
+ virtual int getDescriptor(USBSetup& setup) = 0;
uint8_t pluggedInterface;
uint8_t pluggedEndpoint;
@@ -56,8 +56,8 @@ public:
PluggableUSB_();
bool plug(PUSBListNode *node);
int getInterface(uint8_t* interfaceCount);
- int getDescriptor(int8_t type);
- bool setup(USBSetup& setup, uint8_t interfaceNum);
+ int getDescriptor(USBSetup& setup);
+ bool setup(USBSetup& setup);
private:
uint8_t lastIf;
diff --git a/cores/arduino/USBCore.cpp b/cores/arduino/USBCore.cpp
index 5db9f52..f67bfea 100644
--- a/cores/arduino/USBCore.cpp
+++ b/cores/arduino/USBCore.cpp
@@ -362,7 +362,7 @@ bool ClassInterfaceRequest(USBSetup& setup)
return CDC_Setup(setup);
#ifdef PLUGGABLE_USB_ENABLED
- return PluggableUSB().setup(setup, i);
+ return PluggableUSB().setup(setup);
#endif
return false;
}
@@ -476,7 +476,7 @@ bool SendDescriptor(USBSetup& setup)
InitControl(setup.wLength);
#ifdef PLUGGABLE_USB_ENABLED
- ret = PluggableUSB().getDescriptor(t);
+ ret = PluggableUSB().getDescriptor(setup);
if (ret != 0) {
return (ret > 0 ? true : false);
}
diff --git a/libraries/HID/HID.cpp b/libraries/HID/HID.cpp
index b6b9cea..500eec9 100644
--- a/libraries/HID/HID.cpp
+++ b/libraries/HID/HID.cpp
@@ -38,22 +38,21 @@ int HID_::getInterface(uint8_t* interfaceCount)
return USB_SendControl(0, &hidInterface, sizeof(hidInterface));
}
-int HID_::getDescriptor(int8_t type)
+int HID_::getDescriptor(USBSetup& setup)
{
- if (HID_REPORT_DESCRIPTOR_TYPE == type) {
- int total = 0;
- HIDDescriptorListNode* node;
- for (node = rootNode; node; node = node->next) {
- int res = USB_SendControl(TRANSFER_PGM, node->data, node->length);
- if (res == -1)
- return -1;
- total += res;
- }
- return total;
+ if (interface() != setup.wIndex) {
+ return 0;
}
- // Ignored
- return 0;
+ int total = 0;
+ HIDDescriptorListNode* node;
+ for (node = rootNode; node; node = node->next) {
+ int res = USB_SendControl(TRANSFER_PGM, node->data, node->length);
+ if (res == -1)
+ return -1;
+ total += res;
+ }
+ return total;
}
void HID_::AppendDescriptor(HIDDescriptorListNode *node)
@@ -76,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 interfaceNum)
+bool HID_::setup(USBSetup& setup)
{
- if (interface() != interfaceNum) {
+ if (interface() != setup.wIndex) {
return false;
}
diff --git a/libraries/HID/HID.h b/libraries/HID/HID.h
index e54e45e..b282c20 100644
--- a/libraries/HID/HID.h
+++ b/libraries/HID/HID.h
@@ -80,8 +80,8 @@ public:
protected:
// Implementation of the PUSBListNode
int getInterface(uint8_t* interfaceCount);
- int getDescriptor(int8_t type);
- bool setup(USBSetup& setup, uint8_t interfaceNum);
+ int getDescriptor(USBSetup& setup);
+ bool setup(USBSetup& setup);
private:
uint8_t epType[1];