@@ -166,8 +166,10 @@ static void io_task(void *params) {
|
|||||||
uint8_t const* addr = msc_disk[io_ops.lba] + io_ops.offset;
|
uint8_t const* addr = msc_disk[io_ops.lba] + io_ops.offset;
|
||||||
memcpy(io_ops.buffer, addr, io_ops.bufsize);
|
memcpy(io_ops.buffer, addr, io_ops.bufsize);
|
||||||
} else {
|
} else {
|
||||||
|
#ifndef CFG_EXAMPLE_MSC_READONLY
|
||||||
uint8_t* addr = msc_disk[io_ops.lba] + io_ops.offset;
|
uint8_t* addr = msc_disk[io_ops.lba] + io_ops.offset;
|
||||||
memcpy(addr, io_ops.buffer, io_ops.bufsize);
|
memcpy(addr, io_ops.buffer, io_ops.bufsize);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
tusb_time_delay_ms_api(CFG_EXAMPLE_MSC_IO_DELAY_MS);
|
tusb_time_delay_ms_api(CFG_EXAMPLE_MSC_IO_DELAY_MS);
|
||||||
|
@@ -267,14 +267,14 @@ void tud_msc_async_io_done(int32_t bytes_processed) {
|
|||||||
// Precheck to avoid queueing multiple RW done callback
|
// Precheck to avoid queueing multiple RW done callback
|
||||||
TU_VERIFY(_mscd_itf.next_op != MSC_NEXT_OP_NONE,);
|
TU_VERIFY(_mscd_itf.next_op != MSC_NEXT_OP_NONE,);
|
||||||
// Call usbd_edpt_xfer() in tud_task() to avoid racing condition
|
// Call usbd_edpt_xfer() in tud_task() to avoid racing condition
|
||||||
usbd_defer_func(tud_msc_async_io_done_cb, (void*) bytes_processed, false);
|
usbd_defer_func(tud_msc_async_io_done_cb, (void*) (intptr_t)bytes_processed, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tud_msc_async_io_done_cb(void* bytes_processed) {
|
static void tud_msc_async_io_done_cb(void* bytes_processed) {
|
||||||
TU_VERIFY(_mscd_itf.next_op != MSC_NEXT_OP_NONE,);
|
TU_VERIFY(_mscd_itf.next_op != MSC_NEXT_OP_NONE,);
|
||||||
uint8_t next_op = _mscd_itf.next_op;
|
uint8_t next_op = _mscd_itf.next_op;
|
||||||
_mscd_itf.next_op = MSC_NEXT_OP_NONE;
|
_mscd_itf.next_op = MSC_NEXT_OP_NONE;
|
||||||
int32_t nbytes = (int32_t)bytes_processed;
|
int32_t nbytes = (int32_t)(intptr_t)bytes_processed;
|
||||||
// READ10
|
// READ10
|
||||||
if (next_op == MSC_NEXT_OP_READ10) {
|
if (next_op == MSC_NEXT_OP_READ10) {
|
||||||
proc_read10_next(&_mscd_itf, nbytes);
|
proc_read10_next(&_mscd_itf, nbytes);
|
||||||
|
Reference in New Issue
Block a user