summaryrefslogtreecommitdiffstats
path: root/boot/dfu.c
diff options
context:
space:
mode:
Diffstat (limited to 'boot/dfu.c')
-rw-r--r--boot/dfu.c30
1 files changed, 15 insertions, 15 deletions
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;
}