From 03486e52a2dde8ade759f36fea8b403b6524451c Mon Sep 17 00:00:00 2001 From: root Date: Sat, 6 Mar 2021 18:19:33 +0000 Subject: pull a new libopencm3 in the hope it fixes tim's usb problems --- boot/dfu.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'boot/dfu.c') diff --git a/boot/dfu.c b/boot/dfu.c index 4054520..138c6f8 100644 --- a/boot/dfu.c +++ b/boot/dfu.c @@ -80,7 +80,7 @@ static uint8_t usbdfu_getstatus (usbd_device *usbd_dev, uint32_t *bwPollTimeout) } } -static int usbdfu_getstatus_complete (usbd_device *usbd_dev, struct usb_setup_data *req) +static void usbdfu_getstatus_complete (usbd_device *usbd_dev, struct usb_setup_data *req) { unsigned i; (void)req; @@ -123,37 +123,37 @@ static int usbdfu_getstatus_complete (usbd_device *usbd_dev, struct usb_setup_da /* Jump straight to dfuDNLOAD-IDLE, skipping dfuDNLOAD-SYNC. */ usbdfu_state = STATE_DFU_DNLOAD_IDLE; - return 0; + return ; case STATE_DFU_MANIFEST: /* USB device must detach, we just reset... */ scb_reset_system(); - return 0; /* Will never return. */ + return ; /* Will never return. */ default: - return 0; + ; } } -int usbdfu_control_request (usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, - uint16_t *len, int (**complete) (usbd_device *usbd_dev, struct usb_setup_data *req)) +enum usbd_request_return_codes usbdfu_control_request (usbd_device *usbd_dev, struct usb_setup_data *req, uint8_t **buf, + uint16_t *len, usbd_control_complete_callback *complete) { if ((req->bmRequestType & 0x7F) != 0x21) - return 0; /* Only accept class request. */ + return USBD_REQ_NEXT_CALLBACK; /* Only accept class request. */ switch (req->bRequest) { case DFU_DNLOAD: if ((len == NULL) || (*len == 0)) { usbdfu_state = STATE_DFU_MANIFEST_SYNC; - return 1; + return USBD_REQ_HANDLED; } else { /* Copy download data for use on GET_STATUS. */ prog.blocknum = req->wValue; prog.len = *len; memcpy (prog.buf, *buf, *len); usbdfu_state = STATE_DFU_DNLOAD_SYNC; - return 1; + return USBD_REQ_HANDLED; } case DFU_CLRSTATUS: @@ -162,16 +162,16 @@ int usbdfu_control_request (usbd_device *usbd_dev, struct usb_setup_data *req, u if (usbdfu_state == STATE_DFU_ERROR) usbdfu_state = STATE_DFU_IDLE; - return 1; + return USBD_REQ_HANDLED; case DFU_ABORT: /* Abort returns to dfuIDLE state. */ usbdfu_state = STATE_DFU_IDLE; - return 1; + return USBD_REQ_HANDLED; case DFU_UPLOAD: /* Upload not supported for now. */ - return 0; + return USBD_REQ_NOTSUPP; case DFU_GETSTATUS: { uint32_t bwPollTimeout = 0; /* 24-bit integer in DFU class spec */ @@ -183,17 +183,17 @@ int usbdfu_control_request (usbd_device *usbd_dev, struct usb_setup_data *req, u (*buf)[5] = 0; /* iString not used here */ *len = 6; *complete = usbdfu_getstatus_complete; - return 1; + return USBD_REQ_HANDLED; } case DFU_GETSTATE: /* Return state with no state transision. */ *buf[0] = usbdfu_state; *len = 1; - return 1; + return USBD_REQ_HANDLED; } - return 0; + return USBD_REQ_NEXT_CALLBACK; } -- cgit v1.2.3