INNER CODE UNIT · C
dfu_getstatus
dmitrystu/sboot_stm32 · src/bootloader.c:166
static usbd_respond dfu_getstatus(void *buf) {
/* make answer */
struct usb_dfu_status *stat = buf;
stat->bStatus = dfu_data.bStatus;
stat->bState = dfu_data.bState;
stat->bPollTimeout = (DFU_POLL_TIMEOUT & 0xFF);
stat->wPollTimeout = (DFU_POLL_TIMEOUT >> 8);
stat->iString = NO_DESCRIPTOR;
switch (dfu_data.bState) {
case USB_DFU_STATE_DFU_IDLE:
case USB_DFU_STATE_DFU_DNLOADIDLE:
case USB_DFU_STATE_DFU_UPLOADIDLE:
case USB_DFU_STATE_DFU_ERROR:
return usbd_ack;
case USB_DFU_STATE_DFU_DNLOADSYNC:
dfu_data.bState = USB_DFU_STATE_DFU_DNLOADIDLE;
return usbd_ack;