Merge branch 'RP2040_enable_isochronous_buffer_size' of https://github.com/ndinsmore/tinyusb into ndinsmore-RP2040_enable_isochronous_buffer_size

This commit is contained in:
hathach 2021-02-22 12:21:52 +07:00
commit 44916bcacf
1 changed files with 17 additions and 2 deletions

View File

@ -154,7 +154,14 @@ void _hw_endpoint_xfer_start(struct hw_endpoint *ep, uint8_t *buffer, uint16_t t
ep->total_len = total_len;
ep->len = 0;
// FIXME: What if low speed
ep->transfer_size = total_len > 64 ? 64 : total_len;
if(ep->transfer_type == TUSB_XFER_ISOCHRONOUS)
{
ep->transfer_size = tu_min32(total_len, ep->wMaxPacketSize);
}
else
{
ep->transfer_size = tu_min32(total_len, 64);
}
ep->active = true;
ep->user_buf = buffer;
// Recalculate if this is the last buffer
@ -232,7 +239,15 @@ bool _hw_endpoint_xfer_continue(struct hw_endpoint *ep)
// Now we have synced our state with the hardware. Is there more data to transfer?
uint remaining_bytes = ep->total_len - ep->len;
ep->transfer_size = remaining_bytes > 64 ? 64 : remaining_bytes;
if(ep->transfer_type == TUSB_XFER_ISOCHRONOUS)
{
ep->transfer_size = tu_min32(remaining_bytes,ep->wMaxPacketSize);
}
else
{
ep->transfer_size = tu_min32(remaining_bytes, 64);
}
_hw_endpoint_update_last_buf(ep);
// Can happen because of programmer error so check for it