FreeRTOS_sockets.h
void FreeRTOS_FD_SET( Socket_t xSocket, SocketSet_t xSocketSet, BaseType_t xSelectBits );
向套接字集中添加套接字,并为添加的套接字
设置相关事件位。在任何时候,套接字都只能属于一个套接字集。
ipconfigSUPPORT_SELECT_FUNCTION 在
FreeRTOSIPConfig.h 中设置为 1,
FreeRTOS_FD_SET() 才可用。
套接字集允许应用程序 RTOS 任务同时阻塞
多个套接字。
要使用套接字集,请执行下列操作:
-
调用 FreeRTOS_CreateSocketSet() 创建套接字集。
套接字集相当于 Berkeley 套接字 fd_set 类型。
-
调用 FreeRTOS_FD_SET() 向套接字集添加一个或多个套接字。
FreeRTOS_FD_SET() 相当于 Berkeley 套接字 FD_SET() 宏。
-
调用 FreeRTOS_Select() 以测试
套接字集中的套接字,查看是否有任何套接字
存在挂起事件。
-
如果 FreeRTOS_select() 返回非零值,
则调用 FreeRTOS_FD_ISSET() 检查套接字集中的所有套接字,
以确定哪些事件处于挂起状态。
使用 xSelectBits 参数设置相关事件位,
该参数可以采用以下一个或多个值的
按位或组合:
eSELECT_READ
|
对于正在读取数据的套接字,
只要套接字包含未读数据,
eSELECT_READ 事件就会在套接字中处于挂起状态。
对于正在监听新连接的套接字,
每次接收到新连接时,
eSELECT_READ 事件就会挂起。
|
eSELECT_WRITE
|
只要套接字有写入空间,
eSELECT_WRITE 事件就会一直处于挂起状态。
如果 TCP 套接字主动连接到 pear,
则在建立连接后,
会立即触发 eSELECT_WRITE 事件。
当 eSELECT_WRITE 事件被挂起后,就应将其禁用,
或者调用方应对套接字写入足够数据,
以完全填充传输缓冲区——
否则,将不会清除挂起的 eSELECT_WRITE 事件。
|
eSELECT_EXCEPT
|
如果套接字断开连接,则 eSELECT_EXCEPT 事件会进入挂起状态
。
|
eSELECT_INTR
|
如果在调用过程中使用 FreeRTOS_SignalSocket()
或 FreeRTOS_SignalSocketFromISR() 向任何套接字发出信号,则返回 eSELECT_INTR。请注意,
只有在定义了 ipconfigSUPPORT_SIGNALS 的情况下才会触发。
|
FreeRTOS_FD_CLR() API 函数用于
清除事件位或从套接字集中删除套接字。
参数:
xSocket
|
正在添加到套接字集中的套接字。
|
xSocketSet
|
正在向其中添加套接字的套接字集。
|
xSelectBits
|
导致套接字取消阻止调用
FreeRTOS_select() 的事件。 有关其有效值,
。
|
返回:
void。
用法示例:
请参阅FreeRTOS_select()
文档页面提供的示例。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.