aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cores/arduino/PluggableUSB.h7
-rw-r--r--libraries/HID/HID.cpp19
-rw-r--r--libraries/HID/HID.h10
3 files changed, 18 insertions, 18 deletions
diff --git a/cores/arduino/PluggableUSB.h b/cores/arduino/PluggableUSB.h
index d4a1096..c08bc99 100644
--- a/cores/arduino/PluggableUSB.h
+++ b/cores/arduino/PluggableUSB.h
@@ -28,9 +28,6 @@
class PUSBListNode {
public:
PUSBListNode() { }
- bool (*setup)(USBSetup& setup, uint8_t i);
- int (*getInterface)(uint8_t* interfaceNum);
- int (*getDescriptor)(int8_t t);
int8_t numEndpoints;
int8_t numInterfaces;
uint8_t *endpointType;
@@ -39,6 +36,10 @@ public:
inline int8_t endpoint() const { return pluggedEndpoint; }
protected:
+ virtual bool setup(USBSetup& setup, uint8_t i) = 0;
+ virtual int getInterface(uint8_t* interfaceNum) = 0;
+ virtual int getDescriptor(int8_t t) = 0;
+
uint8_t pluggedInterface;
int8_t pluggedEndpoint;
diff --git a/libraries/HID/HID.cpp b/libraries/HID/HID.cpp
index 118d0c5..5685957 100644
--- a/libraries/HID/HID.cpp
+++ b/libraries/HID/HID.cpp
@@ -41,19 +41,19 @@ uint8_t HID_::epType[] = { EP_TYPE_INTERRUPT_IN };
uint8_t HID_::protocol = 1;
uint8_t HID_::idle = 1;
-int HID_::GetInterface(uint8_t* interfaceNum)
+int HID_::getInterface(uint8_t* interfaceNum)
{
interfaceNum[0] += 1; // uses 1
hidInterface =
{
- D_INTERFACE(HID.interface(), 1, 3, 0, 0),
+ D_INTERFACE(interface(), 1, 3, 0, 0),
D_HIDREPORT(sizeof_hidReportDescriptor),
- D_ENDPOINT(USB_ENDPOINT_IN(HID.endpoint()), USB_ENDPOINT_TYPE_INTERRUPT, USB_EP_SIZE, 0x01)
+ D_ENDPOINT(USB_ENDPOINT_IN(endpoint()), USB_ENDPOINT_TYPE_INTERRUPT, USB_EP_SIZE, 0x01)
};
return USB_SendControl(0, &hidInterface, sizeof(hidInterface));
}
-int HID_::GetDescriptor(int8_t t)
+int HID_::getDescriptor(int8_t t)
{
if (HID_REPORT_DESCRIPTOR_TYPE == t) {
HIDDescriptorListNode* current = rootNode;
@@ -85,13 +85,13 @@ void HID_::AppendDescriptor(HIDDescriptorListNode *node)
void HID_::SendReport(uint8_t id, const void* data, int len)
{
- USB_Send(HID.endpoint(), &id, 1);
- USB_Send(HID.endpoint() | TRANSFER_RELEASE,data,len);
+ USB_Send(endpoint(), &id, 1);
+ USB_Send(endpoint() | TRANSFER_RELEASE,data,len);
}
-bool HID_::Setup(USBSetup& setup, uint8_t i)
+bool HID_::setup(USBSetup& setup, uint8_t i)
{
- if (HID.interface() != i) {
+ if (interface() != i) {
return false;
} else {
uint8_t r = setup.bRequest;
@@ -130,9 +130,6 @@ bool HID_::Setup(USBSetup& setup, uint8_t i)
HID_::HID_(void)
{
- setup = HID_::Setup;
- getInterface = HID_::GetInterface;
- getDescriptor = HID_::GetDescriptor;
numEndpoints = 1;
numInterfaces = 1;
endpointType = epType;
diff --git a/libraries/HID/HID.h b/libraries/HID/HID.h
index cb1125e..1c8e2fc 100644
--- a/libraries/HID/HID.h
+++ b/libraries/HID/HID.h
@@ -80,11 +80,13 @@ public:
void SendReport(uint8_t id, const void* data, int len);
void AppendDescriptor(HIDDescriptorListNode* node);
-private:
- static int GetInterface(uint8_t* interfaceNum);
- static int GetDescriptor(int8_t t);
- static bool Setup(USBSetup& setup, uint8_t i);
+protected:
+ // Implementation of the PUSBListNode
+ int getInterface(uint8_t* interfaceNum);
+ int getDescriptor(int8_t t);
+ bool setup(USBSetup& setup, uint8_t i);
+private:
static HIDDescriptor hidInterface;
static HIDDescriptorListNode* rootNode;