[FreeRTOS Embedded IP Stack API]
xSocket_t FreeRTOS_select( xSocketSet_t xSocketSet, TickType_t xBlockTimeTicks );
Block on a socket set until a member of the set contains data available for reading.
Socket Sets allow an application task to block when reading from multiple sockets at the same time. Instead of blocking on an individual socket, a task instead blocks on the set.
To use a socket set:
Create a socket set by calling FreeRTOS_CreateSocketSet().
A socket set is equivalent to the Berkeley sockets fd_set type.
Add one or more sockets to the set using calls to FreeRTOS_FD_SET().
FreeRTOS_FD_SET() is equivalent to the Berkeley sockets FD_SET() macro.
Call FreeRTOS_Select() to test the sockets in the set to see if any contain data that is
waiting to be read.
- Read from the socket returned by FreeRTOS_select() (if any) using a call to FreeRTOS_recvfrom() as normal.
FreeRTOS_FD_CLR() removes a socket from a set.
The socket set being tested.
The maximum time, in ticks, that the calling task will
remain in the Blocked state (with other tasks executing)
to wait for a member of the socket set to have data queued
ready for reading using a call to FreeRTOS_recvfrom().
If xBlockTimeTicks expired before a socket in the socket set was ready to be read then NULL is returned. Otherwise a handle to a socket that contains received data is returned. A call to FreeRTOS_recvfrom() on the returned socket handle will always receive data even when the FreeRTOS_recvfrom() block time is zero.