Поделиться через


Структура сообщений WiFiCx

Сообщения команд WiFiCx основаны на предыдущих командах модели WDI.

Все сообщения команд Wi-Fi должны начинаться со структуры WDI_MESSAGE_HEADER. После заголовка команды следует от нуля и более структур типа-длины-значения (TLV).

Идентификаторы сообщений команды, определенные для сообщений, отправляемых с узла на устройство Wi-Fi, задокументированы в идентификаторы задач WiFiCx, свойства WiFiCxи индикаторы состояния WiFiCx.

TLV

Структура TLV определяется в следующей таблице. Данные в TLVs хранятся в малоуровневом порядке байтов.

Поле Тип Описание
Тип 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 в заданном буфере.

В этом примере родительский буфер является WDI_MESSAGE_HEADER, который определяет конец буфера TLV. Обратите внимание, что WDI_TLV_BSS_ENTRY могут перемежаться между другими различными типами TLV в родительском буфере.

Смещение Поле Тип
0 WDI_MESSAGE_HEADER Заголовок сообщения
sizeof(WDI_MESSAGE_HEADER) TLV₀ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₀ + L₀ + размер (заголовка TLV) TLV₁ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₁ + L₁ + размер(заголовка TLV) TLV₂ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₂ + L₂ + размер(TLV заголовка) TLV₃ (OTHER_TLV_TYPE) Другой тип TLV
TLV₃ + L₃ + размер(заголовка TLV) TLV₄ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY

Для TLV, содержащих другие TLV, в справочных разделах TLV есть столбец , допускающий несколько экземпляров TLV. Если в этом столбце установлена галочка, указанный TLV может отображаться несколько раз. Пример этого см. в WDI_TLV_CONNECT_PARAMETERS.