一、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)

代码目录:external/wpa_supplicant/

wpa_supplicant是一个开源项目,已经移植到Linux、Windows以及其它嵌入式系统上。它是WPA(WiFi Protected Access的缩写,中文含义为WiFi网络安全存取)的应用层认证客户端,负责完成认证相关的登录、加密等工作。 该层是Wifi FrameWork层的基石,也叫Wifi服务层。

经过编译后主要结果是生成动态库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层

代码目录:kernel/drivers/net/wireless

Android的Wifi系统框架分析第一篇相关推荐

  1. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇--揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  2. 【高级内部资料】.NET数据批量写入性能分析 第一篇

    [高级内部资料].NET数据批量写入性能分析 第一篇 说起数据的批量写入,相信大家应该不陌生了,那么我们本系列的文章不准备讲述如何来进行数据的批量写入,而是介绍常用的数据批量写入方法的性能分析. 同时 ...

  3. Android四大组件之Activity(第一篇-简单使用)

    Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...

  4. 插件系统[1]·插件系统框架分析

    插件系统[1]·插件系统框架分析 开发者在线 Builder.com.cn 更新时间:2008-01-13作者:陈亮亮 来源:CSDN 本文关键词: 分析 框架 插件 插件系统概述 普通的系统,在编译 ...

  5. 【Android 12.0】Android S WiFi启动业务流程分析(UML图)

    以下两张为Android S的WiFi启动(start)业务流程UML图,业务流程的过程详情因公司规定不可复制源码出来,所以想看业务流程详情的同学可以参考其他博主所发的博客.业务流程参考内容链接我会放 ...

  6. Kithings如何选择Wi-Fi物联网芯片(第一篇)

    kithings.com 我们做Wi-Fi物联网解决方案已经思考.实践了许久了,在原来的公司里,也早就开始动手做准备了,比如智能工卡就是去年就已经开发原型出来,并已经接洽在一些试用了.       作 ...

  7. Android 8.0 RIL框架分析

    原文地址:https://blog.csdn.net/qq_27540925/article/details/79356799 前言 Android O的版本对RIL的框架的通信功能进行了改动,不在使 ...

  8. Android ALSA音频系统架构分析(1)----从Loopback了解Audio

    /*********************************** * Author:刘江明 * Environment:MTK Android 6.0 * Date:2017年05月25日 * ...

  9. LuceneSolr框架之第一篇

    2.信息检索信息检索是计算机世界中非常重要的一种功能.信息检索不仅仅是指从数据库检索数据,还包括从文件.网页.邮件.用户手输入的内容中检索数据.通过怎样的高效方式将用户想要的信息快速提取出来,是计算机 ...

  10. 对volley的初步分析第一篇

    进入android世界已经快要两年了,放眼望去,在这两年的android世界里,自己多少也成长了点,一路上磕磕碰碰,即使现在的我还是android学术界里最垫底的那一位,但还是阻挡不了我对未来andr ...

最新文章

  1. 从外资银行上看国内银行的差距
  2. TCP/IP和OSI4层、7层协议介绍
  3. 基于Linux的嵌入式浏览器的实现
  4. vue-router的hash模式和history模式,
  5. linux添加和增大交换分区(swap)的方法
  6. VisualStudio异常处理 —— LNK1112 模块计算机类型“x64”与目标计算机类型“X86”冲突
  7. Mybatis中resultMap的作用-解决实体类属性名和数据库字段不一致
  8. 介质簇结构不正确_电动蝶阀的结构特征以及优点,值得看完
  9. Linux:GCC安装与编译(详细)
  10. 颜色值16进制转rgba
  11. 算法之二叉树各种遍历
  12. 《软件工程》-软件质量管理
  13. 塑胶模具注塑常用哪些材质
  14. java16 新特性
  15. 创业者回忆和乔布斯谈判:说错一个字就被臭骂拉黑
  16. 全网首款能模拟苹果IOS系统自带Safari浏览器的工具来了
  17. YY内置灯笼号挂号工具
  18. CAD图库分享好用免费的CAD图纸
  19. 联想G480如何关闭数字小键盘
  20. 2017-美团大众点评-安全工程师A/B卷

热门文章

  1. Spring MVC @ResponseBody返回中文字符串乱码问题
  2. C:矩形相交、相包含、相离关系判断
  3. org.apache.common.io-FileUtils详解
  4. CouchDB 1.3.0的新特性以及算法的强化
  5. 猎豹浏览器_金山猎豹浏览器_官方正式版下载_首款双核安全浏览器
  6. 【损失函数】一文弄懂各种loss function
  7. 【面经】NLP算法-字节跳动
  8. 【NLP】doc2vec原理及实践
  9. 25本《Python+TensorFlow机器学习实战》免费包邮到家!
  10. 十一这里最好玩啦!快来一起玩耍!