位置: 编程技术 - 正文

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

  • 公司申报个税流程
  • 进口货物的会计科目
  • 其他应付款借方余额怎么调整
  • 城建税 小规模
  • 债券到期收益率计算器
  • 按月按季申报
  • 出口退免税备案
  • 应收账款的账面价值等于什么
  • 商业企业收取各项费用的税务与会计处理
  • 支付职工医药费计入什么科目
  • 违约金收入需要缴纳印花税吗
  • 汽车保险费可以抵扣吗
  • 公司成立前购买的设备算个人还是公司
  • 建筑业分项目核算会计账务处理
  • 支付给银行的借款利息属于什么会计要素
  • 运输费计入采购成本的分录
  • 没有开通对公账户
  • 工程的进项税怎么处理
  • 公司按照实际利润额预缴企业所得税,这个实际利润额就是会计利润吗?
  • 委托加工怎么计算消费税
  • 将自产产品无偿赠送 会计处理
  • 研究开发费用扣除标准
  • 怎样根据利润表做资产负债表
  • 固定资产净值如何清零
  • 工程已验收,质量问题怎么解决
  • 企业信息公示社保信息怎么填,公司没有交
  • win10怎么删除搜索
  • 网页不播放声音怎么设置
  • 不能抵扣的费用
  • 劳务公司的账务怎么做账
  • 购买生产用品计入什么科目
  • 商品结转成本后怎么做账
  • 工业企业成本怎么结转
  • php运算符号
  • 电子发票和纸质发票的法律效力
  • centos 安装php
  • php访问数据库的一般步骤
  • uniapp和vue混合开发
  • yolo object detection
  • 联邦学习攻击与防御综述
  • javascript中文手册
  • 企业商品库存周期是多久
  • 印花税的营业账簿是什么意思
  • phpcms生成html
  • 技术开发费免税政策
  • 二手车的范围
  • 小微企业0税务报税流程
  • 增值税和个人所得税怎么算
  • 横幅属于是什么税收大类?
  • 短期贷款利息支付
  • 退伍军人9000补助
  • 净利润为负数会计分录
  • 非营利性组织和营利性组织的区别
  • 房产公司销售成本怎么算
  • sql怎么分组查询
  • wind怎么申请
  • windows 9
  • win10电脑版微信字体大小怎么设置方法
  • linux中使用bash是什么意思
  • mac系统教程
  • win7破解版和正版的区别
  • s24evmon.exe - s24evmon是什么进程 有什么用
  • windows8启动管理器
  • Linux下将Mysql和Apache加入到系统服务里的方法
  • web项目可以打包成jar包吗
  • <Unity3D>Unity3D GUI控件
  • Android游戏开发教程
  • 使用netcat(瑞士军刀)进行文件传输
  • 批处理删除注册表指定项
  • 用python的turtle画图代码
  • Build Qt5.3.1 for Freescale I.MX6Q based Linux 3.0.15
  • pycharm中连接MySQL数据库
  • json web key
  • jquery对象可以直接使用dom吗
  • ghost此应用无法在你的电脑上运行
  • javascript 对象
  • 增值税有哪些税种组成
  • 遵从和尊重
  • 员工的生育津贴计入工资总额吗
  • 税务登录 河北省地方税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设