Wi-Fi 架構有三個 Wi-Fi HAL 途徑,由三個不同的介面代表。對於搭載 Android 14 以上版本的裝置,這三種介面都會提供穩定的 AIDL 套件。這些介面先前是使用 HIDL 定義的。
- 供應商 HAL:適用於 Android 特定指令的 HAL 介面。AIDL 檔案位於
hardware/interfaces/aidl
,HIDL 檔案位於hardware/interfaces/wifi/1.x
。 - Supplicant HAL:wpa_supplicant 的 HAL 途徑。AIDL 檔案位於
hardware/interfaces/supplicant/aidl
,HIDL 檔案位於hardware/interfaces/supplicant/1.x
。 - Hostapd HAL:hostapd 的 HAL 途徑。AIDL 檔案位於
hardware/interfaces/hostapd/aidl
,HIDL 檔案位於hardware/interfaces/hostapd/1.x
。
供應商 HAL
供應商 HAL 會提供 Android 專屬指令。基礎架構站 (STA) 和軟體存取點 (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 上執行的 shim。
舊版 HAL 標頭位於 hardware/libhardware_legacy/include/hardware_legacy/
中。舊版 HAL 實作項目位於 AIDL 的 hardware/interfaces/wifi/aidl/default
和 HIDL 的 hardware/interfaces/wifi/1.x/default
。
申請者 HAL
Supplicant HAL 會為 wpa_supplicant 守護程式提供介面。自 Android 13 起,介面會使用 AIDL 做為 HAL 定義。如果是 Android 13 以下版本,介面和供應商分區會使用 HIDL。
wpa_supplicant 原始碼位於 external/wpa_supplicant_8/wpa_supplicant
。參考實作項目會提供 AIDL 介面,並在 aidl
子目錄中實作。
代管 HAL
Hostapd HAL 為 hostapd Daemon 提供介面,從 Android 13 開始,此介面會使用 AIDL 定義 HAL。在 Android 13 之前的版本中,介面和供應商分區會使用 HIDL。
hostapd 原始碼位於 external/wpa_supplicant_8/hostapd
中。參考實作項目會提供 AIDL 介面,並在 aidl
子目錄中實作。
Wi-Fi 多介面並行
不同的 Android 裝置可以同時支援不同的 Wi-Fi 介面組合。支援的組合會在 HAL 中定義,並公開給架構。規格格式定義如下:hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
適用於 AIDL Wi-Fi HAL、android/hardware/interfaces/wifi/1.6/IWifiChip.hal
適用於 Wi-Fi HAL 1.6,android/hardware/interfaces/wifi/1.0/IWifiChip.hal
適用於 Wi-Fi HAL 1.5 以下版本。
AIDL HAL 適用於 Android 14 以上版本,以及 Wi-Fi HAL 1.6 版 (適用於 Android 13),現在可以將橋接 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}}
另一個例子是裝置支援單一 AP 的 STA,或沒有其他介面的橋接 AP (同時支援雙頻)。這會以以下方式表示:
WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}}, {{{AP_BRIDGED}, 1}}
或者,參考 HAL 有幾種組合的設定,可透過 (舊版) 建構標記啟用。如需設定操作說明,請參閱: