aboutsummaryrefslogtreecommitdiff
path: root/cores
diff options
context:
space:
mode:
authorCristian Maglie <c.maglie@arduino.cc>2015-09-29 17:59:54 +0200
committerCristian Maglie <c.maglie@arduino.cc>2015-10-02 11:59:22 +0200
commit34a75d94163b385d20b37f5cffd2ffe241c6dd7d (patch)
tree7dca425305a447f3470213f9ddcb1a64408ad94f /cores
parent7811c2ceed8827cd79811f90bc82781326de957f (diff)
[PUSB] Selected interface and endpoint are now part of PUSBListNode
The method int8_t PluggableUSB::addFunction(PUSBListNode *, uint8_t *) has been changed to bool PluggableUSB::plug(PUSBListNode *node) since both EP and Interfaces are now saved directly into node
Diffstat (limited to 'cores')
-rw-r--r--cores/arduino/PluggableUSB.cpp11
-rw-r--r--cores/arduino/PluggableUSB.h11
2 files changed, 16 insertions, 6 deletions
diff --git a/cores/arduino/PluggableUSB.cpp b/cores/arduino/PluggableUSB.cpp
index 9dc334e..b27146b 100644
--- a/cores/arduino/PluggableUSB.cpp
+++ b/cores/arduino/PluggableUSB.cpp
@@ -68,10 +68,10 @@ bool PluggableUSB_::setup(USBSetup& setup, u8 j)
return ret;
}
-int8_t PluggableUSB_::addFunction(PUSBListNode *node, u8* interface)
+bool PluggableUSB_::plug(PUSBListNode *node)
{
if (modules_count >= MAX_MODULES) {
- return 0;
+ return false;
}
if (modules_count == 0) {
@@ -84,14 +84,15 @@ int8_t PluggableUSB_::addFunction(PUSBListNode *node, u8* interface)
current->next = node;
}
- *interface = lastIf;
+ node->pluggedInterface = lastIf;
+ node->pluggedEndpoint = lastEp;
lastIf += node->numInterfaces;
- for ( u8 i = 0; i< node->numEndpoints; i++) {
+ for (uint8_t i=0; i<node->numEndpoints; i++) {
_initEndpoints[lastEp] = node->endpointType[i];
lastEp++;
}
modules_count++;
- return lastEp - node->numEndpoints;
+ return true;
// restart USB layer???
}
diff --git a/cores/arduino/PluggableUSB.h b/cores/arduino/PluggableUSB.h
index dcd9e25..275a444 100644
--- a/cores/arduino/PluggableUSB.h
+++ b/cores/arduino/PluggableUSB.h
@@ -35,13 +35,22 @@ public:
int8_t numInterfaces;
uint8_t *endpointType;
+ inline uint8_t interface() const { return pluggedInterface; }
+ inline int8_t endpoint() const { return pluggedEndpoint; }
+
+protected:
+ uint8_t pluggedInterface;
+ int8_t pluggedEndpoint;
+
public:
PUSBListNode *next = NULL;
+
+ friend class PluggableUSB_;
};
class PluggableUSB_ {
public:
- static int8_t addFunction(PUSBListNode *node, u8 *interface);
+ static bool plug(PUSBListNode *node);
static int getInterface(u8* interfaceNum);
static int getDescriptor(int8_t t);
static bool setup(USBSetup& setup, u8 i);