INNER CODE UNIT · C
dfu_control
dmitrystu/sboot_stm32 · src/bootloader.c:225
static usbd_respond dfu_control (usbd_device *dev, usbd_ctlreq *req, usbd_rqc_callback *callback) {
(void)callback;
if ((req->bmRequestType & (USB_REQ_TYPE | USB_REQ_RECIPIENT)) == (USB_REQ_STANDARD | USB_REQ_INTERFACE)) {
switch (req->bRequest) {
case USB_STD_SET_INTERFACE:
if (req->wIndex != 0) return usbd_fail;
switch (req->wValue) {
case 0: break;
#if defined(_EEPROM_ENABLED)
case 1: break;
#endif
default:
return usbd_fail;
}
dfu_data.interface = req->wValue;
return dfu_set_idle();
case USB_STD_GET_INTERFACE:
req->data[0] = dfu_data.interface;