diff options
| author | Dave Chapman <dave@dchapman.com> | 2007-08-27 22:07:36 +0000 |
|---|---|---|
| committer | Dave Chapman <dave@dchapman.com> | 2007-08-27 22:07:36 +0000 |
| commit | 03745f4ed33f9dadc16bfc0e26472203e33b43cf (patch) | |
| tree | c5ba1df703895f67f72eaca7776eaf65b191ce31 /firmware/usbstack | |
| parent | a6d52a8305ba355aeeef17a0648d40e6e4f8fa70 (diff) | |
| download | rockbox-03745f4ed33f9dadc16bfc0e26472203e33b43cf.zip rockbox-03745f4ed33f9dadc16bfc0e26472203e33b43cf.tar.gz rockbox-03745f4ed33f9dadc16bfc0e26472203e33b43cf.tar.bz2 rockbox-03745f4ed33f9dadc16bfc0e26472203e33b43cf.tar.xz | |
Cosmetic changes only - tab, whitespace and brace policing
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14484 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack')
| -rw-r--r-- | firmware/usbstack/config.h | 2 | ||||
| -rw-r--r-- | firmware/usbstack/core.h | 2 | ||||
| -rw-r--r-- | firmware/usbstack/core/config.c | 90 | ||||
| -rw-r--r-- | firmware/usbstack/core/core.c | 197 | ||||
| -rw-r--r-- | firmware/usbstack/core/epsetup.c | 98 | ||||
| -rw-r--r-- | firmware/usbstack/core/utils.c | 102 | ||||
| -rw-r--r-- | firmware/usbstack/device.h | 4 | ||||
| -rw-r--r-- | firmware/usbstack/drivers/device/usb_serial.c | 164 | ||||
| -rw-r--r-- | firmware/usbstack/drivers/device/usb_storage.c | 134 | ||||
| -rw-r--r-- | firmware/usbstack/host.h | 2 |
10 files changed, 398 insertions, 397 deletions
diff --git a/firmware/usbstack/config.h b/firmware/usbstack/config.h index 95b00da..e9cbe63 100644 --- a/firmware/usbstack/config.h +++ b/firmware/usbstack/config.h @@ -25,7 +25,7 @@ #define USBSTACK_CAPS 0 #endif -#define CONTROLLER_DEVICE (1 << 0) +#define CONTROLLER_DEVICE (1 << 0) #define CONTROLLER_HOST (1 << 1) #endif /*_USBSTACK_CONFIG_H_*/ diff --git a/firmware/usbstack/core.h b/firmware/usbstack/core.h index 7bda293..33805ac 100644 --- a/firmware/usbstack/core.h +++ b/firmware/usbstack/core.h @@ -38,7 +38,7 @@ struct usb_response { struct usb_ep { const char name[15]; uint8_t type; - uint32_t ep_num; /* which endpoint? */ + uint32_t ep_num; /* which endpoint? */ uint32_t pipe_num; /* which pipe? */ uint32_t maxpacket; bool claimed; diff --git a/firmware/usbstack/core/config.c b/firmware/usbstack/core/config.c index a05a508..277156d 100644 --- a/firmware/usbstack/core/config.c +++ b/firmware/usbstack/core/config.c @@ -23,58 +23,58 @@ #include <string.h> #include "usbstack/core.h" -static int usb_descriptor_fillbuf(void* buf, unsigned buflen, struct usb_descriptor_header** src) { - - uint8_t* dest = buf; +static int usb_descriptor_fillbuf(void* buf, unsigned buflen, struct usb_descriptor_header** src) +{ + uint8_t* dest = buf; - if (!src) { - return -EINVAL; - } + if (!src) { + return -EINVAL; + } - /* fill buffer from src[] until null descriptor ptr */ - for (; 0 != *src; src++) { - unsigned len = (*src)->bLength; + /* fill buffer from src[] until null descriptor ptr */ + for (; 0 != *src; src++) { + unsigned len = (*src)->bLength; - logf("len: %d", len); - - if (len > buflen) - return -EINVAL; - memcpy(dest, *src, len); - buflen -= len; - dest += len; - } - return dest - (uint8_t *)buf; + logf("len: %d", len); + + if (len > buflen) + return -EINVAL; + memcpy(dest, *src, len); + buflen -= len; + dest += len; + } + return dest - (uint8_t *)buf; } -int usb_stack_configdesc(const struct usb_config_descriptor* config, void* buf, unsigned length, struct usb_descriptor_header** desc) { - +int usb_stack_configdesc(const struct usb_config_descriptor* config, void* buf, unsigned length, struct usb_descriptor_header** desc) +{ struct usb_config_descriptor* cp = buf; - int len; + int len; + + if (length < USB_DT_CONFIG_SIZE || !desc) { + return -EINVAL; + } + + /* config descriptor first */ + *cp = *config; + + /* then interface/endpoint/class/vendor/... */ + len = usb_descriptor_fillbuf(USB_DT_CONFIG_SIZE + (uint8_t*)buf, length - USB_DT_CONFIG_SIZE, desc); + + if (len < 0) { + return len; + } - if (length < USB_DT_CONFIG_SIZE || !desc) { - return -EINVAL; - } - - /* config descriptor first */ - *cp = *config; + len += USB_DT_CONFIG_SIZE; + if (len > 0xffff) { + return -EINVAL; + } - /* then interface/endpoint/class/vendor/... */ - len = usb_descriptor_fillbuf(USB_DT_CONFIG_SIZE + (uint8_t*)buf, length - USB_DT_CONFIG_SIZE, desc); - - if (len < 0) { - return len; - } - - len += USB_DT_CONFIG_SIZE; - if (len > 0xffff) { - return -EINVAL; - } + /* patch up the config descriptor */ + cp->bLength = USB_DT_CONFIG_SIZE; + cp->bDescriptorType = USB_DT_CONFIG; + cp->wTotalLength = len; + cp->bmAttributes |= USB_CONFIG_ATT_ONE; - /* patch up the config descriptor */ - cp->bLength = USB_DT_CONFIG_SIZE; - cp->bDescriptorType = USB_DT_CONFIG; - cp->wTotalLength = len; - cp->bmAttributes |= USB_CONFIG_ATT_ONE; - - return len; + return len; } diff --git a/firmware/usbstack/core/core.c b/firmware/usbstack/core/core.c index 61b7f83..94131ac 100644 --- a/firmware/usbstack/core/core.c +++ b/firmware/usbstack/core/core.c @@ -39,26 +39,26 @@ static void bind_device_driver(struct usb_device_driver* driver); /** * Initialize usb stack. */ -void usb_stack_init(void) { +void usb_stack_init(void) +{ + int i; + logf("usb_stack_init"); - int i; - logf("usb_stack_init"); - /* init datastructures */ usbcore.controller[0] = NULL; usbcore.controller[1] = NULL; usbcore.active_controller = NULL; usbcore.device_driver = NULL; usbcore.running = false; - + memset(&device_driver_names, 0, USB_STACK_MAX_SETTINGS_NAME); - + /* init arrays */ for (i = 0; i < NUM_DRIVERS; i++) { - usbcore.device_drivers[i] = NULL; - usbcore.host_drivers[i] = NULL; + usbcore.device_drivers[i] = NULL; + usbcore.host_drivers[i] = NULL; } - + /* init controllers */ #if (USBSTACK_CAPS & CONTROLLER_DEVICE) usb_dcd_init(); @@ -77,31 +77,31 @@ void usb_stack_init(void) { * Start processing of usb stack. This function init * active usb controller. */ -void usb_stack_start(void) { - - /* are we allready running? */ - if (usbcore.running) { - logf("allready running!"); - return; - } - - if (usbcore.active_controller == NULL) { - logf("no active controller!"); - return; - } - +void usb_stack_start(void) +{ + /* are we allready running? */ + if (usbcore.running) { + logf("allready running!"); + return; + } + + if (usbcore.active_controller == NULL) { + logf("no active controller!"); + return; + } + /* forward to controller */ - logf("starting controller"); + logf("starting controller"); usbcore.active_controller->start(); usbcore.running = true; - + /* look if started controller is a device controller * and if it has a device driver bind to it */ logf("check for auto bind"); if (usbcore.active_controller->type == DEVICE) { if (usbcore.active_controller->device_driver == NULL && usbcore.device_driver != NULL) { /* bind driver */ - logf("binding..."); + logf("binding..."); bind_device_driver(usbcore.device_driver); } } @@ -111,15 +111,15 @@ void usb_stack_start(void) { * Stop processing of usb stack. This function shutsdown * active usb controller. */ -void usb_stack_stop(void) { +void usb_stack_stop(void) +{ + /* are we allready stopped? */ + if (usbcore.running == false) { + return; + } - /* are we allready stopped? */ - if (usbcore.running == false) { - return; - } - /* forward to controller */ - usbcore.active_controller->stop(); + usbcore.active_controller->stop(); usbcore.running = false; } @@ -127,8 +127,8 @@ void usb_stack_stop(void) { * Gets called by upper layers to indicate that there is * an interrupt waiting for the controller. */ -void usb_stack_irq(void) { - +void usb_stack_irq(void) +{ /* simply notify usb controller */ if (usbcore.active_controller != NULL && usbcore.active_controller->irq != NULL) { usbcore.active_controller->irq(); @@ -140,7 +140,8 @@ void usb_stack_irq(void) { * to call for maintanence. We need to check if a new device has connected, * find suitable drivers for new devices. */ -void usb_stack_work(void) { +void usb_stack_work(void) +{ /* TODO will be used with host device controllers * and needs to be called in a loop (thread) */ } @@ -153,8 +154,8 @@ void usb_stack_work(void) { * @param ctrl pointer to controller to register. * @return 0 on success else a defined error code. */ -int usb_controller_register(struct usb_controller* ctrl) { - +int usb_controller_register(struct usb_controller* ctrl) +{ if (ctrl == NULL) { return EINVAL; } @@ -220,21 +221,21 @@ int usb_controller_unregister(struct usb_controller* ctrl) { * * @param type of controller to activate. */ -void usb_controller_select(int type) { - +void usb_controller_select(int type) +{ struct usb_controller* new = NULL; /* check if a controller of the wanted type is already loaded */ if (usbcore.active_controller != NULL && (int)usbcore.active_controller->type == type) { - logf("controller already set"); - return; + logf("controller already set"); + return; } - logf("usb_controller_select"); - logf(" -> type: %d", type); + logf("usb_controller_select"); + logf(" -> type: %d", type); + + usbcore.mode = type; - usbcore.mode = type; - switch (type) { case DEVICE: new = usbcore.controller[0]; @@ -246,20 +247,20 @@ void usb_controller_select(int type) { /* if there is only one controller, stop here */ if (new == NULL) { - logf("no suitable cntrl found"); + logf("no suitable cntrl found"); return; } /* shutdown current used controller */ if (usbcore.active_controller != NULL) { - logf("shuting down old one"); + logf("shuting down old one"); usbcore.active_controller->shutdown(); } /* set and init new controller */ usbcore.active_controller = new; logf("init controller"); - usbcore.active_controller->init(); + usbcore.active_controller->init(); } int usb_stack_get_mode(void) { @@ -272,10 +273,10 @@ int usb_stack_get_mode(void) { * @param driver pointer to an usb_device_driver struct. * @return 0 on success, else a defined error code. */ -int usb_device_driver_register(struct usb_device_driver* driver) { - +int usb_device_driver_register(struct usb_device_driver* driver) +{ int i; - + if (driver == NULL) { return EINVAL; } @@ -284,109 +285,109 @@ int usb_device_driver_register(struct usb_device_driver* driver) { logf("usb_stack: register usb driver"); for (i = 0; i < NUM_DRIVERS; i++) { if (usbcore.device_drivers[i] == NULL) { - usbcore.device_drivers[i] = driver; - update_driver_names(device_driver_names); - return 0; + usbcore.device_drivers[i] = driver; + update_driver_names(device_driver_names); + return 0; } } update_driver_names(device_driver_names); - + return 0; } int usb_device_driver_bind(const char* name) { - int i; - struct usb_device_driver *tmp = NULL; - struct usb_device_driver *driver = NULL; - + int i; + struct usb_device_driver *tmp = NULL; + struct usb_device_driver *driver = NULL; + if (name == NULL) { return EINVAL; } - + /* look for driver */ logf("looking for driver %s", name); for (i = 0; i < NUM_DRIVERS; i++) { - tmp = usbcore.device_drivers[i]; - if (tmp != NULL && strcmp(name, tmp->name) == 0) { - driver = tmp; - } + tmp = usbcore.device_drivers[i]; + if (tmp != NULL && strcmp(name, tmp->name) == 0) { + driver = tmp; + } } if (driver == NULL) { - logf("no driver found"); - return ENODRIVERFOUND; + logf("no driver found"); + return ENODRIVERFOUND; } - - /* look if there is an usb controller loaded */ + + /* look if there is an usb controller loaded */ if (usbcore.active_controller == NULL) { - /* safe choosen driver and set it when controller starts */ - usbcore.device_driver = driver; - + /* safe choosen driver and set it when controller starts */ + usbcore.device_driver = driver; + } else { - + /* we need to have an active dcd controller */ if (usbcore.active_controller->type != DEVICE) { - logf("wrong type"); + logf("wrong type"); return EWRONGCONTROLLERTYPE; } - + /* bind driver to controller */ bind_device_driver(driver); } - + return 0; } void usb_device_driver_unbind(void) { - logf("usb_device_driver_unbind"); - if (usbcore.active_controller->device_driver != NULL) { - usbcore.active_controller->device_driver->unbind(); - usbcore.active_controller->device_driver = NULL; - } - - usbcore.device_driver = NULL; + logf("usb_device_driver_unbind"); + if (usbcore.active_controller->device_driver != NULL) { + usbcore.active_controller->device_driver->unbind(); + usbcore.active_controller->device_driver = NULL; + } + + usbcore.device_driver = NULL; } static void update_driver_names(unsigned char* result) { - int i; + int i; int pos = 0; - unsigned char terminator = ','; + unsigned char terminator = ','; struct usb_device_driver* dd = NULL; - + /* reset buffer, iterate through drivers and add to char array */ memset(result, 0, USB_STACK_MAX_SETTINGS_NAME); for (i = 0; i < NUM_DRIVERS; i++) { - int len; + int len; dd = usbcore.device_drivers[i]; - + if (dd != NULL) { - len = strlen(dd->name); - if (pos > 0) { - memcpy(result + pos, &terminator, 1); - pos++; - } - memcpy(result + pos, dd->name, len); - pos += len; + len = strlen(dd->name); + if (pos > 0) { + memcpy(result + pos, &terminator, 1); + pos++; + } + memcpy(result + pos, dd->name, len); + pos += len; } } } static void bind_device_driver(struct usb_device_driver* driver) { - + /* look if there is an old driver */ if (usbcore.active_controller->device_driver != NULL) { usbcore.active_controller->device_driver->unbind(); } - + /* bind driver to controller */ usbcore.active_controller->device_driver = driver; - + /* init dirver */ - driver->bind(usbcore.active_controller->controller_ops); + driver->bind(usbcore.active_controller->controller_ops); } diff --git a/firmware/usbstack/core/epsetup.c b/firmware/usbstack/core/epsetup.c index 6ae54fb..36c24e6 100644 --- a/firmware/usbstack/core/epsetup.c +++ b/firmware/usbstack/core/epsetup.c @@ -25,27 +25,27 @@ * * Naming Convention for Endpoint Names * - * - ep1, ep2, ... address is fixed, not direction or type - * - ep1in, ep2out, ... address and direction are fixed, not type - * - ep1-bulk, ep2-bulk, ... address and type are fixed, not direction - * - ep1in-bulk, ep2out-iso, ... all three are fixed - * - ep-* ... no functionality restrictions + * - ep1, ep2, ... address is fixed, not direction or type + * - ep1in, ep2out, ... address and direction are fixed, not type + * - ep1-bulk, ep2-bulk, ... address and type are fixed, not direction + * - ep1in-bulk, ep2out-iso, ... all three are fixed + * - ep-* ... no functionality restrictions * * Type suffixes are "-bulk", "-iso", or "-int". Numbers are decimal. * */ static int ep_matches(struct usb_ep* ep, struct usb_endpoint_descriptor* desc); -void usb_ep_autoconfig_reset(void) { - +void usb_ep_autoconfig_reset(void) +{ struct usb_ep* ep = NULL; if (usbcore.active_controller == NULL) { return; } - + logf("resetting endpoints"); list_for_each_entry(ep, &usbcore.active_controller->endpoints.list, list) { - logf("reset %s", ep->name); + logf("reset %s", ep->name); ep->claimed = false; } } @@ -55,48 +55,48 @@ void usb_ep_autoconfig_reset(void) { * @param desc usb descritpro to use for seraching. * @return NULL or a valid endpoint. */ -struct usb_ep* usb_ep_autoconfig(struct usb_endpoint_descriptor* desc) { - - struct usb_ep* ep = NULL; +struct usb_ep* usb_ep_autoconfig(struct usb_endpoint_descriptor* desc) +{ + struct usb_ep* ep = NULL; if (usbcore.active_controller == NULL) { - logf("active controller NULL"); + logf("active controller NULL"); return NULL; } - + list_for_each_entry(ep, &usbcore.active_controller->endpoints.list, list) { if (ep_matches (ep, desc)) { return ep; } } - + return NULL; } -static int ep_matches(struct usb_ep* ep, struct usb_endpoint_descriptor* desc) { - +static int ep_matches(struct usb_ep* ep, struct usb_endpoint_descriptor* desc) +{ uint8_t type; - const char* tmp; - uint16_t max; + const char* tmp; + uint16_t max; - /* endpoint already claimed? */ - if (ep->claimed) { - logf("!! claimed !!"); + /* endpoint already claimed? */ + if (ep->claimed) { + logf("!! claimed !!"); return 0; } /* only support ep0 for portable CONTROL traffic */ type = desc->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; if (type == USB_ENDPOINT_XFER_CONTROL) { - logf("type == control"); + logf("type == control"); return 0; } /* some other naming convention */ if (ep->name[0] != 'e') { - logf("wrong name"); + logf("wrong name"); return 0; } - + /* type-restriction: "-iso", "-bulk", or "-int". * direction-restriction: "in", "out". */ @@ -111,20 +111,20 @@ static int ep_matches(struct usb_ep* ep, struct usb_endpoint_descriptor* desc) { if (tmp[2] == 's') { // == "-iso" return 0; } - break; - case USB_ENDPOINT_XFER_BULK: - if (tmp[1] != 'b') { // != "-bulk" - return 0; - } - break; - case USB_ENDPOINT_XFER_ISOC: - if (tmp[2] != 's') { // != "-iso" - return 0; - } - } + break; + case USB_ENDPOINT_XFER_BULK: + if (tmp[1] != 'b') { // != "-bulk" + return 0; + } + break; + case USB_ENDPOINT_XFER_ISOC: + if (tmp[2] != 's') { // != "-iso" + return 0; + } + } } else { tmp = ep->name + strlen (ep->name); - } + } /* direction-restriction: "..in-..", "out-.." */ tmp--; @@ -132,7 +132,7 @@ static int ep_matches(struct usb_ep* ep, struct usb_endpoint_descriptor* desc) { if (desc->bEndpointAddress & USB_DIR_IN) { if ('n' != *tmp) { return 0; - } + } } else { if ('t' != *tmp) { return 0; @@ -147,40 +147,40 @@ static int ep_matches(struct usb_ep* ep, struct usb_endpoint_descriptor* desc) { * the usb spec fixes high speed bulk maxpacket at 512 bytes. */ max = 0x7ff & desc->wMaxPacketSize; - + switch (type) { case USB_ENDPOINT_XFER_INT: /* INT: limit 64 bytes full speed, 1024 high speed */ - if ((usbcore.active_controller->speed != USB_SPEED_HIGH) && (max > 64)) { + if ((usbcore.active_controller->speed != USB_SPEED_HIGH) && (max > 64)) { return 0; } - /* FALLTHROUGH */ + /* FALLTHROUGH */ - case USB_ENDPOINT_XFER_ISOC: + case USB_ENDPOINT_XFER_ISOC: if ((usbcore.active_controller->speed != USB_SPEED_HIGH) && (max > 1023)) { return 0; } - break; - } + break; + } - /* MATCH!! */ + /* MATCH!! */ - /* report address */ + /* report address */ desc->bEndpointAddress |= ep->ep_num; /* report (variable) full speed bulk maxpacket */ if (type == USB_ENDPOINT_XFER_BULK) { - int size = max; + int size = max; /* min() doesn't work on bitfields with gcc-3.5 */ if (size > 64) { size = 64; - } + } desc->wMaxPacketSize = size; } /* save desc in endpoint */ ep->desc = desc; - + return 1; } diff --git a/firmware/usbstack/core/utils.c b/firmware/usbstack/core/utils.c index 2fb2695..0ec4faa 100644 --- a/firmware/usbstack/core/utils.c +++ b/firmware/usbstack/core/utils.c @@ -20,98 +20,98 @@ #include <string.h> #include "usbstack/core.h" -void into_usb_ctrlrequest(struct usb_ctrlrequest* request) { +void into_usb_ctrlrequest(struct usb_ctrlrequest* request) +{ + char* type = ""; + char* req = ""; + char* extra = 0; - char* type = ""; - char* req = ""; - char* extra = 0; - - logf("-usb request-"); + logf("-usb request-"); /* check if packet is okay */ - if (request->bRequestType == 0 && + if (request->bRequestType == 0 && request->bRequest == 0 && request->wValue == 0 && request->wIndex == 0 && request->wLength == 0) { logf(" -> INVALID <-"); return; - } - + } + switch (request->bRequestType & USB_TYPE_MASK) { - case USB_TYPE_STANDARD: - type = "standard"; - + case USB_TYPE_STANDARD: + type = "standard"; + switch (request->bRequest) { case USB_REQ_GET_STATUS: - req = "get status"; + req = "get status"; break; case USB_REQ_CLEAR_FEATURE: - req = "clear feature"; + req = "clear feature"; break; case USB_REQ_SET_FEATURE: - req = "set feature"; + req = "set feature"; break; case USB_REQ_SET_ADDRESS: - req = "set address"; + req = "set address"; break; case USB_REQ_GET_DESCRIPTOR: - req = "get descriptor"; - - switch (request->wValue >> 8) { - case USB_DT_DEVICE: - extra = "get device descriptor"; - break; - case USB_DT_DEVICE_QUALIFIER: - extra = "get device qualifier"; - break; - case USB_DT_OTHER_SPEED_CONFIG: - extra = "get other-speed config descriptor"; - case USB_DT_CONFIG: - extra = "get configuration descriptor"; - break; - case USB_DT_STRING: - extra = "get string descriptor"; - break; - case USB_DT_DEBUG: - extra = "debug"; - break; - } - break; - + req = "get descriptor"; + + switch (request->wValue >> 8) { + case USB_DT_DEVICE: + extra = "get device descriptor"; + break; + case USB_DT_DEVICE_QUALIFIER: + extra = "get device qualifier"; + break; + case USB_DT_OTHER_SPEED_CONFIG: + extra = "get other-speed config descriptor"; + case USB_DT_CONFIG: + extra = "get configuration descriptor"; + break; + case USB_DT_STRING: + extra = "get string descriptor"; + break; + case USB_DT_DEBUG: + extra = "debug"; + break; + } + break; + break; case USB_REQ_SET_DESCRIPTOR: - req = "set descriptor"; + req = "set descriptor"; break; case USB_REQ_GET_CONFIGURATION: - req = "get configuration"; + req = "get configuration"; break; case USB_REQ_SET_CONFIGURATION: - req = "set configuration"; + req = "set configuration"; break; case USB_REQ_GET_INTERFACE: - req = "get interface"; + req = "get interface"; break; case USB_REQ_SET_INTERFACE: - req = "set interface"; + req = "set interface"; break; case USB_REQ_SYNCH_FRAME: - req = "sync frame"; + req = "sync frame"; break; default: - req = "unkown"; - break; + req = "unkown"; + break; } break; case USB_TYPE_CLASS: - type = "class"; + type = "class"; break; case USB_TYPE_VENDOR: - type = "vendor"; + type = "vendor"; break; } - + logf(" -b 0x%x", request->bRequestType); logf(" -b 0x%x", request->bRequest); logf(" -b 0x%x", request->wValue); @@ -120,6 +120,6 @@ void into_usb_ctrlrequest(struct usb_ctrlrequest* request) { logf(" -> t: %s", type); logf(" -> r: %s", req); if (extra != 0) { - logf(" -> e: %s", extra); + logf(" -> e: %s", extra); } } diff --git a/firmware/usbstack/device.h b/firmware/usbstack/device.h index 8993c9b..cfdaa1e 100644 --- a/firmware/usbstack/device.h +++ b/firmware/usbstack/device.h @@ -41,7 +41,7 @@ struct usb_config_descriptor; struct usb_descriptor_header; int usb_stack_configdesc(const struct usb_config_descriptor* config, - void* buf, unsigned length, - struct usb_descriptor_header** desc); + void* buf, unsigned length, + struct usb_descriptor_header** desc); #endif /*_USBSTACK_DEVICE_H_*/ diff --git a/firmware/usbstack/drivers/device/usb_serial.c b/firmware/usbstack/drivers/device/usb_serial.c index fe1e52f..e44a76a 100644 --- a/firmware/usbstack/drivers/device/usb_serial.c +++ b/firmware/usbstack/drivers/device/usb_serial.c @@ -128,69 +128,69 @@ static int set_config(int config); struct device { - struct usb_ep* in; - struct usb_ep* out; - uint32_t used_config; + struct usb_ep* in; + struct usb_ep* out; + uint32_t used_config; }; static struct device dev; /*-------------------------------------------------------------------------*/ -void usb_serial_driver_init(void) { - +void usb_serial_driver_init(void) +{ logf("usb serial: register"); usb_device_driver_register(&usb_serial_driver); } /*-------------------------------------------------------------------------*/ -void usb_serial_driver_bind(void* controler_ops) { - +void usb_serial_driver_bind(void* controler_ops) +{ logf("usb serial: bind"); ops = controler_ops; - + /* serach and asign endpoints */ usb_ep_autoconfig_reset(); dev.in = usb_ep_autoconfig(&serial_fullspeed_in_desc); - if (!dev.in) { - goto autoconf_fail; - } - dev.in->claimed = true; - logf("usb serial: in: %s", dev.in->name); - - dev.out = usb_ep_autoconfig(&serial_fullspeed_out_desc); - if (!dev.out) { - goto autoconf_fail; - } - dev.out->claimed = true; - logf("usb serial: out: %s", dev.out->name); - - /* update device decsriptor */ - serial_device_desc.bMaxPacketSize0 = ops->ep0->maxpacket; - - /* update qualifie descriptor */ - serial_qualifier_desc.bMaxPacketSize0 = ops->ep0->maxpacket; - - /* update debug descriptor */ - serial_debug_desc.bDebugInEndpoint = dev.in->ep_num; - serial_debug_desc.bDebugOutEndpoint = dev.out->ep_num; - - return; - + if (!dev.in) { + goto autoconf_fail; + } + dev.in->claimed = true; + logf("usb serial: in: %s", dev.in->name); + + dev.out = usb_ep_autoconfig(&serial_fullspeed_out_desc); + if (!dev.out) { + goto autoconf_fail; + } + dev.out->claimed = true; + logf("usb serial: out: %s", dev.out->name); + + /* update device decsriptor */ + serial_device_desc.bMaxPacketSize0 = ops->ep0->maxpacket; + + /* update qualifie descriptor */ + serial_qualifier_desc.bMaxPacketSize0 = ops->ep0->maxpacket; + + /* update debug descriptor */ + serial_debug_desc.bDebugInEndpoint = dev.in->ep_num; + serial_debug_desc.bDebugOutEndpoint = dev.out->ep_num; + + return; + autoconf_fail: - logf("failed to find endpoiunts"); + logf("failed to find endpoiunts"); } -int usb_serial_driver_request(struct usb_ctrlrequest* request) { - +int usb_serial_driver_request(struct usb_ctrlrequest* request) +{ int ret = -EOPNOTSUPP; logf("usb serial: request"); res.length = 0; res.buf = NULL; - + switch (request->bRequestType & USB_TYPE_MASK) { case USB_TYPE_STANDARD: @@ -205,26 +205,26 @@ int usb_serial_driver_request(struct usb_ctrlrequest* request) { break; case USB_DT_DEVICE_QUALIFIER: - logf("usb serial: sending qualifier dec"); + logf("usb serial: sending qualifier dec"); ret = MIN(sizeof(struct usb_qualifier_descriptor), request->wLength); - res.buf = &serial_qualifier_desc; - + res.buf = &serial_qualifier_desc; + case USB_DT_CONFIG: logf("usb serial: sending config desc"); - - ret = config_buf(buf, request->wValue >> 8, request->wValue & 0xff); - if (ret >= 0) { - logf("%d, vs %d", request->wLength, ret); - ret = MIN(request->wLength, (uint16_t)ret); - } + + ret = config_buf(buf, request->wValue >> 8, request->wValue & 0xff); + if (ret >= 0) { + logf("%d, vs %d", request->wLength, ret); + ret = MIN(request->wLength, (uint16_t)ret); + } res.buf = buf; break; - + case USB_DT_DEBUG: - logf("usb serial: sending debug desc"); - ret = MIN(sizeof(struct usb_debug_descriptor), request->wLength); - res.buf = &serial_debug_desc; - break; + logf("usb serial: sending debug desc"); + ret = MIN(sizeof(struct usb_debug_descriptor), request->wLength); + res.buf = &serial_debug_desc; + break; } break; @@ -232,9 +232,9 @@ int usb_serial_driver_request(struct usb_ctrlrequest* request) { logf("usb serial: set configuration %d", request->wValue); ret = set_config(request->wValue); break; - + case USB_REQ_GET_CONFIGURATION: - logf("usb serial: get configuration"); + logf("usb serial: get configuration"); ret = 1; res.buf = &dev.used_config; break; @@ -245,56 +245,56 @@ int usb_serial_driver_request(struct usb_ctrlrequest* request) { res.length = ret; ret = ops->send(NULL, &res); } - + return ret; } -void usb_serial_driver_speed(enum usb_device_speed speed) { - +void usb_serial_driver_speed(enum usb_device_speed speed) +{ switch (speed) { case USB_SPEED_LOW: case USB_SPEED_FULL: - logf("usb serial: using fullspeed"); - break; + logf("usb serial: using fullspeed"); + break; case USB_SPEED_HIGH: - logf("usb serial: using highspeed"); - break; + logf("usb serial: using highspeed"); + break; default: - logf("speed: hmm"); - break; + logf("speed: hmm"); + break; } } /*-------------------------------------------------------------------------*/ /* helper functions */ -static int config_buf(uint8_t *buf, uint8_t type, unsigned index) { - - int len; - - /* TODO check index*/ - - len = usb_stack_configdesc(&serial_bulk_config_desc, buf, BUFFER_SIZE, serial_bulk_fullspeed_function); - if (len < 0) { - return len; - } - ((struct usb_config_descriptor *)buf)->bDescriptorType = type; - return len; +static int config_buf(uint8_t *buf, uint8_t type, unsigned index) +{ + int len; + + /* TODO check index*/ + + len = usb_stack_configdesc(&serial_bulk_config_desc, buf, BUFFER_SIZE, serial_bulk_fullspeed_function); + if (len < 0) { + return len; + } + ((struct usb_config_descriptor *)buf)->bDescriptorType = type; + return len; } -static int set_config(int config) { +static int set_config(int config) +{ + /* TODO check config*/ - /* TODO check config*/ - /* enable endpoints */ logf("setup %s", dev.in->name); ops->enable(dev.in); logf("setup %s", dev.out->name); ops->enable(dev.out); - - /* store config */ - logf("using config %d", config); - dev.used_config = config; - + + /* store config */ + logf("using config %d", config); + dev.used_config = config; + return 0; } diff --git a/firmware/usbstack/drivers/device/usb_storage.c b/firmware/usbstack/drivers/device/usb_storage.c index 0cb1f10..355fc4d 100644 --- a/firmware/usbstack/drivers/device/usb_storage.c +++ b/firmware/usbstack/drivers/device/usb_storage.c @@ -128,8 +128,8 @@ static int set_config(int config); /*-------------------------------------------------------------------------*/ -void usb_storage_driver_init(void) { - +void usb_storage_driver_init(void) +{ logf("usb storage: register"); usb_device_driver_register(&usb_storage_driver); } @@ -137,41 +137,41 @@ void usb_storage_driver_init(void) { /*-------------------------------------------------------------------------*/ /* device driver ops */ -void usb_storage_driver_bind(void* controler_ops) { - +void usb_storage_driver_bind(void* controler_ops) +{ ops = controler_ops; - + /* serach and asign endpoints */ usb_ep_autoconfig_reset(); - + dev.in = usb_ep_autoconfig(&storage_bulk_in_desc); - if (!dev.in) { - goto autoconf_fail; - } - dev.in->claimed = true; - logf("usb storage: in: %s", dev.in->name); - - dev.out = usb_ep_autoconfig(&storage_bulk_out_desc); - if (!dev.out) { - goto autoconf_fail; - } - dev.out->claimed = true; - logf("usb storage: out: %s", dev.out->name); - - return; - + if (!dev.in) { + goto autoconf_fail; + } + dev.in->claimed = true; + logf("usb storage: in: %s", dev.in->name); + + dev.out = usb_ep_autoconfig(&storage_bulk_out_desc); + if (!dev.out) { + goto autoconf_fail; + } + dev.out->claimed = true; + logf("usb storage: out: %s", dev.out->name); + + return; + autoconf_fail: - logf("failed to find endpoints"); + logf("failed to find endpoints"); } -int usb_storage_driver_request(struct usb_ctrlrequest* request) { - +int usb_storage_driver_request(struct usb_ctrlrequest* request) +{ int ret = -EOPNOTSUPP; logf("usb storage: request"); res.length = 0; res.buf = NULL; - + switch (request->bRequestType & USB_TYPE_MASK) { case USB_TYPE_STANDARD: @@ -187,12 +187,12 @@ int usb_storage_driver_request(struct usb_ctrlrequest* request) { case USB_DT_CONFIG: logf("usb storage: sending config desc"); - - ret = config_buf(buf, request->wValue >> 8, request->wValue & 0xff); - if (ret >= 0) { - logf("%d, vs %d", request->wLength, ret); - ret = MIN(request->wLength, (uint16_t)ret); - } + + ret = config_buf(buf, request->wValue >> 8, request->wValue & 0xff); + if (ret >= 0) { + logf("%d, vs %d", request->wLength, ret); + ret = MIN(request->wLength, (uint16_t)ret); + } res.buf = buf; break; } @@ -202,68 +202,68 @@ int usb_storage_driver_request(struct usb_ctrlrequest* request) { logf("usb storage: set configuration %d", request->wValue); ret = set_config(request->wValue); break; - + case USB_REQ_SET_INTERFACE: logf("usb storage: set interface"); ret = 0; break; } - + case USB_TYPE_CLASS: - - switch (request->bRequest) { - case USB_BULK_RESET_REQUEST: - logf("usb storage: bulk reset"); - break; - - case USB_BULK_GET_MAX_LUN_REQUEST: - logf("usb storage: get max lun"); - /* we support no LUNs (Logical Unit Number) */ - buf[0] = 0; - ret = 1; - break; - } - break; + + switch (request->bRequest) { + case USB_BULK_RESET_REQUEST: + logf("usb storage: bulk reset"); + break; + + case USB_BULK_GET_MAX_LUN_REQUEST: + logf("usb storage: get max lun"); + /* we support no LUNs (Logical Unit Number) */ + buf[0] = 0; + ret = 1; + break; + } + break; } if (ret >= 0) { res.length = ret; ret = ops->send(NULL, &res); } - + return ret; } /*-------------------------------------------------------------------------*/ /* S/GET CONFIGURATION helpers */ -static int config_buf(uint8_t *buf, uint8_t type, unsigned index) { - - int len; - - /* only one configuration */ - if (index != 0) { - return -EINVAL; - } - - len = usb_stack_configdesc(&storage_config_desc, buf, BUFFER_SIZE, storage_fullspeed_function); - if (len < 0) { - return len; - } - ((struct usb_config_descriptor *)buf)->bDescriptorType = type; - return len; -} +static int config_buf(uint8_t *buf, uint8_t type, unsigned index) +{ + int len; -static int set_config(int config) { + /* only one configuration */ + if (index != 0) { + return -EINVAL; + } + len = usb_stack_configdesc(&storage_config_desc, buf, BUFFER_SIZE, storage_fullspeed_function); + if (len < 0) { + return len; + } + ((struct usb_config_descriptor *)buf)->bDescriptorType = type; + return len; +} + +static int set_config(int config) +{ /* enable endpoints */ logf("setup %s", dev.in->name); ops->enable(dev.in); logf("setup %s", dev.out->name); ops->enable(dev.out); - + /* setup buffers */ - + return 0; } diff --git a/firmware/usbstack/host.h b/firmware/usbstack/host.h index cb2f550..862584d 100644 --- a/firmware/usbstack/host.h +++ b/firmware/usbstack/host.h @@ -25,7 +25,7 @@ */ struct usb_host_driver { const char* name; - void* data; /* used to store controller specific ops struct */ + void* data; /* used to store controller specific ops struct */ }; #endif /*_USBSTACK_HOST_H_*/ |