mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-17 06:52:18 +01:00
[PUSB] Moved static members inside HID_ class
This commit prepares for the next refactoring
This commit is contained in:
parent
6ffd7e39ba
commit
2ac2a27173
@ -27,33 +27,33 @@ HID_ HID;
|
||||
//================================================================================
|
||||
// HID Interface
|
||||
|
||||
HIDDescriptor _hidInterface;
|
||||
HIDDescriptor HID_::hidInterface;
|
||||
|
||||
static HIDDescriptorListNode* rootNode = NULL;
|
||||
static uint16_t sizeof_hidReportDescriptor = 0;
|
||||
static uint8_t modules_count = 0;
|
||||
static uint8_t epType[] = { EP_TYPE_INTERRUPT_IN };
|
||||
HIDDescriptorListNode* HID_::rootNode = NULL;
|
||||
uint16_t HID_::sizeof_hidReportDescriptor = 0;
|
||||
uint8_t HID_::modules_count = 0;
|
||||
uint8_t HID_::epType[] = { EP_TYPE_INTERRUPT_IN };
|
||||
|
||||
//================================================================================
|
||||
//================================================================================
|
||||
// Driver
|
||||
|
||||
uint8_t _hid_protocol = 1;
|
||||
uint8_t _hid_idle = 1;
|
||||
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 =
|
||||
hidInterface =
|
||||
{
|
||||
D_INTERFACE(HID.interface(), 1, 3, 0, 0),
|
||||
D_HIDREPORT(sizeof_hidReportDescriptor),
|
||||
D_ENDPOINT(USB_ENDPOINT_IN(HID.endpoint()), USB_ENDPOINT_TYPE_INTERRUPT, USB_EP_SIZE, 0x01)
|
||||
};
|
||||
return USB_SendControl(0,&_hidInterface,sizeof(_hidInterface));
|
||||
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;
|
||||
@ -89,7 +89,7 @@ void HID_::SendReport(uint8_t id, const void* data, int len)
|
||||
USB_Send(HID.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) {
|
||||
return false;
|
||||
@ -100,12 +100,12 @@ bool HID_Setup(USBSetup& setup, uint8_t i)
|
||||
{
|
||||
if (HID_GET_REPORT == r)
|
||||
{
|
||||
//HID_GetReport();
|
||||
//HID_GetReport();
|
||||
return true;
|
||||
}
|
||||
if (HID_GET_PROTOCOL == r)
|
||||
{
|
||||
//Send8(_hid_protocol); // TODO
|
||||
//Send8(protocol); // TODO
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -114,13 +114,13 @@ bool HID_Setup(USBSetup& setup, uint8_t i)
|
||||
{
|
||||
if (HID_SET_PROTOCOL == r)
|
||||
{
|
||||
_hid_protocol = setup.wValueL;
|
||||
protocol = setup.wValueL;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (HID_SET_IDLE == r)
|
||||
{
|
||||
_hid_idle = setup.wValueL;
|
||||
idle = setup.wValueL;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -130,9 +130,9 @@ bool HID_Setup(USBSetup& setup, uint8_t i)
|
||||
|
||||
HID_::HID_(void)
|
||||
{
|
||||
setup = &HID_Setup;
|
||||
getInterface = &HID_GetInterface;
|
||||
getDescriptor = &HID_GetDescriptor;
|
||||
setup = HID_::Setup;
|
||||
getInterface = HID_::GetInterface;
|
||||
getDescriptor = HID_::GetDescriptor;
|
||||
numEndpoints = 1;
|
||||
numInterfaces = 1;
|
||||
endpointType = epType;
|
||||
|
@ -30,10 +30,8 @@
|
||||
|
||||
#define _USING_HID
|
||||
|
||||
//================================================================================
|
||||
//================================================================================
|
||||
// HID 'Driver'
|
||||
|
||||
// HID 'Driver'
|
||||
// ------------
|
||||
#define HID_GET_REPORT 0x01
|
||||
#define HID_GET_IDLE 0x02
|
||||
#define HID_GET_PROTOCOL 0x03
|
||||
@ -45,24 +43,6 @@
|
||||
#define HID_REPORT_DESCRIPTOR_TYPE 0x22
|
||||
#define HID_PHYSICAL_DESCRIPTOR_TYPE 0x23
|
||||
|
||||
class HIDDescriptorListNode {
|
||||
public:
|
||||
HIDDescriptorListNode *next = NULL;
|
||||
HIDDescriptorListNode(const void *d, const uint16_t l) : data(d), length(l) { }
|
||||
|
||||
const void* data;
|
||||
uint16_t length;
|
||||
};
|
||||
|
||||
class HID_ : public PUSBListNode
|
||||
{
|
||||
public:
|
||||
HID_(void);
|
||||
int begin(void);
|
||||
void SendReport(uint8_t id, const void* data, int len);
|
||||
void AppendDescriptor(HIDDescriptorListNode* node);
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t len; // 9
|
||||
@ -83,6 +63,39 @@ typedef struct
|
||||
EndpointDescriptor in;
|
||||
} HIDDescriptor;
|
||||
|
||||
class HIDDescriptorListNode {
|
||||
public:
|
||||
HIDDescriptorListNode *next = NULL;
|
||||
HIDDescriptorListNode(const void *d, const uint16_t l) : data(d), length(l) { }
|
||||
|
||||
const void* data;
|
||||
uint16_t length;
|
||||
};
|
||||
|
||||
class HID_ : public PUSBListNode
|
||||
{
|
||||
public:
|
||||
HID_(void);
|
||||
int begin(void);
|
||||
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);
|
||||
|
||||
static HIDDescriptor hidInterface;
|
||||
|
||||
static HIDDescriptorListNode* rootNode;
|
||||
static uint16_t sizeof_hidReportDescriptor;
|
||||
static uint8_t modules_count;
|
||||
static uint8_t epType[];
|
||||
|
||||
static uint8_t protocol;
|
||||
static uint8_t idle;
|
||||
};
|
||||
|
||||
#define D_HIDREPORT(_descriptorLength) \
|
||||
{ 9, 0x21, 0x1, 0x1, 0, 1, 0x22, _descriptorLength & 0xFF, _descriptorLength >> 8 }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user