下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
FreeRTOS-Plus-TCP 现具有统一的 IPv4 和 IPv6 功能,支持多接口。
为基于 FreeRTOS 的固件实现防砖化 MCU FOTA:
宣布停止支持 FreeRTOS 202012 LTS。
FreeRTOS 网站现已提供简体中文版本
新的 FreeRTOS Long Term Support 版本现已发布。

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.