Change FIFO use indication to ff == NULL to avoid future errors.

This way people don't need to pay attention for the buffer pointer
This commit is contained in:
Reinhard Panhuber
2021-02-14 09:25:34 +01:00
parent b634b5958b
commit 893f997dcb
6 changed files with 63 additions and 57 deletions

View File

@@ -646,6 +646,7 @@ bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, dir);
xfer->buffer = buffer;
xfer->ff = NULL;
xfer->total_len = total_bytes;
// EP0 can only handle one packet
@@ -908,7 +909,12 @@ static void handle_rxflvl_ints(uint8_t rhport, USB_OTG_OUTEndpointTypeDef * out_
xfer_ctl_t * xfer = XFER_CTL_BASE(epnum, TUSB_DIR_OUT);
// Read packet off RxFIFO
if (xfer->buffer)
if (xfer->ff)
{
// Ring buffer
tu_fifo_write_n(xfer->ff, (const void *) rx_fifo, bcnt);
}
else
{
// Linear buffer
read_fifo_packet(rhport, xfer->buffer, bcnt);
@@ -916,11 +922,6 @@ static void handle_rxflvl_ints(uint8_t rhport, USB_OTG_OUTEndpointTypeDef * out_
// Increment pointer to xfer data
xfer->buffer += bcnt;
}
else
{
// Ring buffer
tu_fifo_write_n(xfer->ff, (const void *) rx_fifo, bcnt);
}
// Truncate transfer length in case of short packet
if(bcnt < xfer->max_size) {
@@ -1028,18 +1029,18 @@ static void handle_epin_ints(uint8_t rhport, USB_OTG_DeviceTypeDef * dev, USB_OT
}
// Push packet to Tx-FIFO
if (xfer->buffer)
if (xfer->ff)
{
usb_fifo_t tx_fifo = FIFO_BASE(rhport, n);
tu_fifo_read_n(xfer->ff, (void *) tx_fifo, packet_size);
}
else
{
write_fifo_packet(rhport, n, xfer->buffer, packet_size);
// Increment pointer to xfer data
xfer->buffer += packet_size;
}
else
{
usb_fifo_t tx_fifo = FIFO_BASE(rhport, n);
tu_fifo_read_n(xfer->ff, (void *) tx_fifo, packet_size);
}
}
// Turn off TXFE if all bytes are written.