1
0
mirror of https://github.com/gdsports/USBHost_t36 synced 2024-11-15 21:55:01 -05:00

Rename USB drivers base class

This commit is contained in:
PaulStoffregen 2017-02-12 01:57:49 -08:00
parent 5d39664c89
commit a45a462931
2 changed files with 19 additions and 14 deletions

View File

@ -31,7 +31,7 @@
/************************************************/ /************************************************/
class USBHost; class USBHost;
class USBHostDriver; class USBDriver;
typedef struct Device_struct Device_t; typedef struct Device_struct Device_t;
typedef struct Pipe_struct Pipe_t; typedef struct Pipe_struct Pipe_t;
typedef struct Transfer_struct Transfer_t; typedef struct Transfer_struct Transfer_t;
@ -63,7 +63,7 @@ struct Device_struct {
Pipe_t *control_pipe; Pipe_t *control_pipe;
Device_t *next; Device_t *next;
setup_t setup; // TODO: move this to static in enumeration.cpp setup_t setup; // TODO: move this to static in enumeration.cpp
USBHostDriver *drivers; USBDriver *drivers;
uint8_t speed; // 0=12, 1=1.5, 2=480 Mbit/sec uint8_t speed; // 0=12, 1=1.5, 2=480 Mbit/sec
uint8_t address; uint8_t address;
uint8_t hub_address; uint8_t hub_address;
@ -142,7 +142,7 @@ protected:
static bool new_Transfer(Pipe_t *pipe, void *buffer, uint32_t len); static bool new_Transfer(Pipe_t *pipe, void *buffer, uint32_t len);
static Device_t * new_Device(uint32_t speed, uint32_t hub_addr, uint32_t hub_port); static Device_t * new_Device(uint32_t speed, uint32_t hub_addr, uint32_t hub_port);
static void enumeration(const Transfer_t *transfer); static void enumeration(const Transfer_t *transfer);
static void driver_ready_for_device(USBHostDriver *driver); static void driver_ready_for_device(USBDriver *driver);
private: private:
static void isr(); static void isr();
static void claim_drivers(Device_t *dev); static void claim_drivers(Device_t *dev);
@ -166,17 +166,17 @@ protected:
s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16);
s.word2 = wIndex | (wLength << 16); s.word2 = wIndex | (wLength << 16);
} }
}; };
/************************************************/ /************************************************/
/* USB Device Drivers */ /* USB Device Driver Common Base Class */
/************************************************/ /************************************************/
class USBHostDriver : public USBHost { // All USB device drivers inherit from this base class.
class USBDriver : public USBHost {
protected: protected:
USBHostDriver() : next(NULL), device(NULL) {} USBDriver() : next(NULL), device(NULL) {}
// Check if a driver wishes to claim a device or interface or group // Check if a driver wishes to claim a device or interface or group
// of interfaces within a device. When this function returns true, // of interfaces within a device. When this function returns true,
// the driver is considered bound or loaded for that device. When // the driver is considered bound or loaded for that device. When
@ -204,7 +204,7 @@ protected:
// (not bound to any device) drivers are linked from // (not bound to any device) drivers are linked from
// available_drivers is enumeration.cpp. When bound to a device, // available_drivers is enumeration.cpp. When bound to a device,
// drivers are linked from that Device_t drivers list. // drivers are linked from that Device_t drivers list.
USBHostDriver *next; USBDriver *next;
// When not bound to any device, this must be NULL. // When not bound to any device, this must be NULL.
Device_t *device; Device_t *device;
friend class USBHost; friend class USBHost;
@ -215,7 +215,12 @@ public:
// query string: manufacturer, product, serial number // query string: manufacturer, product, serial number
}; };
class USBHub : public USBHostDriver {
/************************************************/
/* USB Device Drivers */
/************************************************/
class USBHub : public USBDriver {
public: public:
USBHub(); USBHub();
protected: protected:

View File

@ -25,7 +25,7 @@
#include "USBHost.h" #include "USBHost.h"
static USBHostDriver *available_drivers = NULL; static USBDriver *available_drivers = NULL;
static uint8_t enumbuf[256] __attribute__ ((aligned(16))); static uint8_t enumbuf[256] __attribute__ ((aligned(16)));
@ -35,14 +35,14 @@ static void pipe_set_addr(Pipe_t *pipe, uint32_t addr);
void USBHost::driver_ready_for_device(USBHostDriver *driver) void USBHost::driver_ready_for_device(USBDriver *driver)
{ {
driver->next = NULL; driver->next = NULL;
if (available_drivers == NULL) { if (available_drivers == NULL) {
available_drivers = driver; available_drivers = driver;
} else { } else {
// append to end of list // append to end of list
USBHostDriver *last = available_drivers; USBDriver *last = available_drivers;
while (last->next) last = last->next; while (last->next) last = last->next;
last->next = driver; last->next = driver;
} }
@ -218,7 +218,7 @@ void USBHost::enumeration(const Transfer_t *transfer)
return; return;
case 15: // control transfers for other stuff? case 15: // control transfers for other stuff?
// TODO: handle other standard control: set/clear feature, etc // TODO: handle other standard control: set/clear feature, etc
for (USBHostDriver *d = dev->drivers; d != NULL; d = d->next) { for (USBDriver *d = dev->drivers; d != NULL; d = d->next) {
if (d->control(transfer)) { if (d->control(transfer)) {
// this driver processed the control transfer reply // this driver processed the control transfer reply
return; return;
@ -232,7 +232,7 @@ void USBHost::enumeration(const Transfer_t *transfer)
void USBHost::claim_drivers(Device_t *dev) void USBHost::claim_drivers(Device_t *dev)
{ {
USBHostDriver *driver, *prev=NULL; USBDriver *driver, *prev=NULL;
// first check if any driver wishes to claim the entire device // first check if any driver wishes to claim the entire device
for (driver=available_drivers; driver != NULL; driver = driver->next) { for (driver=available_drivers; driver != NULL; driver = driver->next) {