WiFiCx 訊息結構
WiFiCx 命令訊息是以先前的 WDI 模型命令為基礎。
所有Wi-Fi命令訊息都必須以 WDI_MESSAGE_HEADER 結構開頭。 命令標頭後面接著零個或多個類型長度值, (TLV) 結構。
針對從主機傳送至Wi-Fi裝置之訊息所定義的命令訊息識別碼記載于 WiFiCx 工作 OID、 WiFiCx 屬性 OID和 WiFiCx 狀態指示中。
TLV
下表定義了 TLV 的結構。 TLV 中的資料以小到小的位元組順序排列。
欄位 | 類型 | 描述 |
---|---|---|
類型 | UINT16 | TLV 結構的型別。 必須略過無法辨識的 TLV 類型,而不會觸發錯誤。 |
Value 緩衝區的長度 | UINT16 | Value 緩衝區的大小,以位元組為單位。 |
值 | BYTE[*] | 承載緩衝區,可能包含結構、結構清單或其他 TLV。 如果 TLV 中的資料超過預期,應該略過其他資料,而不會觸發錯誤。 |
TLV 群組有兩種類型:靜態大小的 TLV 清單和多 TLV 群組。
靜態大小的 TLV 清單
靜態大小 TLV 清單包含數個靜態大小的成員。 它們類似于標準 C 樣式陣列。
在此範例中, WDI_TLV_UNICAST_ALGORITHM_LIST 定義為WDI_ALGO_PAIRS的清單。
類型:WDI_TLV_UNICAST_ALGORITHM_LIST
長度:N * sizeof (WDI_ALGO_PAIRS)
值:WDI_ALGO_PAIRS[N]
此用法是在具有陣列標記法的 TLV 參考主題中指定。
多 TLV 群組
當預先不知道指定物件的大小時,會使用多 TLV 群組。 此使用模式會指定指定緩衝區內預期會有 N 個不同的可變大小TLV。 (N 個) 的專案數目事先不知道,而且是由指定緩衝區中相符的 TLV 數目推斷。
在此範例中,父緩衝區是定義 TLV 緩衝區結尾的 WDI_MESSAGE_HEADER。 請注意 ,WDI_TLV_BSS_ENTRY 可能會在父緩衝區中的其他不同 TLV 類型之間交錯。
Offset | 欄位 | 類型 |
---|---|---|
0 | WDI_MESSAGE_HEADER | 訊息標頭 |
sizeof (WDI_MESSAGE_HEADER) | TLV₀ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₀ + L₀ + sizeof (TLV 標頭) | TLV₁ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₁ + L₁ + sizeof (TLV 標頭) | TLVー (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV$ + LLv + sizeof (TLV 標頭) | TLV₃ (OTHER_TLV_TYPE) | 一些其他 TLV 類型 |
TLV₃ + L₃ + sizeof (TLV 標頭) | TLV₄ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
對於包含其他 TLV 的 TLV,TLV 參考主題具有 多個 TLV 實例允許的資料 行。 如果核取此資料行,則允許顯示指定的 TLV 多次。 如需此範例,請參閱 WDI_TLV_CONNECT_PARAMETERS。