• Android WIFI架构


    目录

     Wi-Fi 框架介绍

    应用框架(Applicatin Framework)

    WiFi  服务(Wi-Fi Service)

    WIFI HAL

    源码路径


     Wi-Fi 框架介绍

    应用框架(Applicatin Framework)

    应用(如 WiFi Setting)使用各种 android.net.wifi API 与 wifi 框架和硬件进行交互,内部通过 Binder IPC 调用 wifi 进程 

    WiFi  服务(Wi-Fi Service)

    Wifi 服务在系统服务中运行,代码位于 frameworks/opt/net/wifi,Wifi 服务通过 HDIL 与 WiFi HAL 通信,
    WIFI 服务有:
    1)  Wifi base 服务:控制 wifi 基础架构模式(STA\AP)的主要机制;
    2)  Wifi-p2p: 管理 wifi 直连模式
    3)  wifi 感知服务,管理感知模式
    4)  Wi-Fi RTT 服务:管理 IEEE 802.11mc FTM 功能。

            此外,Wi-Fi 框架还包含一个独立的 wificond 进程,该进程位于 system/connectivity/wificond 中。wificond 进程通过标准的 nl80211 命令与 Wi-Fi 驱动程序进行通信。

    WIFI HAL

    Wifi 框架具有 3 个 wifi hal:
    1)  是由各供应商提供的 Android 命令,对基础结构 STA 和软 AP 模式,不是必须的;
    源码位于 hardware/interfaces/wifi/1.x/default。
    2)  Supplicant HAL
    给 wpa_supplicant 守护进程提供一个 HIDL 接口;
    wpa_supplicant 源码位于 external/wpa_supplicant_8/wpa_supplicant,用于控制无线连接。
    3)  Hostapd HAL
    给 hostapd 守护程序提供 HIDL 接口;
    hostapd 源码位于 external/wpa_supplicant_8/hostapd,能使得 wifi 切换为 master 模式,即说的 SoftAP。

    源码路径

    JAVA 层  :
    packages/apps/Settings/src/com/android/settings/wifi/WifiEnabler.java
    frameworks/base/wifi/java/android/net/wifi/WifiManager.java
    frameworks/base/wifi/java/android/net/wifi/IWifiManager.aidl
    WIFI SERVICE 层: 
    frameworks/opt/net/wifi/service/java/com/android/server/wifi/BaseWifiService.java
    frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
    frameworks/opt/net/wifi/service/java/com/android/server/wifi/ActiveModeWarden.java
    frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeManager.java
    frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiNative.java
    frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiVendorHal.java
    frameworks/opt/net/wifi/service/java/com/android/server/wifi/HalDeviceManager.java
    WiFi HIDL 层  :
    hardware/interfaces/wifi/1.0/IWifi.hal
    hardware/interface/wifi/1.4/default/wifi.cpp
    hardware/interfaces/wifi/1.4/default/wifi_mode_controller.cpp
    WiFi HAL 层: 
    frameworks/opt/net/wifi/libwifi_hal/driver_tool.cpp
    out/target/product/t982_ar301/vendor/lib/libwifi-hal-common-ext.so (不开源)
    frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cpp
    vendor/amlogic/common/wifi_bt/wifi/configs/wifi.mk
    WiFi DRIVER 层:
    common/drivers/amlogic/wifi/wifi_dt.c
    common/arch/arm64/boot/dts/amlogic/t3_t982_ar301-2g.dts
    vendor/wifi_driver

  • 相关阅读:
    关于go和rust语言的对比
    uniapp:APP端webview拦截H5页面跳转,华为市场发布需要限制webview的H5页面跳转
    低代码协同政务OA升级,打造智慧办公平台
    Python爬虫解决中文乱码
    经典设计原则 - SOLID
    Annoy vs Milvus:哪个向量数据库更适合您的AI应用?知其然知其所以然
    mac配置环境变量总结
    算法设计(一) : 搜索算法实现八皇后问题
    【Android】MQTT
    gulimall基础篇回顾Day-14
  • 原文地址:https://blog.csdn.net/niaohaoge/article/details/126042201