Struktura zpráv WiFiCx
Zprávy příkazů WiFiCx jsou založené na předchozích příkazech modelu WDI.
Všechny Wi-Fi zprávy příkazů musí začínat strukturou WDI_MESSAGE_HEADER. Za záhlavím příkazu následuje nula nebo více struktur TLV (druh-délka-hodnota).
ID příkazových zpráv definovaná pro zprávy odeslané z hostitele do zařízení Wi-Fi jsou zdokumentovány v OID identifikátorech úloh WiFiCx , OID identifikátorech vlastností WiFiCx a indikátorech stavu WiFiCx .
TLV
Struktura TLV je definována v následující tabulce. Data v tlv jsou v malém bajtovém pořadí.
(No improvements necessary, the translation is already optimal.) | Typ | Popis |
---|---|---|
Typ | UINT16 | Typ struktury TLV. Nerozpoznané typy TLV musí být vynechány, aniž by došlo k chybám. |
Délka mezipaměti hodnoty | UINT16 | Velikost vyrovnávací paměti hodnoty v bajtech. |
Hodnota | BYTE[*] | Vyrovnávací paměť datové části, která může obsahovat strukturu, seznam struktur nebo jiné TLV. Pokud je v rámci TLV více dat, než se očekávalo, měla by se další data přeskočit bez vyvolání chyb. |
Existují dva typy seskupení TLV: staticky velké seznamy TLV a skupiny multi-TLV.
Staticky velikostně určené seznamy TLV
Staticky velké seznamy TLV obsahují několik staticky velkých členů. Jsou podobné standardním polím ve stylu jazyka C.
V tomto příkladu je WDI_TLV_UNICAST_ALGORITHM_LIST definován jako seznam WDI_ALGO_PAIRS.
Typ: WDI_TLV_UNICAST_ALGORITHM_LIST
délka: N * sizeof(WDI_ALGO_PAIRS)
Hodnota: WDI_ALGO_PAIRS[N]
Toto použití je určeno v referenčních tématech TLV s zápisem pole.
Multi-TLV skupiny
Pokud velikost daného objektu není předem známa, použijí se skupiny multi-TLV. Tento vzor použití určuje, že v rámci dané vyrovnávací paměti se očekává N různých TLV, které mají proměnlivé velikosti. Počet položek (N) není předem znám a je odvozen z počtu shodných TLV v daném bufferu.
V tomto příkladu je nadřazená vyrovnávací paměť typu WDI_MESSAGE_HEADER, která definuje konec vyrovnávací paměti TLV. Všimněte si, že WDI_TLV_BSS_ENTRY mohou být proloženy mezi jinými různými typy TLV v nadřazené vyrovnávací paměti.
Ofset | Pole | Typ |
---|---|---|
0 | WDI_ZPRÁVA_HLAVIČKA | Záhlaví zprávy |
sizeof(WDI_MESSAGE_HEADER) | TLV₀ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₀ + L₀ + velikost (TLV hlavička) | TLV₁ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₁ + L₁ + sizeof(Záhlaví TLV) | TLV₂ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₂ + L₂ + sizeof(TLV Header) | TLV₃ (OTHER_TLV_TYPE) | Jiný typ TLV |
TLV₃ + L₃ + velikost(TLV Header) | TLV₄ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
Referenční témata TLV, která obsahují jiné TLV, mají ve sloupci povoleny více instancí TLV. Pokud je tento sloupec zaškrtnutý, zadaný typ TLV se může zobrazit několikrát. Pro příklad toho, viz WDI_TLV_CONNECT_PARAMETERS.