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


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

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

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

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

TLV

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

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

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

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