Структура сообщений 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.