Struttura dei messaggi WiFiCx

I messaggi di comando WiFiCx sono basati sui comandi del modello WDI precedenti.

Tutti i messaggi di comando Wi-Fi devono iniziare con una struttura WDI_MESSAGE_HEADER . L'intestazione del comando è seguita da zero o più strutture TLV (type-length-value).

Gli ID del messaggio di comando definiti per i messaggi inviati dall'host al dispositivo Wi-Fi sono documentati in ID attività WiFiCx, ID proprietà WiFiCx e indicazioni sullo stato WiFiCx.

TLV

La struttura delle VTLV è definita nella tabella seguente. I dati nelle VTL sono in ordine di byte little-endian.

Campo Tipo Descrizione
Tipo UINT16 Tipo della struttura TLV. I tipi TLV non riconosciuti devono essere ignorati senza errori di attivazione.
Lunghezza del buffer valore UINT16 Dimensioni del buffer Value in byte.
Valore BYTE[*] Buffer del payload, che può contenere una struttura, un elenco di strutture o altre VTLV. Se sono presenti più dati del previsto in un TLV, i dati aggiuntivi devono essere ignorati senza attivare errori.

Esistono due tipi di raggruppamenti TLV: elenchi TLV con dimensioni statiche e gruppi multi-TLV.

Elenchi TLV con dimensioni statiche

Gli elenchi TLV con dimensioni statiche contengono diversi membri con dimensioni statiche. Sono analoghi alle matrici standard di tipo C.

In questo esempio , WDI_TLV_UNICAST_ALGORITHM_LIST viene definito come elenco di WDI_ALGO_PAIRS.

Tipo: WDI_TLV_UNICAST_ALGORITHM_LIST

Lunghezza: N * sizeof(WDI_ALGO_PAIRS)

Valore: WDI_ALGO_PAIRS[N]

Questo utilizzo viene specificato negli argomenti di riferimento TLV con notazione di matrice.

Gruppi multi-TLV

Quando le dimensioni di un determinato oggetto non sono note in anticipo, vengono usati gruppi multi-TLV. Questo modello di utilizzo specifica che all'interno di un determinato buffer sono previsti N TLV di dimensioni variabili diverse. Il numero di voci (N) non è noto in anticipo e viene dedotto dal numero di TLV corrispondenti nel buffer specificato.

In questo esempio il buffer padre è un WDI_MESSAGE_HEADER, che definisce la fine del buffer TLV. Si noti che WDI_TLV_BSS_ENTRY può essere interspersato tra altri tipi TLV diversi nel buffer padre.

Offset Campo Tipo
0 WDI_MESSAGE_HEADER Intestazione del messaggio
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 ESEGUIRE (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY
TLV JOLLY + L jolly + sizeof(intestazione TLV) TLV₃ (OTHER_TLV_TYPE) Altri tipi TLV
TLV₃ + L₃ + sizeof(TLV Header) TLV₄ (WDI_TLV_BSS_ENTRY) WDI_BSS_ENTRY

Per i VTL che contengono altri TLV, gli argomenti di riferimento TLV includono una colonna con più istanze TLV consentite . Se questa colonna è selezionata, la TLV specificata può essere visualizzata più volte. Per un esempio, vedere WDI_TLV_CONNECT_PARAMETERS.