WiFiCx 消息结构

WiFiCx 命令消息基于以前的 WDI 模型命令。

所有Wi-Fi命令消息都必须以 WDI_MESSAGE_HEADER 结构开头。 命令标头后跟零个或多个 type-length-value (TLV) 结构。

为从主机发送到Wi-Fi设备的消息定义的命令消息 ID 记录在 WiFiCx 任务 OIDWiFiCx 属性 OIDWiFiCx 状态指示中

TLV

下表中定义了 TLV 的结构。 TLV 中的数据按 little-endian 字节顺序排列。

字段 类型 说明
类型 UINT16 TLV 结构的类型。 必须跳过无法识别的 TLV 类型,而不会触发错误。
值缓冲区的长度 UINT16 值缓冲区的大小(以字节为单位)。
BYTE[*] 有效负载缓冲区,可能包含结构、结构列表或其他 TLV。 如果 TLV 中的数据超出预期,则应跳过其他数据而不会触发错误。

有两种类型的 TLV 分组:静态大小的 TLV 列表和多 TLV 组。

静态大小的 TLV 列表

静态大小的 TLV 列表包含多个静态大小的成员。 它们类似于标准 C 样式数组。

在此示例中, WDI_TLV_UNICAST_ALGORITHM_LIST 定义为WDI_ALGO_PAIRS列表。

类型:WDI_TLV_UNICAST_ALGORITHM_LIST

长度:N * sizeof (WDI_ALGO_PAIRS)

:WDI_ALGO_PAIRS[N]

此用法在 TLV 参考主题中使用数组表示法指定。

多 TLV 组

如果事先不知道给定对象的大小,则使用多 TLV 组。 此使用模式指定在给定缓冲区中应有 N 个不同的可变大小的 TLV。 (N) 的条目数事先未知,并且由给定缓冲区中匹配的 TLV 数推断。

在此示例中,父缓冲区是定义 TLV 缓冲区末尾的 WDI_MESSAGE_HEADER。 请注意, WDI_TLV_BSS_ENTRY 可能穿插在父缓冲区中的其他不同 TLV 类型之间。

Offset 字段 类型
0 WDI_MESSAGE_HEADER 消息标头
sizeof (WDI_MESSAGE_HEADER) TLV₀ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₀ + L₀ + sizeof (TLV 标头) TLV₁ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₁ + L₁ + sizeof (TLV 标头) TLVー (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLVー + Lー + sizeof (TLV 标头) TLV₃ (OTHER_TLV_TYPE) 其他一些 TLV 类型
TLV₃ + L₃ + sizeof (TLV 标头) TLV₄ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY

对于包含其他 TLV 的 TLV,TLV 参考主题具有 “允许多个 TLV 实例” 列。 如果选中此列,则允许指定 TLV 出现多次。 有关此示例,请参阅 WDI_TLV_CONNECT_PARAMETERS