Wi-Fi 框架具有三個 Wi-Fi HAL 表面,由三個不同的 HIDL 包表示:
- 供應商 HAL:用於 Android 特定命令的 HAL 表面。 HIDL 文件位於
hardware/interfaces/wifi/1.x
中。 - Supplicant HAL: wpa_supplicant的 HAL 表面。 HIDL 文件位於
hardware/interfaces/supplicant/1.x
中。 - Hostapd HAL: hostapd的 HAL 表面。 HIDL 文件位於
hardware/interfaces/hostapd/1.x
中。
供應商 HAL
供應商 HAL 提供了特定於 Android 的命令。基礎設施站 (STA) 和軟 AP (SAP) 模式的功能是可選的(不是必需的)。但是,對於Wi-Fi Aware和Wi-Fi RTT服務,它是強制性的。
Pre-HIDL(即 Android 8.0 之前的版本)Android 使用了現在稱為legacy HAL的 HAL 機制。 Android 源代碼當前使用在舊版 HAL 之上運行的 shim 提供了 HIDL 的默認實現。
舊版 HAL 標頭位於hardware/libhardware_legacy/include/hardware_legacy/
中。基於傳統 HAL 的實現位於hardware/interfaces/wifi/1.x/default
中。
請求者 HAL
Supplicant HAL 為wpa_supplicant守護程序提供 HIDL 接口。
wpa_supplicant 源代碼位於external/wpa_supplicant_8/wpa_supplicant
中。提供 HIDL 接口的 wpa_supplicant 代碼位於hidl
子目錄中。
Hostapd HAL
Hostapd HAL 為hostapd守護程序提供 HIDL 接口。
hostapd 源代碼位於external/wpa_supplicant_8/hostapd
中。提供 HIDL 接口的 hostapd 代碼位於hidl
子目錄中。
Wi-Fi多接口並發
不同的Android設備可以同時支持不同的Wi-Fi接口組合。支持的組合在 HAL 中定義並暴露給框架。規範格式在android/hardware/interfaces/wifi/1.0/IWifiChip.hal
中定義。例如,設備可能支持兩個 STA 和一個 NAN( Wi-Fi 感知)或 P2P( Wi-Fi Direct )類型(但不能同時支持兩者)的接口。這將表示為:
[{STA} <= 2, {NAN,P2P} <= 1]
並發規範格式靈活通用。它可以表達框架尚不支持的組合。要配置特定組合,請使用位於device/<oem>/<device>/BoardConfig-common.mk
的WIFI_HAL_INTERFACE_COMBINATIONS
構建標誌。或者,參考 HAL 具有可以使用(舊版)構建標誌激活的幾種組合的配置。有關配置說明,請參閱: