Structure de message WiFiCx

Les messages de commande WiFiCx sont basés sur les commandes de modèle WDI précédentes.

All Wi-Fi command messages must start with a WDI_MESSAGE_HEADER structure. L’en-tête de commande est suivi de zéro ou plusieurs structures TLV (type-length-value).

Les ID de message de commande définis pour les messages envoyés de l’hôte à l’appareil Wi-Fi sont documentés dans les OID de la tâche WiFiCx, les OID de propriété WiFiCx et les indications d’état WiFiCx.

TLVs

La structure des TLVs est définie dans le tableau suivant. Les données des TLVs sont dans l’ordre d’octets little-endian.

Field Type Description
Type UINT16 Type de la structure TLV. Les types TLV non reconnus doivent être ignorés sans déclencher d’erreurs.
Longueur de la mémoire tampon valeur UINT16 Taille de la mémoire tampon Valeur en octets.
Value BYTE[*] Mémoire tampon de charge utile, qui peut contenir une structure, une liste de structures ou d’autres TLV. S’il existe plus de données que prévu dans une TLV, les données supplémentaires doivent être ignorées sans déclencher d’erreurs.

Il existe deux types de regroupements TLV : les listes TLV de taille statique et les groupes multi-TLV.

Listes TLV de taille statique

Les listes TLV de taille statique contiennent plusieurs membres de taille statique. Ils sont analogues aux tableaux de style C standard.

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]

Cette utilisation est spécifiée dans les rubriques de référence TLV avec la notation de tableau.

Multi-TLV groups

Lorsque la taille d’un objet donné n’est pas connue à l’avance, les groupes multi-TLV sont utilisés. Ce modèle d’utilisation spécifie que N différentes TLV de taille variable sont attendues dans une mémoire tampon donnée. Le nombre d’entrées (N) n’est pas connu à l’avance et est déduit par le nombre de TLVs correspondants dans la mémoire tampon donnée.

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(en-tête TLV) TLV₁ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV₁ + L₁ + sizeof(en-tête TLV) TLV₂ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV² + L² + sizeof(en-tête TLV) TLV₃ (OTHER_TLV_TYPE) Autre type TLV
TLV₃ + L₃ + sizeof(en-tête TLV) TLV₄ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY

Pour les TLVs qui contiennent d’autres TLVs, les rubriques de référence TLV ont une colonne de référence sur plusieurs instances TLV autorisées . Si cette colonne est cochée, la valeur TLV spécifiée est autorisée à apparaître plusieurs fois. For an example of this, see WDI_TLV_CONNECT_PARAMETERS.