Partager via


Structure de message WiFiCx

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

Tous les messages de commande Wi-Fi doivent commencer par une structure WDI_MESSAGE_HEADER . L’en-tête de commande est suivi de zéro ou plusieurs structures type-longueur-valeur (TLV).

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

TTLVs

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

Champ 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 value UINT16 Taille de la mémoire tampon Valeur en octets.
Valeur BYTE[*] Mémoire tampon de charge utile, qui peut contenir une structure, une liste de structures ou d’autres TTL. S’il y a 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.

Dans cet exemple, WDI_TLV_UNICAST_ALGORITHM_LIST est défini comme une liste de WDI_ALGO_PAIRS.

Type : WDI_TLV_UNICAST_ALGORITHM_LIST

Longueur : N * sizeof(WDI_ALGO_PAIRS)

Valeur : WDI_ALGO_PAIRS[N]

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

Groupes multi-TLV

Lorsque la taille d’un objet donné n’est pas connue à l’avance, des groupes multi-TLV sont utilisés. Ce modèle d’utilisation spécifie que N TLV de taille variable différentes sont attendus 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 VTL correspondants dans la mémoire tampon donnée.

Dans cet exemple, la mémoire tampon parente est un WDI_MESSAGE_HEADER, qui définit la fin de la mémoire tampon TLV. Notez que WDI_TLV_BSS_ENTRY peuvent être entrelacés entre d’autres types TLV différents dans la mémoire tampon parente.

Offset Champ Type
0 WDI_MESSAGE_HEADER En-tête du message
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 +L+sizeof(TLV Header) TLV₃ (OTHER_TLV_TYPE) Un autre type TLV
TLV₃ + L₃ + sizeof(TLV Header) TLV₄ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY

Pour les TLV qui contiennent d’autres TLV, les rubriques de référence TLV ont une colonne Plusieurs instances TLV autorisées . Si cette colonne est cochée, la valeur TLV spécifiée est autorisée à apparaître plusieurs fois. Pour obtenir un exemple de ceci, consultez WDI_TLV_CONNECT_PARAMETERS.