Wifi 架构

时间:2024-03-18 11:10:20

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 架构

应用框架

应用代码位于应用框架级别,它使用各种 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 子目录中。