位置: 编程技术 - 正文

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决定选择哪种驱动

  • 代扣个人借款分录
  • 可以抵扣的进项税额是什么意思
  • 报销单的经办人写自己吗
  • 租金没有发票可以入账吗
  • 折旧额对应纳税所得额的影响
  • 固定资产处置的增值税税率
  • 购物返现活动文案
  • 怎么确认外购存货成本?
  • 收购公司固定资产注意事项
  • 转租收入怎样缴税
  • 车船使用税应该交哪里的税
  • 个人借公司款利率多少合法
  • 关联企业无偿使用土地
  • 税务分析最常用的分析方法
  • 实收资本的印花税减半征收吗
  • 营业执照上能看出来是一般纳税人
  • 外资企业需要遵守哪些法律
  • 湖北个体户网上申报
  • 完全成本法下期间费用应当包括
  • 公司投资理财需要纳税吗
  • 免征增值税转入什么科目
  • 经营租赁中出租人发生的初始直接费用是指
  • 汇算清缴发现以前预缴报表资产错误
  • 购置土地税款怎么入账?
  • 研发用的原材料怎么开领料单
  • 酒店试菜费用会计分录
  • 存货跌价准备会影响利润吗
  • 购入黄金产品怎么入账
  • 猜单词游戏代码
  • 未入账发票可以作废吗
  • 现金流量科目怎么设置
  • hpptd.exe
  • 可供出售金融资产和交易性金融资产
  • h5页面跳转小程序不显示按钮
  • php进程数设置
  • 技术维护服务费
  • php深度分析
  • vue权限管理面试题
  • vue从入门到精通教程
  • 母公司为子公司提供担保需要决议吗
  • 缴纳残保金的计税依据是什么
  • 单位购日用品计提折旧吗
  • 应发工资与应税的区别
  • 销售费用变动率异常
  • 其他应收款如何处理
  • sql server必知必会
  • 纳税人可以享受六项专项附加扣除
  • 公司给员工买意外险需要员工出钱吗
  • 长期股权投资被投资方实现净利润
  • 软件退税款会计如何处理
  • 原材料暂估入库是什么意思
  • 票据质押如何做账
  • 普票丢失可以用复印件入账吗
  • 网上购物退款后未退回物品怎么投诉
  • 免征的教育费附加怎么做账
  • 固定资产应计入什么账户
  • 企业成立前期的重点工作
  • sql字段转首字母大写
  • solaris命令
  • ubuntu如何配置
  • windows7旗舰版怎么扩展c盘
  • win8 cmd在哪
  • linux不能识别u盘
  • win8使用教程和技能
  • win7更新补丁80072efe
  • 电源管理器在哪
  • unsupportedclassversion
  • unity shader lerp
  • Nodejs Express4.x开发框架随手笔记
  • android 自定义drawable
  • CCClippingNode导致的贴图错误问题
  • 怎么用python下载付费音乐
  • dom和javascript的关系
  • shell脚本编程实验报告
  • js中的函数怎么使用
  • 如何实现高质量发展
  • edittext获取焦点弹出键盘
  • 开发笔记本哪个比较好一点
  • 支付宝怎么样开通刷脸支付
  • 新疆哪个城市最有发展前景
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设