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.