[PUSB] Moved static members inside HID_ class

This commit prepares for the next refactoring
This commit is contained in:
Cristian Maglie 2015-09-30 16:19:21 +02:00
parent 7fee0f0a75
commit ab19daef28
2 changed files with 54 additions and 41 deletions

View File

@ -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;

View File

@ -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 }