Wi-Fi HAL

Framework Wi-Fi memiliki tiga platform HAL Wi-Fi yang diwakili oleh tiga antarmuka yang berbeda. Untuk perangkat yang menjalankan Android 14 atau yang lebih tinggi, ketiga antarmuka tersedia sebagai paket AIDL stabil. Antarmuka ini sebelumnya ditentukan menggunakan HIDL.

  • HAL Vendor: Platform HAL untuk perintah khusus Android. File AIDL berada di hardware/interfaces/aidl dan file HIDL berada di hardware/interfaces/wifi/1.x.
  • Supplicant HAL: Platform HAL untuk wpa_supplicant. File AIDL berada di hardware/interfaces/supplicant/aidl dan file HIDL berada di hardware/interfaces/supplicant/1.x.
  • Hostapd HAL: Platform HAL untuk hostapd. File AIDL berada di hardware/interfaces/hostapd/aidl dan file HIDL berada di hardware/interfaces/hostapd/1.x.

HAL Vendor

Vendor HAL menyediakan perintah khusus Android. Hal ini bersifat opsional (tidak wajib) agar mode Station (STA) dan Soft AP (SAP) infrastruktur berfungsi. Namun, hal ini wajib untuk layanan Wi-Fi Aware dan Wi-Fi RTT.

Di Android 14 dan yang lebih baru, 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 sekarang disebut HAL lama. Kode sumber Android saat ini menyediakan implementasi default AIDL atau HIDL menggunakan shim yang berjalan di atas HAL lama.

Header HAL lama terletak di hardware/libhardware_legacy/include/hardware_legacy/. Implementasi berbasis HAL lama berada di hardware/interfaces/wifi/aidl/default untuk AIDL dan hardware/interfaces/wifi/1.x/default untuk HIDL.

HAL Supplicant

HAL Pemohon 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. Penerapan referensi menyediakan antarmuka AIDL, yang diimplementasikan dalam sub-direktori aidl.

Hostapd HAL

Hostapd HAL 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.

Serentak multi-antarmuka Wi-Fi

Perangkat Android yang berbeda dapat mendukung berbagai kombinasi antarmuka Wi-Fi secara serentak. Kombinasi yang didukung ditentukan dalam HAL dan diekspos ke framework. Format spesifikasi ditentukan di hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl untuk HAL Wi-Fi AIDL, android/hardware/interfaces/wifi/1.6/IWifiChip.hal untuk HAL Wi-Fi 1.6, dan android/hardware/interfaces/wifi/1.0/IWifiChip.hal untuk HAL Wi-Fi 1.5 dan yang lebih rendah.

AIDL HAL, yang tersedia untuk Android 14 dan yang lebih tinggi, dan HAL Wi-Fi versi 1.6, yang tersedia di Android 13 menambahkan kemampuan untuk menentukan antarmuka AP yang dihubungkan (dual band simultan) sebagai item kombinasi eksplisit.

Format spesifikasi serentak bersifat fleksibel dan umum. Ini dapat mengekspresikan kombinasi yang belum didukung oleh framework. Untuk mengonfigurasi kombinasi tertentu, gunakan flag build WIFI_HAL_INTERFACE_COMBINATIONS yang terletak di device/<oem>/<device>/BoardConfig-common.mk.

Misalnya, perangkat dapat mendukung dua STA dan satu antarmuka dari 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 di-bridge (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 flag build (lama). Untuk petunjuk konfigurasi, lihat: