天天看點

Wifi 架構Wifi 架構 (來源官網)

Wifi 架構 (來源官網)

Android 提供預設 Android 架構實作,其中包括對各種 WLAN 協定和模式的支援,這些協定和模式包括:

    WLAN 基礎架構 (STA)

    網絡共享模式或僅限本地模式下的 WLAN 熱點 (Soft AP)

    WLAN 直連(點對點)

    WLAN 感覺 (NAN)

    WLAN RTT (IEEE 802.11mc FTM)

使用 WLAN 服務的應用通過 Binder 直接與各種 WLAN 服務進行通信。WLAN 服務在系統服務中運作,并通過 HIDL 與 HAL 進行通信。下圖顯示了 Android WLAN 堆棧的正常結構。

Wifi 架構Wifi 架構 (來源官網)

應用架構

應用代碼位于應用架構級别,它使用各種 android.net.wifi API 與 WLAN 架構和硬體進行互動。此代碼在内部通過 Binder IPC 機制調用 WLAN 程序。

WLAN 服務

WLAN 服務在系統服務中運作,這類服務位于 frameworks/opt/net/wifi 中。WLAN 服務通過 HIDL 與 WLAN HAL 進行通信。

WLAN 服務有很多種:

    WLAN 服務:用于控制 WLAN 基礎架構模式(包括 STA 和 AP)的主要機制。

    WLAN 點對點服務:管理 WLAN 直連模式。

    WLAN 感覺服務:管理 WLAN 感覺模式。

    WLAN RTT 服務:管理 IEEE 802.11mc FTM 功能。

此外,WLAN 架構還包括一個獨立的程序 wificond,此程序位于 system/connectivity/wificond 中。wificond 程序通過标準 nl80211 指令與 WLAN 驅動程式進行通信。

WLAN HAL

WLAN 架構具有三個 WLAN HAL 表面,分别由三個不同的 HIDL 軟體包表示:供應商 HAL、用戶端 HAL 和 Hostapd HAL。

WLAN 架構具有三個 WLAN HAL 表面,分别由三個不同的 HIDL 軟體包表示:

供應商 HAL:Android 專用指令的 HAL 表面。HIDL 檔案位于 hardware/interfaces/wifi/1.x 中。

用戶端 HAL:wpa_supplicant 的 HAL 表面。HIDL 檔案位于 hardware/interfaces/supplicant/1.x 中。

Hostapd HAL:hostapd 的 HAL 表面。HIDL 檔案位于 hardware/interfaces/hostapd/1.x 中。

供應商 HAL

供應商 HAL 提供 Android 專用指令。供應商 HAL 對于基礎架構 Station (STA) 和 Soft AP (SAP) 模式的正常運作而言是可選的(不是必需的)。不過,對于 WLAN 感覺和 WLAN RTT 服務而言,供應商 HAL 是必要 HAL。

在 HIDL 之前(即 Android 8.0 版本之前),Android 使用的是現在稱為“舊版 HAL”的 HAL 機制。Android 源代碼目前使用在舊版 HAL 之上運作的 shim 來提供 HIDL 預設實作。

舊版 HAL 标頭位于 hardware/libhardware_legacy/include/hardware_legacy/ 中。基于舊版 HAL 的實作位于 hardware/interfaces/wifi/1.x/default 中。

用戶端 HAL

用戶端 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 子目錄中。

繼續閱讀