summaryrefslogtreecommitdiff
path: root/firmware/usbstack/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/usbstack/drivers')
-rw-r--r--firmware/usbstack/drivers/device/usb_serial.c164
-rw-r--r--firmware/usbstack/drivers/device/usb_storage.c134
2 files changed, 149 insertions, 149 deletions
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;
}