Android WiFi 基础概览
- 1、WiFi协议
- 2、Android WLAN 架构
- 2.1 应用框架
- 2.2 Wi-Fi 服务
- 2.3 Wi-Fi HAL
- 3、相关编译
android13-release
1、WiFi协议
Wi-Fi(无线通信技术)_百度百科
2.4GHz 频段支持以下标准(802.11b/g/n/ax),5GHz 频段支持以下标准(802.11a/n/ac/ax),由此可见,802.11n/ax 同时工作在 2.4GHz 和 5GHz 频段,所以这两个标准是兼容双频工作。
WiFi 版本 WiFi 标准 发布时间 最高速率 工作频段 WiFi 7 IEEE 802.11be 2022年 30Gbps 2.4GHz,5GHz,6GHz WiFi 6 IEEE 802.11ax 2019 年 11Gbps 2.4GHz 或 5GHz WiFi 5 IEEE 802.11ac 2014 年 1Gbps 5GHz WiFi 4 IEEE 802.11n 2009 年 600Mbps 2.4GHz 或 5GHz WiFi 3 IEEE 802.11g 2003 年 54Mbps 2.4GHz WiFi 2 IEEE 802.11b 1999 年 11Mbps 2.4GHz WiFi 1 IEEE 802.11a 1999 年 54Mbps 5GHz WiFi 0 IEEE 802.11 1997 年 2Mbps 2.4GHz 2.4GHz(802.11b/g/n/ax),5GHz(802.11a/n/ac/ax)
2、Android WLAN 架构
2.1 应用框架
应用代码位于应用框架级别,它使用各种 android.net.wifi API 与 WLAN 框架和硬件进行交互。此代码在内部通过 Binder IPC 机制调用 WLAN 进程。
SystemUI:
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiSignalController.java
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiIcons.java
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/WifiState.kt
frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java
Settings:
packages/apps/Settings/src/com/android/settings/network/NetworkProviderSettings.java
packages/apps/Settings/src/com/android/settings/wifi/WifiPickerTrackerHelper.java
frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiPickerTracker.java
frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java
frameworks/opt/net/wifi/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java
2.2 Wi-Fi 服务
Wi-Fi 服务在系统服务中运行,这类服务位于 packages/modules/Wifi/service/
( frameworks/opt/net/wifi
) 中。Wi-Fi 服务
通过 HIDL
与 Wi-Fi HAL
进行通信。
Wi-Fi 服务有很多种:
- WLAN 服务: 用于控制 WLAN 基础架构模式(包括 STA 和 AP)的主要机制。
- WLAN 点对点服务: 管理 WLAN 直连模式。
- WLAN 感知服务: 管理 WLAN 感知模式。
- Wi-Fi RTT 服务: 管理 IEEE 802.11mc FTM 功能。
此外,Wi-Fi 框架还包含一个独立的
wificond 进程
,该进程位于system/connectivity/wificond
中。wificond 进程通过标准的 nl80211 命令与 Wi-Fi 驱动程序进行通信。
2.3 Wi-Fi HAL
WLAN 框架具有三个 WLAN HAL 表面,分别由三个不同的 HIDL 软件包表示:
供应商 HAL
、客户端 HAL
和Hostapd HAL
。
- 供应商 HAL: Android 专用命令的 HAL surface。HIDL 文件位于
hardware/interfaces/wifi/1.x
中。- 客户端 HAL: wpa_supplicant 的 HAL surface。HIDL 文件位于
hardware/interfaces/wifi/supplicant/1.x
中,AIDL 文件位于 hardware/interfaces/supplicant/aidl 中。- Hostapd HAL: hostapd 的 HAL surface。HIDL 文件位于
hardware/interfaces/wifi/hostapd/1.x
中,AIDL 文件位于hardware/interfaces/wifi/hostapd/aidl
中。
3、相关编译
hardware/interfaces/wifi
android.hardware.wifi@1.0-service
hardware/interfaces/wifi/1.6/default/android.hardware.wifi@1.0-service.rc
hardware/interfaces/wifi/1.6/default/Android.bp
hardware/interfaces/wifi/1.6/Android.bpwpa_supplicant
hardware/interfaces/wifi/supplicant/1.4/Android.bp
hardware/interfaces/wifi/supplicant/aidl/Android.bphostapd
hardware/interfaces/wifi/hostapd/1.3/Android.bp
hardware/interfaces/wifi/hostapd/aidl/Android.bp
packages/modules/Wifi
service-wifi
: packages/modules/Wifi/service/Android.bpframework-wifi
: packages/modules/Wifi/framework/Android.bp
frameworks/opt/net/wifi
WifiTrackerLib
: frameworks/opt/net/wifi/libs/WifiTrackerLib/Android.bp ( SystemUI/Settings编译应用导入该包 )
system/connectivity/wificond
wificond
: system/connectivity/wificond/wificond.rc
system/connectivity/wificond/Android.bp