summaryrefslogtreecommitdiffstats
path: root/app/usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/usb.c')
-rw-r--r--app/usb.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/app/usb.c b/app/usb.c
index fc9e6ea..d1fb625 100644
--- a/app/usb.c
+++ b/app/usb.c
@@ -77,16 +77,25 @@ void otg_fs_isr (void)
}
-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;
- return cdcacm_control_request (usbd_dev, req, buf, len, complete);
+ 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 USBD_REQ_NOTSUPP;
}
static void set_config (usbd_device *usbd_dev, uint16_t wValue)