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 堆棧的常規結構。

應用框架

應用代碼位於應用框架級別,它使用各種 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 HALhostapd 的 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 子目錄中。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章