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();
    }

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…