There are no standard commands to know if the endpoint is filled with data.
One thing that you can do is to use a manual DMA channel and continuously monitor the event CY_U3P_DMA_CB_PROD_EVENT and CY_U3P_DMA_CB_CONS_EVENT. Declare a variable and increment it whenever a PROD event occurs and decrement the same when a CONS event occurs. If the variable value is non zero then there is data buffer available to be read from the endpoint .
Thanks for your reply. Indeed very helpful.
As the SlaveFifo design for FX3 actually uses a manual DMA I firstly had to modify the
/* Enabling the callback for produce event. */
dmaCfg.notification = CY_U3P_DMA_CB_PROD_EVENT;
/* Enabling the callback for produce and consume events. */
dmaCfg.notification = CY_U3P_DMA_CB_PROD_EVENT | CY_U3P_DMA_CB_CONS_EVENT;
Then added at the end of the DMA callback function "CyFxSlFifoPtoUDmaCallback"
if (type == CY_U3P_DMA_CB_PROD_EVENT)
if (type == CY_U3P_DMA_CB_CONS_EVENT)