WiFiCx 消息结构

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

All Wi-Fi command messages must start with a WDI_MESSAGE_HEADER structure. 命令标头后跟零个或多个类型长度值 (TLV) 结构。

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

TLVs

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

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

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

静态大小的 TLV 列表

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

In this example, WDI_TLV_UNICAST_ALGORITHM_LIST is defined as a list of WDI_ALGO_PAIRS.

Type: WDI_TLV_UNICAST_ALGORITHM_LIST

Length: N * sizeof(WDI_ALGO_PAIRS)

Value: WDI_ALGO_PAIRS[N]

此用法在具有数组表示法的 TLV 引用主题中指定。

Multi-TLV groups

当给定对象的大小提前未知时,将使用多 TLV 组。 此使用模式指定给定缓冲区内需要 N 个不同的可变大小的TLV。 条目数(N)提前未知,并按给定缓冲区中匹配的TLV 数推断。

In this example, the parent buffer is a WDI_MESSAGE_HEADER, which defines the end of the TLV buffer. Note that WDI_TLV_BSS_ENTRY may be interspersed between other different TLV types in the parent buffer.

Offset Field 类型
0 WDI_MESSAGE_HEADER 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
T + LLV + sizeof(TLV 标头) TLV₃ (OTHER_TLV_TYPE) 其他一些 TLV 类型
TLV₃ + L₃ + sizeof(TLV 标头) TLV₄ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY

对于包含其他 TLV 的 TLV,TLV 参考主题具有允许 的多个 TLV 实例 列。 如果选中此列,则允许指定的 TLV 多次显示。 For an example of this, see WDI_TLV_CONNECT_PARAMETERS.