Estructura de mensajes WiFiCx

Los mensajes de comandos de WiFiCx se basan en los comandos anteriores del modelo WDI.

All Wi-Fi command messages must start with a WDI_MESSAGE_HEADER structure. El encabezado de comando va seguido de cero o más estructuras de valor de longitud de tipo (TLV).

Los identificadores de mensaje de comando definidos para los mensajes enviados desde el host al dispositivo Wi-Fi se documentan en indicaciones de estado de la tarea WiFiCx, OID de propiedad WiFiCx y WiFiCx.

TLVs

La estructura de los TLV se define en la tabla siguiente. Los datos de los TLV están en orden de bytes little-endian.

Field Type Description
Type UINT16 Tipo de la estructura TLV. Los tipos TLV no reconocidos deben omitirse sin desencadenar errores.
Longitud del búfer de valores UINT16 Tamaño del búfer valor en bytes.
Value BYTE[*] El búfer de carga, que puede contener una estructura, una lista de estructuras u otros TLV. Si hay más datos de los esperados en un TLV, se deben omitir los datos adicionales sin desencadenar errores.

Hay dos tipos de agrupaciones de TLV: listas de TLV de tamaño estático y grupos de varios TLV.

Listas de TLV de tamaño estático

Las listas de TLV de tamaño estático contienen varios miembros de tamaño estático. Son análogos a las matrices de estilo C estándar.

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]

Este uso se especifica en los temas de referencia de TLV con notación de matriz.

Multi-TLV groups

Cuando no se conoce el tamaño de un objeto determinado con antelación, se usan grupos de varios TLV. Este patrón de uso especifica que se esperan TLV de tamaño variable diferentes dentro de un búfer determinado. El número de entradas (N) no se conoce con antelación y se deduce por el número de TLV coincidentes en el búfer especificado.

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 Type
0 WDI_MESSAGE_HEADER Message header
sizeof(WDI_MESSAGE_HEADER) TLV₀ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₀ + L₀ + sizeof(encabezado TLV) TLV₁ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₁ + L₁ + sizeof(Encabezado TLV) TLV₂ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV TELEVISOR + L Televisor + sizeof(Encabezado TLV) TLV₃ (OTHER_TLV_TYPE) Otro tipo de TLV
TLV₃ + L₃ + sizeof(Encabezado TLV) TLV₄ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY

En el caso de las TLV que contienen otros TLV, los temas de referencia de TLV tienen una columna permitida de varias instancias de TLV . Si se comprueba esta columna, se permite que el TLV especificado aparezca varias veces. For an example of this, see WDI_TLV_CONNECT_PARAMETERS.