Other Parts Discussed in Thread: EK-TM4C123GXL
I am implementing a USB composite device with two CDC sub-devices using the TivaWare 22.214.171.124 USBLib.
The data flows from the CDC device, through a USBBuffer, and then out through UART1, using hardware flow control on the UART controller. And vice-versa.
If the flow control line CTS is asserted, the USBBuffer gets full and data flow stops. If this situation lasts a short period of time, when the CTS line is de-asserted, data-flow resumes normally. However, due to limitations of my implementation, there are big periods of time when the UART can have its CTS line asserted, therefore stopping the data flow IN through USB and OUT through UART.
When this situation happens, what I have discovered is that the USB host keeps resending the same data, while incrementing the size of the packet it tries to send. When the CTS line is finally released, and the data flow can continue, the USB stack can't handle the enormous packet it receives and the data output just keeps repeating the first part of the packet.
I wanted to know what is the API to send a signal to the host that the data flow has stopped, a.k.a. the CTS is asserted, hopefully stopping the Host from retrying the same packet over and over.