mirror of
https://github.com/hathach/tinyusb.git
synced 2026-02-05 01:15:44 +00:00
Fix MTP transfer completion detection for exact-length packets
Change condition from `>` to `>=` to properly detect completion when xferred_len equals total_len. This fixes the bug where transfers of exactly bulk_mps length (e.g., 64 bytes for low speed) would never complete, such as GetHandles responses with 12 elements. Co-authored-by: hathach <249515+hathach@users.noreply.github.com>
This commit is contained in:
@ -422,10 +422,10 @@ bool mtpd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t
|
||||
cb_data.total_xferred_bytes = p_mtp->xferred_len;
|
||||
|
||||
bool is_complete = false;
|
||||
// complete if ZLP or short packet or overflow
|
||||
// complete if ZLP or short packet or total length reached
|
||||
if (xferred_bytes == 0 || // ZLP
|
||||
(xferred_bytes & (bulk_mps - 1)) || // short packet
|
||||
p_mtp->xferred_len > p_mtp->total_len) {
|
||||
p_mtp->xferred_len >= p_mtp->total_len) { // total length reached
|
||||
is_complete = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user