CTL_STATUS_t ctl_tcp_recv(CTL_SOCKET_t s, void *buf, size_t bufLen, CTL_TIMEOUT_t type, CTL_TIME_t timeout);
ctl_tcp_recv receives up to bufLen bytes into buf from socket soc.
Socket soc must first be in the connected state, CTL_TCP_SOCKET_STATE_CONNECTED, or ctl_tcp_recv will fail.
buf may be null, in which case up to bufLen bytes are discarded from the input stream.
The timeout value timeout can be zero to indicate a non-blocking call. If that is the case, this routine will retrieve as much data as it can (up to bufLen) from the socket and immediately return. In a blocking call, multiple passes across the task synchronization between the network task and the calling task may be required before the entire bufLen is received.
ctl_tcp_recv returns the count actually received for success or a standard CTL error code if the socket failed. A non-blocking call that received at least one byte but fewer than bufLen bytes is considered 'successful'.
ctl_tcp_recv must not be called from the network task with a non-zero timeout. In other words, do not use the blocking version of this function in a TCP server callback.