Wi-Fi 架構有三個 Wi-Fi HAL 介面,分別以三個不同的介面表示。如果是搭載 Android 14 以上版本的裝置,這三種介面都會以穩定的 AIDL 套件形式提供。這些介面先前是使用 HIDL 定義。
- 供應商 HAL:適用於 Android 專屬指令的 HAL 介面。AIDL 檔案位於
hardware/interfaces/wifi/aidl
中。 - Supplicant HAL:wpa_supplicant 的 HAL 介面。AIDL 檔案位於
hardware/interfaces/wifi/supplicant/aidl
。 - Hostapd HAL:hostapd 的 HAL 介面。AIDL 檔案位於
hardware/interfaces/wifi/hostapd/aidl
。
供應商 HAL
供應商 HAL 提供 Android 專屬指令。基礎架構 Station (STA) 和 Soft AP (SAP) 模式可選擇性使用 (非必要)。不過,Wi-Fi Aware 和 Wi-Fi RTT 服務必須使用這項功能。
在 Android 14 以上版本中,供應商 HAL 介面是使用 AIDL 定義。在 Android 13 以下版本中,供應商 HAL 介面是使用 HIDL 定義。
在 HIDL 推出前 (即 Android 8.0 之前),Android 使用的 HAL 機制現在稱為舊版 HAL。Android 原始碼目前提供 AIDL 或 HIDL 的預設實作,方法是使用在舊版 HAL 上執行的墊片。
舊版 HAL 標頭位於 hardware/libhardware_legacy/include/hardware_legacy/
。舊版 HAL 實作項目位於 AIDL 的 hardware/interfaces/wifi/aidl/default
和 HIDL 的 hardware/interfaces/wifi/1.x/default
。
Supplicant HAL
Supplicant HAL 提供 wpa_supplicant 精靈的介面。從 Android 13 開始,介面會使用 AIDL 定義 HAL。在 Android 13 之前的版本中,介面和供應商分區會使用 HIDL。
wpa_supplicant 原始碼位於 external/wpa_supplicant_8/wpa_supplicant
。參考實作提供 AIDL 介面,該介面會在 aidl
子目錄中實作。
Hostapd HAL
Hostapd HAL 提供 hostapd 精靈的介面。從 Android 13 開始,介面會使用 AIDL 定義 HAL。在 Android 13 之前的版本中,介面和供應商分區會使用 HIDL。
hostapd 原始碼位於 external/wpa_supplicant_8/hostapd
。
參考實作提供 AIDL 介面,該介面會在 aidl
子目錄中實作。
Wi-Fi 多介面並行
不同的 Android 裝置可同時支援不同的 Wi-Fi 介面組合。HAL 中定義了支援的組合,並向架構公開。規格格式定義於 AIDL Wi-Fi HAL 的 hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
、Wi-Fi HAL 1.6 的 android/hardware/interfaces/wifi/1.6/IWifiChip.hal
,以及 Wi-Fi HAL 1.5 和更低版本的 android/hardware/interfaces/wifi/1.0/IWifiChip.hal
。
Android 14 以上版本適用的 AIDL HAL,以及 Android 13 適用的 Wi-Fi HAL 1.6 版,都新增了將橋接 AP 介面 (雙頻同步) 指定為明確組合項目的功能。
並行規格格式彈性且通用。可表示架構目前不支援的組合。如要設定特定組合,請使用 device/<oem>/<device>/BoardConfig-common.mk
中的 WIFI_HAL_INTERFACE_COMBINATIONS
建構旗標。
舉例來說,裝置可以支援兩個 STA,以及 NAN (Wi-Fi Aware) 或 P2P (Wi-Fi Direct) 類型的介面 (但不能同時支援兩者)。這在 device/<oem>/<device>/BoardConfig-common.mk
中表示為:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 2}, {{NAN, P2P}, 1}}
另一個例子是支援 STA 的裝置 (單一 AP),或是沒有其他介面的橋接 AP (雙頻同步)。這會以以下形式表示:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
或者,參考 HAL 也有多種組合的設定,可透過 (舊版) 建構標記啟用。如需設定操作說明,請參閱: