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.