Android的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)
代码目录: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系统框架分析第一篇相关推荐
- Android开源框架Afinal第一篇——揭开圣女的面纱
Android开源框架Afinal第一篇--揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...
- 【高级内部资料】.NET数据批量写入性能分析 第一篇
[高级内部资料].NET数据批量写入性能分析 第一篇 说起数据的批量写入,相信大家应该不陌生了,那么我们本系列的文章不准备讲述如何来进行数据的批量写入,而是介绍常用的数据批量写入方法的性能分析. 同时 ...
- Android四大组件之Activity(第一篇-简单使用)
Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...
- 插件系统[1]·插件系统框架分析
插件系统[1]·插件系统框架分析 开发者在线 Builder.com.cn 更新时间:2008-01-13作者:陈亮亮 来源:CSDN 本文关键词: 分析 框架 插件 插件系统概述 普通的系统,在编译 ...
- 【Android 12.0】Android S WiFi启动业务流程分析(UML图)
以下两张为Android S的WiFi启动(start)业务流程UML图,业务流程的过程详情因公司规定不可复制源码出来,所以想看业务流程详情的同学可以参考其他博主所发的博客.业务流程参考内容链接我会放 ...
- Kithings如何选择Wi-Fi物联网芯片(第一篇)
kithings.com 我们做Wi-Fi物联网解决方案已经思考.实践了许久了,在原来的公司里,也早就开始动手做准备了,比如智能工卡就是去年就已经开发原型出来,并已经接洽在一些试用了. 作 ...
- Android 8.0 RIL框架分析
原文地址:https://blog.csdn.net/qq_27540925/article/details/79356799 前言 Android O的版本对RIL的框架的通信功能进行了改动,不在使 ...
- Android ALSA音频系统架构分析(1)----从Loopback了解Audio
/*********************************** * Author:刘江明 * Environment:MTK Android 6.0 * Date:2017年05月25日 * ...
- LuceneSolr框架之第一篇
2.信息检索信息检索是计算机世界中非常重要的一种功能.信息检索不仅仅是指从数据库检索数据,还包括从文件.网页.邮件.用户手输入的内容中检索数据.通过怎样的高效方式将用户想要的信息快速提取出来,是计算机 ...
- 对volley的初步分析第一篇
进入android世界已经快要两年了,放眼望去,在这两年的android世界里,自己多少也成长了点,一路上磕磕碰碰,即使现在的我还是android学术界里最垫底的那一位,但还是阻挡不了我对未来andr ...
最新文章
- 从外资银行上看国内银行的差距
- TCP/IP和OSI4层、7层协议介绍
- 基于Linux的嵌入式浏览器的实现
- vue-router的hash模式和history模式,
- linux添加和增大交换分区(swap)的方法
- VisualStudio异常处理 —— LNK1112 模块计算机类型“x64”与目标计算机类型“X86”冲突
- Mybatis中resultMap的作用-解决实体类属性名和数据库字段不一致
- 介质簇结构不正确_电动蝶阀的结构特征以及优点,值得看完
- Linux:GCC安装与编译(详细)
- 颜色值16进制转rgba
- 算法之二叉树各种遍历
- 《软件工程》-软件质量管理
- 塑胶模具注塑常用哪些材质
- java16 新特性
- 创业者回忆和乔布斯谈判:说错一个字就被臭骂拉黑
- 全网首款能模拟苹果IOS系统自带Safari浏览器的工具来了
- YY内置灯笼号挂号工具
- CAD图库分享好用免费的CAD图纸
- 联想G480如何关闭数字小键盘
- 2017-美团大众点评-安全工程师A/B卷
热门文章
- Spring MVC @ResponseBody返回中文字符串乱码问题
- C:矩形相交、相包含、相离关系判断
- org.apache.common.io-FileUtils详解
- CouchDB 1.3.0的新特性以及算法的强化
- 猎豹浏览器_金山猎豹浏览器_官方正式版下载_首款双核安全浏览器
- 【损失函数】一文弄懂各种loss function
- 【面经】NLP算法-字节跳动
- 【NLP】doc2vec原理及实践
- 25本《Python+TensorFlow机器学习实战》免费包邮到家!
- 十一这里最好玩啦!快来一起玩耍!