mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-15 12:29:26 +01:00
[PUSB] PUSBCallback struct has been merged into PUSBListNode
This slightly simplifies PluggableUSB API.
This commit is contained in:
parent
9fadb545da
commit
3fe6272feb
@ -40,7 +40,7 @@ int PUSB_GetInterface(u8* interfaceNum)
|
||||
int ret = 0;
|
||||
PUSBListNode* node = rootNode;
|
||||
for (u8 i=0; i<modules_count; i++) {
|
||||
ret = node->cb->getInterface(interfaceNum);
|
||||
ret = node->getInterface(interfaceNum);
|
||||
node = node->next;
|
||||
}
|
||||
return ret;
|
||||
@ -51,7 +51,7 @@ int PUSB_GetDescriptor(int8_t t)
|
||||
int ret = 0;
|
||||
PUSBListNode* node = rootNode;
|
||||
for (u8 i=0; i<modules_count && ret == 0; i++) {
|
||||
ret = node->cb->getDescriptor(t);
|
||||
ret = node->getDescriptor(t);
|
||||
node = node->next;
|
||||
}
|
||||
return ret;
|
||||
@ -62,7 +62,7 @@ bool PUSB_Setup(USBSetup& setup, u8 j)
|
||||
bool ret = false;
|
||||
PUSBListNode* node = rootNode;
|
||||
for (u8 i=0; i<modules_count && ret == false; i++) {
|
||||
ret = node->cb->setup(setup, j);
|
||||
ret = node->setup(setup, j);
|
||||
node = node->next;
|
||||
}
|
||||
return ret;
|
||||
@ -85,16 +85,16 @@ int8_t PUSB_AddFunction(PUSBListNode *node, u8* interface)
|
||||
}
|
||||
|
||||
*interface = lastIf;
|
||||
lastIf += node->cb->numInterfaces;
|
||||
for ( u8 i = 0; i< node->cb->numEndpoints; i++) {
|
||||
_initEndpoints[lastEp] = node->cb->endpointType[i];
|
||||
lastIf += node->numInterfaces;
|
||||
for ( u8 i = 0; i< node->numEndpoints; i++) {
|
||||
_initEndpoints[lastEp] = node->endpointType[i];
|
||||
lastEp++;
|
||||
}
|
||||
modules_count++;
|
||||
return lastEp - node->cb->numEndpoints;
|
||||
return lastEp - node->numEndpoints;
|
||||
// restart USB layer???
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* if defined(USBCON) */
|
||||
#endif /* if defined(USBCON) */
|
||||
|
@ -25,21 +25,18 @@
|
||||
|
||||
#if defined(USBCON)
|
||||
|
||||
typedef struct __attribute__((packed))
|
||||
{
|
||||
class PUSBListNode {
|
||||
public:
|
||||
PUSBListNode() { }
|
||||
bool (*setup)(USBSetup& setup, u8 i);
|
||||
int (*getInterface)(u8* interfaceNum);
|
||||
int (*getDescriptor)(int8_t t);
|
||||
int8_t numEndpoints;
|
||||
int8_t numInterfaces;
|
||||
uint8_t *endpointType;
|
||||
} PUSBCallbacks;
|
||||
|
||||
class PUSBListNode {
|
||||
public:
|
||||
PUSBListNode *next = NULL;
|
||||
PUSBCallbacks *cb;
|
||||
PUSBListNode(PUSBCallbacks *ncb) {cb = ncb;}
|
||||
};
|
||||
|
||||
int8_t PUSB_AddFunction(PUSBListNode *node, u8 *interface);
|
||||
|
@ -133,19 +133,15 @@ bool HID_Setup(USBSetup& setup, uint8_t i)
|
||||
HID_::HID_(void)
|
||||
{
|
||||
static uint8_t endpointType[1];
|
||||
|
||||
endpointType[0] = EP_TYPE_INTERRUPT_IN;
|
||||
|
||||
static PUSBCallbacks cb = {
|
||||
.setup = &HID_Setup,
|
||||
.getInterface = &HID_GetInterface,
|
||||
.getDescriptor = &HID_GetDescriptor,
|
||||
.numEndpoints = 1,
|
||||
.numInterfaces = 1,
|
||||
.endpointType = endpointType,
|
||||
};
|
||||
|
||||
static PUSBListNode node(&cb);
|
||||
static PUSBListNode node;
|
||||
node.setup = &HID_Setup,
|
||||
node.getInterface = &HID_GetInterface,
|
||||
node.getDescriptor = &HID_GetDescriptor,
|
||||
node.numEndpoints = 1,
|
||||
node.numInterfaces = 1,
|
||||
node.endpointType = endpointType,
|
||||
|
||||
HID_ENDPOINT_INT = PUSB_AddFunction(&node, &HID_INTERFACE);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user