位置: 编程技术 - 正文

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

  • 进货增值税税率
  • 我公司租了个人的房子如何入账
  • 增量留底退税基数是多少?
  • 法人和办税人
  • 高新企业收到政府补贴怎么做账
  • 游戏公司收入确认方法
  • 向境外个人支付咨询费如何算税
  • 返佣账务处理
  • 行政处罚属于什么费用
  • 汇兑损益属于企业成本吗
  • 固定资产处置净损益计入什么科目
  • 商贸公司购进农产品可以抵扣吗
  • 专用发票不抵扣怎么做分录
  • 因小数点造成的误差称为
  • 关联企业如何取消
  • 开完红字发票后,正数发票如何开具?
  • 增值税普通发票几个点
  • 房产赠与流程是什么意思
  • 如何区分劳务派遣和劳动合同
  • 企业所得税收入是含税还是不含税
  • 税务机关代开的普通发票上无需加盖收款方的印章
  • 个体户 季报
  • 增长率应该要如何计算呢?
  • 联营企业分配利润
  • 竣工决算调整入库流程
  • 解决脱发的8个方法
  • 美团收入怎么处理的?
  • 本月发生的费用,下月取得发票,怎么做账
  • 公司帮员工代缴社保有风险吗
  • 自创商誉的确认
  • 借款成坏账了怎么处理
  • 土地增值税属于财产税吗
  • php 正则
  • 固定资产折旧加计扣除
  • windows11安装ubuntu20.04
  • wordpresscom
  • 借款费用如何确认收入
  • 稽查补缴所得税分录
  • sortable js
  • 贷款利息现金流量项目
  • phpcms模块
  • 新企业所得税实施细则
  • 转增资本属于什么会计科目
  • 报税网页打不开报表怎么办
  • 两个公司可以是一个注册地址吗
  • 融资购买固定资产账务处理
  • 用于研发的材料做成产品出售后怎么做账
  • 价外费用企业所得税
  • 向客户收取服务费会计分录
  • 长期股权投资转让收益需要交增值税吗
  • 仓库转租合同
  • 境内企业借外债,不还会怎么样
  • 景区如何管理和服务
  • 工程款外地预缴哪些税
  • 个人为什么不能购买永续债
  • 投资款计入哪个科目
  • 会计计量属性是什么意思
  • mysql查询语句优先级
  • centos rpm包存放位置
  • centos 安装
  • 电脑开机显示xp后无反应
  • xp系统怎样创建网络连接
  • 远程登陆服务器命令
  • centos6创建文件
  • windows7关机点了没反应
  • 什么是血糖
  • win7系统修改mac地址
  • linux-swap
  • 关于我和鬼变成家人的那件事
  • 怎么快速
  • shell示例
  • linux中tar命令
  • [置顶]从lv2开始开挂的原勇者候悠闲的异世界生活
  • python 批量操作
  • 轻轻松松学习JavaScript
  • android开发流程
  • 小规模开票限额最新规定2022
  • 税控盘的口令密码是什么
  • 如何开具红字发票明细
  • 广西小学成绩查询入口官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设