Estructura de mensajes WiFiCx
Los mensajes de comandos de WiFiCx se basan en los comandos del modelo WDI anteriores.
Todos los mensajes de comando Wi-Fi deben comenzar con una estructura de WDI_MESSAGE_HEADER . El encabezado de comando va seguido de cero o más estructuras de tipo-length-value (TLV).
Los identificadores de mensaje de comando definidos para los mensajes enviados desde el host al dispositivo Wi-Fi se documentan en las indicaciones de estado wiFiCx Task OID,WiFiCx Property OIDs y WiFiCx.
TLV
La estructura de los TLV se define en la tabla siguiente. Los datos de los TLV están en orden de bytes little-endian.
Campo | Tipo | Descripción |
---|---|---|
Tipo | UINT16 | Tipo de la estructura TLV. Los tipos de TLV no reconocidos deben omitirse sin desencadenar errores. |
Longitud del búfer de valores | UINT16 | Tamaño del búfer de 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 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.
En este ejemplo, WDI_TLV_UNICAST_ALGORITHM_LIST se define como una lista de WDI_ALGO_PAIRS.
Tipo: WDI_TLV_UNICAST_ALGORITHM_LIST
Longitud: N * sizeof(WDI_ALGO_PAIRS)
Valor: WDI_ALGO_PAIRS[N]
Este uso se especifica en los temas de referencia de TLV con notación de matriz.
Grupos de varios TLV
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.
En este ejemplo, el búfer primario es un WDI_MESSAGE_HEADER, que define el final del búfer de TLV. Tenga en cuenta que WDI_TLV_BSS_ENTRY pueden intercalarse entre otros tipos de TLV diferentes en el búfer primario.
Offset | Campo | Tipo |
---|---|---|
0 | WDI_MESSAGE_HEADER | Encabezado del mensaje |
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) | TLVArchivo (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV Propios + L Propios + 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 los 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, el TLV especificado puede aparecer varias veces. Para obtener un ejemplo de esto, vea WDI_TLV_CONNECT_PARAMETERS.