Skip to content

Commit 7302965

Browse files
committed
[PUSB] PUSBCallback struct has been merged into PUSBListNode
This slightly simplifies PluggableUSB API.
1 parent 2aaef8c commit 7302965

File tree

3 files changed

+18
-25
lines changed

3 files changed

+18
-25
lines changed

cores/arduino/PluggableUSB.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ int PUSB_GetInterface(u8* interfaceNum)
4040
int ret = 0;
4141
PUSBListNode* node = rootNode;
4242
for (u8 i=0; i<modules_count; i++) {
43-
ret = node->cb->getInterface(interfaceNum);
43+
ret = node->getInterface(interfaceNum);
4444
node = node->next;
4545
}
4646
return ret;
@@ -51,7 +51,7 @@ int PUSB_GetDescriptor(int8_t t)
5151
int ret = 0;
5252
PUSBListNode* node = rootNode;
5353
for (u8 i=0; i<modules_count && ret == 0; i++) {
54-
ret = node->cb->getDescriptor(t);
54+
ret = node->getDescriptor(t);
5555
node = node->next;
5656
}
5757
return ret;
@@ -62,7 +62,7 @@ bool PUSB_Setup(USBSetup& setup, u8 j)
6262
bool ret = false;
6363
PUSBListNode* node = rootNode;
6464
for (u8 i=0; i<modules_count && ret == false; i++) {
65-
ret = node->cb->setup(setup, j);
65+
ret = node->setup(setup, j);
6666
node = node->next;
6767
}
6868
return ret;
@@ -85,16 +85,16 @@ int8_t PUSB_AddFunction(PUSBListNode *node, u8* interface)
8585
}
8686

8787
*interface = lastIf;
88-
lastIf += node->cb->numInterfaces;
89-
for ( u8 i = 0; i< node->cb->numEndpoints; i++) {
90-
_initEndpoints[lastEp] = node->cb->endpointType[i];
88+
lastIf += node->numInterfaces;
89+
for ( u8 i = 0; i< node->numEndpoints; i++) {
90+
_initEndpoints[lastEp] = node->endpointType[i];
9191
lastEp++;
9292
}
9393
modules_count++;
94-
return lastEp - node->cb->numEndpoints;
94+
return lastEp - node->numEndpoints;
9595
// restart USB layer???
9696
}
9797

9898
#endif
9999

100-
#endif /* if defined(USBCON) */
100+
#endif /* if defined(USBCON) */

cores/arduino/PluggableUSB.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,18 @@
2525

2626
#if defined(USBCON)
2727

28-
typedef struct __attribute__((packed))
29-
{
28+
class PUSBListNode {
29+
public:
30+
PUSBListNode() { }
3031
bool (*setup)(USBSetup& setup, u8 i);
3132
int (*getInterface)(u8* interfaceNum);
3233
int (*getDescriptor)(int8_t t);
3334
int8_t numEndpoints;
3435
int8_t numInterfaces;
3536
uint8_t *endpointType;
36-
} PUSBCallbacks;
3737

38-
class PUSBListNode {
3938
public:
4039
PUSBListNode *next = NULL;
41-
PUSBCallbacks *cb;
42-
PUSBListNode(PUSBCallbacks *ncb) {cb = ncb;}
4340
};
4441

4542
int8_t PUSB_AddFunction(PUSBListNode *node, u8 *interface);

libraries/HID/HID.cpp

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -133,19 +133,15 @@ bool HID_Setup(USBSetup& setup, uint8_t i)
133133
HID_::HID_(void)
134134
{
135135
static uint8_t endpointType[1];
136-
137136
endpointType[0] = EP_TYPE_INTERRUPT_IN;
138137

139-
static PUSBCallbacks cb = {
140-
.setup = &HID_Setup,
141-
.getInterface = &HID_GetInterface,
142-
.getDescriptor = &HID_GetDescriptor,
143-
.numEndpoints = 1,
144-
.numInterfaces = 1,
145-
.endpointType = endpointType,
146-
};
147-
148-
static PUSBListNode node(&cb);
138+
static PUSBListNode node;
139+
node.setup = &HID_Setup,
140+
node.getInterface = &HID_GetInterface,
141+
node.getDescriptor = &HID_GetDescriptor,
142+
node.numEndpoints = 1,
143+
node.numInterfaces = 1,
144+
node.endpointType = endpointType,
149145

150146
HID_ENDPOINT_INT = PUSB_AddFunction(&node, &HID_INTERFACE);
151147
}

0 commit comments

Comments
 (0)