下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

FreeRTOS_FD_ISSET()

[FreeRTOS-Plus-TCP API 引用]

FreeRTOS_sockets.h
BaseType_t FreeRTOS_FD_ISSET( Socket_t xSocket, SocketSet_t xSocketSet );
		

检查套接字集中的套接字是否有事件位集。 ipconfigSUPPORT_SELECT_FUNCTION 在 FreeRTOSIPConfig.h 中设置为 1, FreeRTOS_FD_ISSET() 才可用。


套接字集允许应用程序 RTOS 任务同时阻塞 多个套接字。

要使用套接字集,请执行下列操作:

  1. 调用 FreeRTOS_CreateSocketSet() 创建套接字集。 套接字集相当于 Berkeley 套接字 fd_set 类型。

  2. 调用 FreeRTOS_FD_SET() 向套接字集添加一个或多个套接字。 FreeRTOS_FD_SET() 相当于 Berkeley 套接字 FD_SET() 宏。

  3. 调用 FreeRTOS_Select() 以测试 套接字集中的套接字,查看是否有任何套接字 存在挂起事件。

  4. 如果 FreeRTOS_select() 返回非零值, 则调用 FreeRTOS_FD_ISSET() 检查套接字集中的所有套接字, 以确定哪些事件处于挂起状态。

相关事件位是以下一个或多个值的 按位或组合:

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   正在向其中添加套接字的套接字集。

返回:

该函数返回值为 eSELECT_READ (1)、 eSELECT_WRITE (2) 和 eSELECT_EXCEPT (4) 的位掩码。 仅返回 调用 FreeRTOS_FD_SET() 指定的相关位。

用法示例:

请参阅FreeRTOS_select() 文档页面提供的示例。

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.