Struktur pesan WiFiCx
Pesan perintah WiFiCx didasarkan pada perintah model WDI sebelumnya.
Semua pesan perintah Wi-Fi harus dimulai dengan struktur WDI_MESSAGE_HEADER . Header perintah diikuti oleh nol atau lebih struktur type-length-value (TLV).
ID pesan perintah yang ditentukan untuk pesan yang dikirim dari host ke perangkat Wi-Fi didokumenkan dalam OID Tugas WiFiCx, OID Properti WiFiCx, dan indikasi status WiFiCx.
TV
Struktur TLV didefinisikan dalam tabel berikut. Data dalam TLV berada dalam urutan byte little-endian.
Bidang | Jenis | Deskripsi |
---|---|---|
Jenis | UINT16 | Jenis struktur TLV. Jenis TLV yang tidak dikenal harus dilewati tanpa memicu kesalahan. |
Panjang buffer Nilai | UINT16 | Ukuran buffer Nilai dalam byte. |
Nilai | BYTE[*] | Buffer payload, yang mungkin berisi struktur, daftar struktur, atau TLV lainnya. Jika ada lebih banyak data dari yang diharapkan dalam TLV, data tambahan harus dilewati tanpa memicu kesalahan. |
Ada dua jenis pengelompokan TLV: daftar TLV berukuran statis, dan grup multi-TLV.
Daftar TLV berukuran statis
Daftar TLV berukuran statis berisi beberapa anggota berukuran statis. Mereka dianalogikan dengan array gaya C standar.
Dalam contoh ini, WDI_TLV_UNICAST_ALGORITHM_LIST didefinisikan sebagai daftar WDI_ALGO_PAIRS.
Jenis: WDI_TLV_UNICAST_ALGORITHM_LIST
Panjang: N * sizeof(WDI_ALGO_PAIRS)
Nilai: WDI_ALGO_PAIRS[N]
Penggunaan ini ditentukan dalam topik referensi TLV dengan notasi array.
Grup Multi-TLV
Ketika ukuran objek tertentu tidak diketahui sebelumnya, grup multi-TLV digunakan. Pola penggunaan ini menentukan bahwa TLV berukuran varian N yang berbeda diharapkan dalam buffer tertentu. Jumlah entri (N) tidak diketahui sebelumnya, dan disimpulkan oleh jumlah TLV yang cocok dalam buffer yang diberikan.
Dalam contoh ini, buffer induk adalah WDI_MESSAGE_HEADER, yang menentukan akhir buffer TLV. Perhatikan bahwa WDI_TLV_BSS_ENTRY mungkin diselingi antara jenis TLV lain yang berbeda di buffer induk.
Offset | Bidang | Jenis |
---|---|---|
0 | WDI_MESSAGE_HEADER | Header pesan |
sizeof(WDI_MESSAGE_HEADER) | TLV₀ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₀ + L₀ + sizeof(Header TLV) | TLV₁ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₁ + L₁ + sizeof(Header TLV) | TLV₂ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
TLV₂ + L₂ + sizeof(Header TLV) | TLV₃ (OTHER_TLV_TYPE) | Beberapa jenis TLV lainnya |
TLV₃ + L₃ + sizeof(Header TLV) | TLV₄ (WDI_TLV_BSS_ENTRY) | WDI_BSS_ENTRY |
Untuk TV yang berisi TLV lain, topik referensi TLV memiliki beberapa kolom yang diizinkan instans TLV . Jika kolom ini dicentang, TLV yang ditentukan diizinkan untuk muncul beberapa kali. Untuk contohnya, lihat WDI_TLV_CONNECT_PARAMETERS.