aboutsummaryrefslogtreecommitdiffstats
path: root/app/usb.c
diff options
context:
space:
mode:
authorroot <root@ka-ata-killa.ourano.james.local>2021-03-10 10:17:23 +0000
committerroot <root@ka-ata-killa.ourano.james.local>2021-03-10 10:17:23 +0000
commit9da4b55529e3c9cb34be47ee23391c1dfd4dec5a (patch)
tree4e36c7ec587c12d79ceffcd769f1993e35f9c383 /app/usb.c
parent49148e76706e5e24c2ba7f6ccc1d7ec4736ab2f3 (diff)
downloadserial_over_dp-9da4b55529e3c9cb34be47ee23391c1dfd4dec5a.tar.gz
serial_over_dp-9da4b55529e3c9cb34be47ee23391c1dfd4dec5a.tar.bz2
serial_over_dp-9da4b55529e3c9cb34be47ee23391c1dfd4dec5a.zip
update libopencm3 to fix bugs in usb implementation
Diffstat (limited to 'app/usb.c')
-rw-r--r--app/usb.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/app/usb.c b/app/usb.c
index 8023ea3..277b881 100644
--- a/app/usb.c
+++ b/app/usb.c
@@ -60,6 +60,7 @@ static const struct usb_config_descriptor config = {
.bMaxPower = 0x32,
.interface = ifaces,
};
+#define N_USB_STRINGS (sizeof(usb_strings)/sizeof(usb_strings[0]))
static const char *usb_strings[] = {
VENDOR_NAME, /*1*/
@@ -69,7 +70,6 @@ static const char *usb_strings[] = {
"DFU interface", /*5*/
"Debug interface", /*6*/
};
-#define N_USB_STRINGS (sizeof(usb_strings)/sizeof(usb_strings[0]))
void usb_hp_can_tx_isr (void)
{
@@ -81,16 +81,25 @@ void usb_lp_can_rx0_isr (void)
usbd_poll (usb_device);
}
-static int control_request (usbd_device *usbd_dev,
- struct usb_setup_data *req,
- uint8_t **buf,
- uint16_t *len,
- usbd_control_complete_callback *complete)
+static enum usbd_request_return_codes control_request (usbd_device *usbd_dev,
+ struct usb_setup_data *req,
+ uint8_t **buf,
+ uint16_t *len,
+ usbd_control_complete_callback *complete)
{
- if (dfu_control_request (usbd_dev, req, buf, len, complete))
- return 1;
+ enum usbd_request_return_codes ret;
+
+ ret = dfu_control_request (usbd_dev, req, buf, len, complete);
+
+ if (ret != USBD_REQ_NEXT_CALLBACK)
+ return ret;
+
+ ret = cdcacm_control_request (usbd_dev, req, buf, len, complete);
+
+ if (ret != USBD_REQ_NEXT_CALLBACK)
+ return ret;
- return cdcacm_control_request (usbd_dev, req, buf, len, complete);
+ return USBD_REQ_NOTSUPP;
}
static void set_config (usbd_device *usbd_dev, uint16_t wValue)
@@ -119,7 +128,7 @@ void usb_init (void)
gpio_set_mode (GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, GPIO13);
- usb_device = usbd_init (&stm32f103_usb_driver,
+ usb_device = usbd_init ( &st_usbfs_v1_usb_driver,
&dev,
&config,
usb_strings,