WiFiCx-Nachrichtenstruktur
WiFiCx-Befehlsmeldungen basieren auf den vorherigen WDI-Modellbefehlen.
Alle Wi-Fi Befehlsmeldungen müssen mit einer WDI_MESSAGE_HEADER-Struktur beginnen. Auf den Befehlsheader folgen null oder mehr TLV-Strukturen (Type-Length-Value).
Die Befehlsmeldungs-IDs, die für Nachrichten definiert sind, die vom Host an das Wi-Fi-Gerät gesendet werden, werden in WiFiCx-Task-OIDs, WiFiCx-Eigenschafts-OIDs und WiFiCx-status-Indikationen dokumentiert.
TLVs
Die Struktur der TLVs ist in der folgenden Tabelle definiert. Die Daten in TLVs befinden sich in Little-Endian-Bytereihenfolge.
Feld | Typ | BESCHREIBUNG |
---|---|---|
Typ | UINT16 | Der Typ der TLV-Struktur. Nicht erkannte TLV-Typen müssen übersprungen werden, ohne Fehler auszulösen. |
Länge des Wertpuffers | UINT16 | Die Größe des Wertpuffers in Bytes. |
Wert | BYTE[*] | Der Nutzlastpuffer, der eine Struktur, eine Liste von Strukturen oder andere TLVs enthalten kann. Wenn mehr Daten als erwartet in einem TLV vorhanden sind, sollten die zusätzlichen Daten übersprungen werden, ohne Fehler auszulösen. |
Es gibt zwei Arten von TLV-Gruppierungen: statisch große TLV-Listen und Multi-TLV-Gruppen.
TLV-Listen mit statischer Größe
Statisch große TLV-Listen enthalten mehrere elemente in statischer Größe. Sie sind analog zu Standardarrays im C-Stil.
In diesem Beispiel wird WDI_TLV_UNICAST_ALGORITHM_LIST als Liste von WDI_ALGO_PAIRS definiert.
Typ: WDI_TLV_UNICAST_ALGORITHM_LIST
Länge: N * sizeof(WDI_ALGO_PAIRS)
Wert: WDI_ALGO_PAIRS[N]
Diese Verwendung wird in den TLV-Referenzthemen mit Arraynotation angegeben.
Mehrere TLV-Gruppen
Wenn die Größe eines bestimmten Objekts nicht im Voraus bekannt ist, werden mehrere TLV-Gruppen verwendet. Dieses Verwendungsmuster gibt an, dass N unterschiedliche, variabel große TLVs in einem bestimmten Puffer erwartet werden. Die Anzahl der Einträge (N) ist nicht im Voraus bekannt und wird durch die Anzahl der übereinstimmenden TLVs im angegebenen Puffer abgeleitet.
In diesem Beispiel ist der übergeordnete Puffer ein WDI_MESSAGE_HEADER, der das Ende des TLV-Puffers definiert. Beachten Sie, dass WDI_TLV_BSS_ENTRY möglicherweise zwischen anderen verschiedenen TLV-Typen im übergeordneten Puffer eingestreut sein kann.
Offset | Feld | type |
---|---|---|
0 | WDI_MESSAGE_HEADER | Nachrichtenheader |
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) | Ein anderer TLV-Typ |
TLV₃ + L₃ + sizeof(TLV-Header) | TLV₄ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
Für TLVs, die andere TLVs enthalten, verfügen die TLV-Referenzthemen über eine Spalte Mit mehreren zulässigen TLV-Instanzen . Wenn diese Spalte aktiviert ist, darf der angegebene TLV mehrmals angezeigt werden. Ein Beispiel hierfür finden Sie unter WDI_TLV_CONNECT_PARAMETERS.