Flow Control Manager and CTS RTS on UART1



We have an OpenAT application that receives data over UART1 and forwards that data to a server over a socket using the wip API, wip_TCPClientCreate, wip_Read, wip_Write, etc…

We are currently having a problem with flow control in the system. Our DTE device is sending data to the OpenAT application faster then it can be forwarded over the GPRS socket link we have to the server.

We are using the FCM to switch UART1 in and out of data mode using the ADL_FCM_FLOW_V24_UART1 interface and that all seems to be working fine.

Our problem occurs after we have filled the TCP/IP buffer with outgoing data and have to wait for a WIP_CEV_WRITE notification before we can write more data to the socket. When we are in this state and the DTE sends us more data via the FCM data handler callback, we have no place to put the data. If the FCM data handler returns false in this case, the credit’s are not release and eventually the module hangs.

When hardware flow control is turned on for UART1 how should the CTS line behave in relation to the FCM when the FCM has the UART1 in data mode? Will it assert the CTS line when all the credits are used in the FCM?

I have read through the documentation on the FCM as well as the FCM application note and could not really see how this should work.

Any help would be appreciated.


I guess a similar discussion is going on here.