diff options
| author | Ha Thach <[email protected]> | 2020-04-29 15:27:25 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-04-29 15:27:25 +0700 |
| commit | e9c71055acf35861ae9b13fe8e018ea16ea9246c (patch) | |
| tree | 3231ce339b7172b2a2b21e29a4ddaafca86b35db /src/device | |
| parent | d4511186a2ce541ac0ddc46a04e5313e8bcbfb3b (diff) | |
| parent | 449b337467d15a2000d2484fa73e63605881376a (diff) | |
Merge pull request #386 from hathach/follow-383
Follow 383
Diffstat (limited to 'src/device')
| -rw-r--r-- | src/device/usbd.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c index 62133bdb8..06e724cb3 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -995,12 +995,21 @@ bool usbd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t TU_LOG2(" Queue EP %02X with %u bytes ... ", ep_addr, total_bytes); + // Set busy first since the actual transfer can be complete before dcd_edpt_xfer() could return + // and usbd task can preempt and clear the busy _usbd_dev.ep_status[epnum][dir].busy = true; - TU_VERIFY_HDLR( dcd_edpt_xfer(rhport, ep_addr, buffer, total_bytes), _usbd_dev.ep_status[epnum][dir].busy = false); - TU_LOG2("OK\r\n"); - - return true; + if ( dcd_edpt_xfer(rhport, ep_addr, buffer, total_bytes) ) + { + TU_LOG2("OK\r\n"); + return true; + }else + { + _usbd_dev.ep_status[epnum][dir].busy = false; + TU_LOG2("failed\r\n"); + TU_BREAKPOINT(); + return false; + } } bool usbd_edpt_busy(uint8_t rhport, uint8_t ep_addr) |
