Wifi系统框架

一:Android Wifi框架图
                                           
                                        

二:Android Wifi源码结构
1 Wifi Settings层
    原生机目录:packages/apps/Settings/src/com/android/settings/wifi/
    主要的类:
    WifiSettings.java 负责显示Wifi的设置界面
    WifiEnabler.java 负责Wifi的开关逻辑
    WifiDialog.java 负责Wifi的对话框
    WifiInfo.java 表示Wifi的相关配置信息


2  Wifi Framework层

   原生机目录:
   frameworks/base/wifi/Java/android/net/wifi/
     

  frameworks/base/core/java/android/net/

     

    frameworks/opt/net/wifi/service/java/com/android/server/wifi

         

    主要的类:

   WifiManager: 它是Wifi模块向外部应用透漏出来的接口,其它所有应用都可以通过WifiManager来操作Wifi的各项功能,但是WifiManager本身不具备处理请求的能力,而是把所有的请求转发给WifServiceImpl来处理。        

   WifiService: Java Framework中Wifi功能的总入口,负责Wifi功能的核心业务。它是服务器端的实现,作为Wifi部分的核心,处理实际的驱动加载、扫描、链接、断开等命令,以及底层上报的事件。对于主动的命令控制,WiFi是一个简单的封装,针对来自客户端的控制命令,调用相应的WifiNative底层实现。

   WifiServiceImpl: 本身也不具备处理请求的能力,而是将请求分类后交给不同的处理者处理,比如WifiStateMachine。

    WifiStateMachine: 它是一个复杂的状态机,维护了Wifi的启动、扫描、连接、断开等多个状态。它运行自己独有的线程中,拥有自己的消息队列。

    WifiStateTracker: 除了负责WiFi的电源管理模式等功能外,其核心是WifiMonitor所实现的事件轮询机制,以及消息处理函数handleMessage()。

    WifiMonitor: 专门负责接收来自Wpa_supplicant的事件,并将这些信息进行分类再交予StateMachine处理。

    WifiNative: 一个接口类,主要是提供一些native方法用于wifi framework层和WPAS通信。WifiNative的主要实现都在wifi.c函数里,WifiNative不过是将其封装,供framework层调用。


   特别注意:WifiService 和 WifiMonitor 是整个模块的核心。WifiService 负责启动关闭 wpa_supplicant、启动关闭 WifiMonitor 监视线程和把命令下发给 wpa_supplicant,而 WifiMonitor 则负责从 wpa_supplicant 接收事件通知。也就是说WifiService负责wifi整个流程的控制,而WifiMonitor负责监视底层的事件。

3 Wifi JNI层

   目录:frameworks/base/core/jni/android_net_wifi_Wifi.cpp
   android_net_wifi_Wifi.cpp就是典型jni接口,通过它可以直接调用Wifi的硬件抽象层。


4 Wifi Hardware层 (wifi管理库)

   hardware/libhardware_legacy/wifi/wifi.c
   Wifi Hardware层也叫wpa_supplicant适配层,是通用wpa_supplicant的封装。wpa_supplicant适配层起着承上启下的作用,主要用于与wpa_supplicant守护进程的通信,以供给Wifi框架层使用。

5 wpa_supplicant层(wifi tool)
   wpa_supplicant是一个开源项目,已经移植到Linux、Windows以及其它嵌入式系统上。它是WPA(WiFi Protected Access的缩写,中文含义为WiFi网络安全存取)的应用层认证客户端,负责完成认证相关的登录、加密等工作。 该层是Wifi FrameWork层的基石,也叫Wifi服务层。
   源代码目录:external/wpa_supplicant/
   经过编译后主要结果是生成动态库libwpa_client.so和可执行程序wpa_supplicant。
   (1) wpa_client (生成库libwpaclient.so)
       external/wpa_supplicant_8/wpa_supplicant/src/common/wpa_ctrl.c
   (2) wpa_server (生成守护进程wpa_supplicant)
       external/wpa_supplicant_8/wpa_supplicant/main.c
   

6 Wifi kernel层

   内核根目录:drivers/net/wireless 


转自https://blog.youkuaiyun.com/weixin_42093428/article/details/80822606

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值