diff options
author | root <root@ka-ata-killa.ourano.james.local> | 2021-03-10 10:17:23 +0000 |
---|---|---|
committer | root <root@ka-ata-killa.ourano.james.local> | 2021-03-10 10:17:23 +0000 |
commit | 9da4b55529e3c9cb34be47ee23391c1dfd4dec5a (patch) | |
tree | 4e36c7ec587c12d79ceffcd769f1993e35f9c383 /app/usb.c | |
parent | 49148e76706e5e24c2ba7f6ccc1d7ec4736ab2f3 (diff) | |
download | serial_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.c | 29 |
1 files changed, 19 insertions, 10 deletions
@@ -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, |