Framework Wi-Fi memiliki tiga platform Wi-Fi HAL yang diwakili oleh tiga antarmuka yang berbeda. Untuk perangkat yang menjalankan Android 14 atau yang lebih tinggi, ketiga antarmuka tersedia sebagai paket Android Interface Definition Language (AIDL) yang stabil. Antarmuka ini sebelumnya ditentukan menggunakan Hardware Interface Definition Language (HIDL).
- HAL Vendor: Platform HAL untuk perintah khusus Android. File AIDL berada
di
hardware/interfaces/wifi/aidl. - HAL Supplicant: Platform HAL untuk wpa_supplicant. File AIDL berada di
hardware/interfaces/wifi/supplicant/aidl. - HAL Hostapd: Platform HAL untuk hostapd. File AIDL berada di
hardware/interfaces/wifi/hostapd/aidl.
HAL Vendor
HAL Vendor menyediakan perintah khusus Android. HAL ini bersifat opsional (tidak wajib) agar mode Station (STA) infrastruktur dan Soft AP (SAP) dapat berfungsi. Namun, HAL ini wajib untuk Wi-Fi Aware dan untuk layanan Wi-Fi RTT.
Di Android 14 dan yang lebih tinggi, antarmuka HAL Vendor ditentukan menggunakan AIDL. Di Android 13 dan yang lebih rendah, antarmuka HAL Vendor ditentukan menggunakan HIDL.
Sebelum HIDL (yaitu, sebelum Android 8.0), Android menggunakan mekanisme HAL yang disebut HAL lama. Kode sumber Android menyediakan implementasi default AIDL atau HIDL. Implementasi ini menggunakan shim yang berjalan di atas HAL lama.
Header HAL lama terletak di hardware/libhardware_legacy/include/hardware_legacy/. Implementasi berbasis HAL lama terletak di hardware/interfaces/wifi/aidl/default untuk AIDL dan hardware/interfaces/wifi/1.x/default untuk HIDL.
HAL Supplicant
HAL Supplicant menyediakan antarmuka untuk daemon wpa_supplicant. Mulai Android 13, antarmuka menggunakan AIDL untuk definisi HAL. Untuk rilis sebelum Android 13, antarmuka dan partisi vendor menggunakan HIDL.
Kode sumber wpa_supplicant terletak di external/wpa_supplicant_8/wpa_supplicant. Implementasi referensi menyediakan antarmuka AIDL, yang diimplementasikan di subdirektori aidl.
HAL Hostapd
HAL Hostapd menyediakan antarmuka untuk daemon hostapd. Mulai Android 13, antarmuka menggunakan AIDL untuk definisi HAL. Untuk rilis sebelum Android 13, antarmuka dan partisi vendor menggunakan HIDL.
Kode sumber hostapd terletak di external/wpa_supplicant_8/hostapd.
Implementasi referensi menyediakan antarmuka AIDL, yang diimplementasikan di subdirektori aidl.
Konkurensi multi-antarmuka Wi-Fi
Berbagai perangkat Android dapat mendukung kombinasi antarmuka Wi-Fi yang berbeda secara bersamaan. Kombinasi yang didukung ditentukan dalam HAL dan diekspos ke framework. Format spesifikasi ditentukan dalam hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl untuk AIDL Wi-Fi HAL, android/hardware/interfaces/wifi/1.6/IWifiChip.hal untuk Wi-Fi HAL 1.6, dan android/hardware/interfaces/wifi/1.0/IWifiChip.hal untuk Wi-Fi HAL 1.5 dan yang lebih rendah.
AIDL HAL, yang tersedia untuk Android 14 dan yang lebih tinggi, serta Wi-Fi HAL versi 1.6, yang tersedia di Android 13 menambahkan kemampuan untuk menentukan antarmuka AP yang dijembatani (dual band simultan) sebagai item kombinasi eksplisit.
Format spesifikasi konkurensi bersifat fleksibel dan generik; format ini dapat mengekspresikan kombinasi yang belum didukung oleh framework. Untuk mengonfigurasi kombinasi tertentu, gunakan tanda build WIFI_HAL_INTERFACE_COMBINATIONS. Tanda ini terletak di device/<oem>/<device>/BoardConfig-common.mk.
Misalnya, perangkat dapat mendukung dua STA dan satu antarmuka jenis NAN
(Wi-Fi Aware)
atau P2P
(Wi-Fi Direct)
(tetapi tidak keduanya). Hal ini dinyatakan dalam
device/<oem>/<device>/BoardConfig-common.mk sebagai:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
Contoh lainnya adalah perangkat yang mendukung STA dengan satu AP, atau AP yang dijembatani (dual band simultan) tanpa antarmuka lain. Hal ini direpresentasikan sebagai:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
Atau, HAL referensi memiliki konfigurasi untuk beberapa kombinasi yang dapat diaktifkan dengan tanda build (lama). Untuk mengetahui petunjuk konfigurasi, lihat: