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.