位置: 编程技术 - 正文

Android WiFi--系统架构(安卓wifimanager详解)

编辑:rootadmin

推荐整理分享Android WiFi--系统架构(安卓wifimanager详解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android wifi direct,android/data/wifipwd,android wifi架构,android wifi direct,android.net.wifi,android.net.wifi,android wifi direct,android wifi direct,内容如对您有帮助,希望把文章链接给更多的朋友!

原文链接请参考: 系统架构

Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口。整个WiFi系统架构如下图所示:

一切尽在上图中,下面将对每部分进行详细分析。

1.1 WifiService

由SystemServer启动的时候生成的ConnecttivityService创建,负责启动关闭wpa_supplicant,启动和关闭WifiMonitor线程,把命令下发给wpa_supplicant以及更新WIFI的状态。

处理其它模块通过IWifiManager接口发送过来的远端WiFi操作。

1.2 WifiMonitor

负责从wpa_supplicant接收事件通知。

1.3 wpa_supplicant

1) 读取配置文件 2) 初始化配置参数,驱动函数 3) 让驱动scan当前所有的bssid 4) 检查扫描的参数是否和用户设置的相符 5) 如果相符,通知驱动进行权限和认证操作 6) 连上AP

1.4 Wifi驱动模块

厂商提供的source,主要进行load firware和kernel的wireless进行通信

1.5 Wifi电源管理模块

主要控制硬件的GPIO和上下电,让CPU和Wifi模组之间通过sdio接口或USB接口通信

1.6 Wifi工作步骤

1) Wifi启动 2) 开始扫描 3) 显示扫描的AP 4) 配置AP 5) 连接AP 6) 获取IP地址 7) 上网

1.7 Wifi模块代码

1) Wifi Settings应用程序 packages/apps/Settings/src/com/android/settings/wifi

2) Wifi Framework frameworks/base/wifi/java/android/net/wifi (UI通过android.net.wifi package发送命令给wifi.c)

frameworks/base/core/java/android/net(更高一级的网络管理) frameworks/base/services/java/com/android/server

3) Wifi JNI frameworks/base/core/jni/android_net_wifi_Wifi.cpp 4) Wifi Hardware (wifi管理库) hardware/libhardware_legacy/wifi/wifi.c

5) wpa_supplicant(wifi tool)

external/wpa_supplicant8 (1) wpa_client (生成库libwpaclient.so)

Android WiFi--系统架构(安卓wifimanager详解)

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 net/wireless drivers/wlan_xxx arch/arm/mach-xxx/wlan_pm.c

2. WifiService和wpa_supplicant启动流程

WifiService和wpa_supplicant启动流程如下图所示:

2.1 状态变化

• 加载wifi驱动的状态变化流程如下:

初始状态:mInitialState

| mDriverUnloadedState

| mWaitForP2pDisableState

|mDriverLoadingState(其enter中调用WifiNative.loadDriver)

• 启动wpa_supplicant的状态变化如下: 在DriverLoadedState状态的processMessage中调用WifiNative.startSupplicant

3. 生产时自动打开Wifi

在生产时, 默认Wifi是关闭的,如果需要默认打开,可修改wifiservice.java中的如下代码:

[cpp] view plaincopy/** * Check if Wi-Fi needs to be enabled and start * if needed * * This function is used only at boot time */ public void checkAndStartWifi() { mAirplaneModeOn.set(isAirplaneModeOn()); mPersistWifiState.set(getPersistedWifiState()); /* Start if Wi-Fi should be enabled or the saved state indicates Wi-Fi was on */ boolean wifiEnabled = shouldWifiBeEnabled() || testAndClearWifiSavedState(); Slog.i(TAG, "WifiService starting up with Wi-Fi " &#; (wifiEnabled ? "enabled" : "disabled")); setWifiEnabled(wifiEnabled); //强制设置为true mWifiWatchdogStateMachine = WifiWatchdogStateMachine. makeWifiWatchdogStateMachine(mContext); }

Android:wpa_supplicant决定选择哪种驱动 1,main函数的入口:external/wpa_supplicant_8/wpa_supplicant/main.c2,init.rc中通过参数指定要加载哪个驱动3,wpa_supplicant中加载驱动的原理main.c:main()--wpa_supplicant.c:wp

Android Studio新手入门教程 新手安装完AndroidStudio后,需要配置JDK和SDK的路径。进入到AS中File--OtherSettings--DefaultProjectStructure中,如图:将JDK的安装路径和SDK的路径复制上去。(JDK最

Android之Notification-android学习之旅(二) notification常用于下拉式的消息推送。Notification的构成Nitification的实例1.新建一个Builder,要选Notification.compat包。2.然后用builder来设置nitification的属性。代

标签: 安卓wifimanager详解

本文链接地址:https://www.jiuchutong.com/biancheng/374551.html 转载请保留说明!

上一篇:【如何创建并运行java线程】(创建步骤)

下一篇:Android:wpa_supplicant决定选择哪种驱动

  • 企业办税权限怎么授权给个人
  • 简易征收怎样计提增值税
  • 其他应付款和其他应付款可以重分类
  • 办理契税需要的户口本复印件可以吗
  • 咨询公司所得税税负率是多少合适
  • 简易征收开出去的票可以抵扣吗
  • 合并报表负商誉为什么计留存收益
  • 支付结算有哪些工具
  • 处置固定资产增值税和所得税报税能一致吗
  • 关于合并商誉应该减值还是摊销的辩论
  • 公司收的保证金可以打入私人账户吗
  • 银行 收美金
  • 劳动仲裁经济补偿金的事实和理由
  • 学校付学生的现金奖励入什么科目
  • 单位发生的业务怎么做账
  • 收到3%的增值税专用发票可以抵扣吗
  • 企业所得税汇算清缴时间
  • 特朗普政府公布大力度减税方案
  • 房产企业开发产品出租
  • 用友t3怎么增加现金流量项目
  • 购买原材料并作会计分录
  • 租赁服务可以享受加计抵减吗
  • 已报税的发票可以作废吗
  • 金税三期核心征管系统行政处罚
  • 什么情况下征收车船税
  • 审计调整以前年度投资收益怎么处理
  • 外管证预缴增值税怎么抵扣
  • 计提坏账的应收账款收回
  • 降低win10版本
  • 网易打不开怎么退出游戏
  • 哪些费用发票可以报销
  • linux和windows关系
  • 盘亏固定资产累计折旧
  • PHP:is_writeable()的用法_Filesystem函数
  • 应收账款包括哪些
  • php使用crypt()函数进行加密
  • 专业初审
  • php单例模式demo
  • 制造业利润占比多少合适
  • npm无法将npm项识别为
  • qrcode.min.js
  • 闭包 python
  • 残疾人保证金优惠减免怎么申请退税
  • react+go
  • 季报弥补亏损,财报怎么填
  • 去年的普票可以开红字吗
  • phpcms使用教程
  • 加计扣除内容
  • 异地项目增值税要异地缴纳吗
  • 车辆购置税可以网上缴纳吗
  • sqlserver存储过程if语句
  • 未分配利润可以挂多久
  • 国际货运代理免增值税
  • 事业单位劳务派遣工能长期干下去吗
  • 对公账户分为几类
  • 免抵税额什么意思
  • 日常费用报销表格
  • 年利率怎么算计算器
  • 会计什么情况下不用继续教育
  • windowsxp教程
  • ubuntu服务
  • VirtualBox虚拟机中文免费
  • 安装solaris11
  • debian和ubuntu server
  • linux常用命名
  • Win10如何打开软键盘
  • mac如何自行检测硬盘信息
  • Win7安装VPN软件后无法上网是什么原因如何解决
  • 如何解决win7系统卡顿
  • linux使用语言
  • 360安全卫士检测出来高危漏洞需要修复吗
  • Android性能优化 武汉招聘
  • sublime text配置node.js调试(图文教程)
  • win7 android studio
  • Node.js中的全局对象有
  • 建立虚拟局域网有什么好处
  • jQuery插件是什么
  • 又一枚精彩的弹幕效果jQuery实现
  • 如何查询企业股票代码
  • 村副主任有什么要求
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设