INNER CODE UNIT · C
dfu_upload
dmitrystu/sboot_stm32 · src/bootloader.c:110
static usbd_respond dfu_upload(usbd_device *dev, size_t blksize) {
switch (dfu_data.bState) {
case USB_DFU_STATE_DFU_IDLE:
case USB_DFU_STATE_DFU_UPLOADIDLE:
if (dfu_data.remained == 0) {
dev->status.data_count = 0;
return dfu_set_idle();
} else if (dfu_data.remained < DFU_BLOCKSZ) {
blksize = dfu_data.remained;
}
aes_encrypt(dev->status.data_ptr, dfu_data.dptr, blksize);
dev->status.data_count = blksize;
dfu_data.remained -= blksize;
dfu_data.dptr += blksize;
return usbd_ack;
default:
return dfu_err_badreq();
}