Hi,
We're working on a project that uses the TMS320C5515 and USBwith CSL v3.04.
We have a situation where one of our boards is experiencing an issue with USB.
It has to do with the function USB_isValidDataInFifoOut().
On one board in particular this function is returning false.
Below is a code snippet of the specific area:
// read the RX packet size // validate the RX packet first if (USB_isValidDataInFifoOut(&pContext->pEpStatus[CSL_USB_EP2])) { // get the EP2 handle tempEpH = USB_epNumToHandle(hUsbDev, CSL_USB_EP2); // this size signals to the USB task that a new packet came in usb_income_num_bytes_ep2 = USB_getDataCountReadFromFifo(tempEpH); } else { invalid_packet_error(); }
Looking at the documentation for this function it states:
"This function checks validity of the data in the output FIFO"
Aside from that, it doesn't specify criteria for what causes the function to return false.
I'm trying to find out the following:
1. What kinds of specific events can cause this function to return false?
2. Is the data from that packet transfer lost, and will not be resent?
3. What types of mechanisms can be used to gracefully recover from the function returning false (if possible), can it just be ignored?
I'm going to be working with the board some more today and will post my results.
Thanks,
Ben