refactor: use enum instead of #define: USBH_ENDPOINT_TYPE and USBH_SPEED
Signed-off-by: Amir Hammad <amir.hammad@hotmail.com>
This commit is contained in:
parent
27fe98f2d6
commit
e61ed66174
7 changed files with 33 additions and 30 deletions
|
|
@ -30,15 +30,18 @@
|
|||
|
||||
BEGIN_DECLS
|
||||
|
||||
#define USBH_EPTYP_CONTROL (0)
|
||||
#define USBH_EPTYP_ISOCHRONOUS (1)
|
||||
#define USBH_EPTYP_BULK (2)
|
||||
#define USBH_EPTYP_INTERRUPT (3)
|
||||
|
||||
#define USBH_SPEED_FULL (0)
|
||||
#define USBH_SPEED_LOW (1)
|
||||
#define USBH_SPEED_HIGH (2)
|
||||
enum USBH_ENDPOINT_TYPE {
|
||||
USBH_ENDPOINT_TYPE_CONTROL = 0,
|
||||
USBH_ENDPOINT_TYPE_ISOCHRONOUS = 1,
|
||||
USBH_ENDPOINT_TYPE_BULK = 2,
|
||||
USBH_ENDPOINT_TYPE_INTERRUPT = 3,
|
||||
};
|
||||
|
||||
enum USBH_SPEED {
|
||||
USBH_SPEED_FULL = 0,
|
||||
USBH_SPEED_LOW = 1,
|
||||
USBH_SPEED_HIGH = 2,
|
||||
};
|
||||
|
||||
enum USBH_PACKET_CALLBACK_STATUS {
|
||||
USBH_PACKET_CALLBACK_STATUS_OK = 0,
|
||||
|
|
@ -56,7 +59,7 @@ enum USBH_POLL_STATUS {
|
|||
struct _usbh_device {
|
||||
uint16_t packet_size_max0;
|
||||
int8_t address;
|
||||
uint8_t speed; // (USBH_SPEED_*)
|
||||
enum USBH_SPEED speed; // (USBH_SPEED_*)
|
||||
uint8_t state; // for enumeration purposes
|
||||
uint8_t toggle0;
|
||||
const usbh_dev_driver_t *drv;
|
||||
|
|
@ -80,7 +83,7 @@ struct _usbh_packet {
|
|||
uint8_t endpoint_type; // Endpoint type (see USBH_EPTYP_*)
|
||||
uint8_t endpoint_address; // Endpoint number 0..15
|
||||
uint16_t endpoint_size_max; // Max packet size for an endpoint
|
||||
uint8_t speed; // (USBH_SPEED_*)
|
||||
enum USBH_SPEED speed; // (USBH_SPEED_*)
|
||||
uint8_t *toggle;
|
||||
usbh_packet_callback_t callback;
|
||||
void *callback_arg;
|
||||
|
|
@ -92,9 +95,9 @@ struct _usbh_driver {
|
|||
void (*write)(void *drvdata, const usbh_packet_t *packet);
|
||||
void (*read)(void *drvdata, usbh_packet_t *packet);
|
||||
enum USBH_POLL_STATUS (*poll)(void *drvdata, uint32_t time_curr_us);
|
||||
uint8_t (*root_speed)(void *drvdata);
|
||||
|
||||
// Pointer to Low-level driver data
|
||||
enum USBH_SPEED (*root_speed)(void *drvdata);
|
||||
void *driver_data;
|
||||
};
|
||||
typedef struct _usbh_driver usbh_driver_t;
|
||||
|
|
|
|||
|
|
@ -246,7 +246,7 @@ static void read_midi_in(void *drvdata, const uint8_t nextstate)
|
|||
packet.datalen = midi->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_address = midi->endpoint_in_address;
|
||||
packet.endpoint_size_max = midi->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_type = USBH_EPTYP_BULK;
|
||||
packet.endpoint_type = USBH_ENDPOINT_TYPE_BULK;
|
||||
packet.speed = midi->usbh_device->speed;
|
||||
packet.callback = event;
|
||||
packet.callback_arg = midi->usbh_device;
|
||||
|
|
@ -367,7 +367,7 @@ void usbh_midi_write(uint8_t device_id, const void *data, uint32_t length, midi_
|
|||
midi->write_packet.address = dev->address;
|
||||
midi->write_packet.endpoint_address = midi->endpoint_out_address;
|
||||
midi->write_packet.endpoint_size_max = midi->endpoint_out_maxpacketsize;
|
||||
midi->write_packet.endpoint_type = USBH_EPTYP_BULK;
|
||||
midi->write_packet.endpoint_type = USBH_ENDPOINT_TYPE_BULK;
|
||||
midi->write_packet.speed = dev->speed;
|
||||
midi->write_packet.callback = write_callback;
|
||||
midi->write_packet.callback_arg = midi->usbh_device;
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ static void read_gp_xbox_in(gp_xbox_device_t *gp_xbox)
|
|||
packet.datalen = gp_xbox->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_address = gp_xbox->endpoint_in_address;
|
||||
packet.endpoint_size_max = gp_xbox->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_type = USBH_EPTYP_INTERRUPT;
|
||||
packet.endpoint_type = USBH_ENDPOINT_TYPE_INTERRUPT;
|
||||
packet.speed = gp_xbox->usbh_device->speed;
|
||||
packet.callback = event;
|
||||
packet.callback_arg = gp_xbox->usbh_device;
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ static void read_mouse_in(void *drvdata)
|
|||
packet.datalen = mouse->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_address = mouse->endpoint_in_address;
|
||||
packet.endpoint_size_max = mouse->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_type = USBH_EPTYP_INTERRUPT;
|
||||
packet.endpoint_type = USBH_ENDPOINT_TYPE_INTERRUPT;
|
||||
packet.speed = mouse->usbh_device->speed;
|
||||
packet.callback = event;
|
||||
packet.callback_arg = mouse->usbh_device;
|
||||
|
|
|
|||
|
|
@ -751,7 +751,7 @@ static void read_ep1(void *drvdata)
|
|||
packet.datalen = hub->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_address = hub->endpoint_in_address;
|
||||
packet.endpoint_size_max = hub->endpoint_in_maxpacketsize;
|
||||
packet.endpoint_type = USBH_EPTYP_INTERRUPT;
|
||||
packet.endpoint_type = USBH_ENDPOINT_TYPE_INTERRUPT;
|
||||
packet.speed = hub->device[0]->speed;
|
||||
packet.callback = event;
|
||||
packet.callback_arg = hub->device[0];
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ void device_xfer_control_write(void *data, uint16_t datalen, usbh_packet_callbac
|
|||
packet.address = dev->address;
|
||||
packet.endpoint_address = 0;
|
||||
packet.endpoint_size_max = dev->packet_size_max0;
|
||||
packet.endpoint_type = USBH_EPTYP_CONTROL;
|
||||
packet.endpoint_type = USBH_ENDPOINT_TYPE_CONTROL;
|
||||
packet.speed = dev->speed;
|
||||
packet.callback = callback;
|
||||
packet.callback_arg = dev;
|
||||
|
|
@ -226,7 +226,7 @@ void device_xfer_control_read(void *data, uint16_t datalen, usbh_packet_callback
|
|||
packet.address = dev->address;
|
||||
packet.endpoint_address = 0;
|
||||
packet.endpoint_size_max = dev->packet_size_max0;
|
||||
packet.endpoint_type = USBH_EPTYP_CONTROL;
|
||||
packet.endpoint_type = USBH_ENDPOINT_TYPE_CONTROL;
|
||||
packet.speed = dev->speed;
|
||||
packet.callback = callback;
|
||||
packet.callback_arg = dev;
|
||||
|
|
|
|||
|
|
@ -153,18 +153,18 @@ static void stm32f4_usbh_port_channel_setup(
|
|||
|
||||
// TODO: maybe to function
|
||||
switch (eptyp) {
|
||||
case USBH_EPTYP_CONTROL:
|
||||
case USBH_ENDPOINT_TYPE_CONTROL:
|
||||
eptyp = OTG_HCCHAR_EPTYP_CONTROL;
|
||||
break;
|
||||
case USBH_EPTYP_BULK:
|
||||
case USBH_ENDPOINT_TYPE_BULK:
|
||||
eptyp = OTG_HCCHAR_EPTYP_BULK;
|
||||
break;
|
||||
case USBH_EPTYP_INTERRUPT:
|
||||
case USBH_ENDPOINT_TYPE_INTERRUPT:
|
||||
// Use bulk transfer also for interrupt, since no difference is on protocol layer
|
||||
// Except different behaviour of the core
|
||||
eptyp = OTG_HCCHAR_EPTYP_BULK;
|
||||
break;
|
||||
case USBH_EPTYP_ISOCHRONOUS:
|
||||
case USBH_ENDPOINT_TYPE_ISOCHRONOUS:
|
||||
eptyp = OTG_HCCHAR_EPTYP_ISOCHRONOUS;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -260,16 +260,16 @@ static void write(void *drvdata, const usbh_packet_t *packet)
|
|||
channels[channel].packet = *packet;
|
||||
|
||||
uint32_t dpid;
|
||||
if (packet->endpoint_type == USBH_EPTYP_CONTROL) {
|
||||
if (packet->endpoint_type == USBH_ENDPOINT_TYPE_CONTROL) {
|
||||
dpid = OTG_HCTSIZ_DPID_MDATA;
|
||||
packet->toggle[0] = 0;
|
||||
} else if(packet->endpoint_type == USBH_EPTYP_INTERRUPT) {
|
||||
} else if(packet->endpoint_type == USBH_ENDPOINT_TYPE_INTERRUPT) {
|
||||
if (packet->toggle[0]) {
|
||||
dpid = OTG_HCTSIZ_DPID_DATA1;
|
||||
} else {
|
||||
dpid = OTG_HCTSIZ_DPID_DATA0;
|
||||
}
|
||||
} else if (packet->endpoint_type == USBH_EPTYP_BULK) {
|
||||
} else if (packet->endpoint_type == USBH_ENDPOINT_TYPE_BULK) {
|
||||
if (packet->toggle[0]) {
|
||||
dpid = OTG_HCTSIZ_DPID_DATA1;
|
||||
} else {
|
||||
|
|
@ -295,8 +295,8 @@ static void write(void *drvdata, const usbh_packet_t *packet)
|
|||
OTG_HCCHAR_EPDIR_OUT,
|
||||
packet->endpoint_size_max);
|
||||
|
||||
if (packet->endpoint_type == USBH_EPTYP_CONTROL ||
|
||||
packet->endpoint_type == USBH_EPTYP_BULK) {
|
||||
if (packet->endpoint_type == USBH_ENDPOINT_TYPE_CONTROL ||
|
||||
packet->endpoint_type == USBH_ENDPOINT_TYPE_BULK) {
|
||||
|
||||
volatile uint32_t *fifo = &REBASE_CH(OTG_FIFO, channel) + RX_FIFO_SIZE;
|
||||
const uint32_t * buf32 = packet->data;
|
||||
|
|
@ -517,7 +517,7 @@ static enum USBH_POLL_STATUS poll_run(usbh_lld_stm32f4_driver_data_t *dev)
|
|||
if (hcint & OTG_HCINT_ACK) {
|
||||
REBASE_CH(OTG_HCINT, channel) = OTG_HCINT_ACK;
|
||||
LOG_PRINTF("ACK");
|
||||
if (eptyp == USBH_EPTYP_CONTROL) {
|
||||
if (eptyp == USBH_ENDPOINT_TYPE_CONTROL) {
|
||||
channels[channel].packet.toggle[0] = 1;
|
||||
} else {
|
||||
channels[channel].packet.toggle[0] ^= 1;
|
||||
|
|
@ -597,7 +597,7 @@ static enum USBH_POLL_STATUS poll_run(usbh_lld_stm32f4_driver_data_t *dev)
|
|||
|
||||
if (hcint & OTG_HCINT_NAK) {
|
||||
REBASE_CH(OTG_HCINT, channel) = OTG_HCINT_NAK;
|
||||
if (eptyp == USBH_EPTYP_CONTROL) {
|
||||
if (eptyp == USBH_ENDPOINT_TYPE_CONTROL) {
|
||||
LOG_PRINTF("NAK");
|
||||
}
|
||||
|
||||
|
|
@ -972,7 +972,7 @@ static void channels_init(void *drvdata)
|
|||
* Get speed of connected device
|
||||
*
|
||||
*/
|
||||
static uint8_t root_speed(void *drvdata)
|
||||
static enum USBH_SPEED root_speed(void *drvdata)
|
||||
{
|
||||
usbh_lld_stm32f4_driver_data_t *dev = drvdata;
|
||||
(void)dev;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue