位置: 编程技术 - 正文

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

  • 怎么进行增值税纳税申报
  • 补缴以前年度增值税如何做账
  • 垫付运费的运费税怎么做分录
  • 独资企业怎么交所得税
  • 印花税购销合同计税依据70%
  • 没有数字的公章有效吗三方协议盖的章没有数字
  • 账户利息怎么做账务处理
  • 税控盘交服务费
  • 现金日记账是收付实现制吗
  • 2016 营改增 对建筑企业影响
  • 已开票未收款怎么报税
  • 出售交易性金融资产的投资收益
  • 非营利性代收代付费用会计处理怎么做?
  • 扣押属于纳税担保吗
  • 金蝶软件怎么设置会计科目
  • 增值税普通发票怎么开
  • 中国人民银行保险公司
  • 没有签订劳动合同员工离职怎么处理
  • 发票验旧后可领新发票吗
  • 印花税资金账簿减免税优惠政策2021
  • 财务软件里凭证打印如何设置不打印三级科目
  • 商业承兑到期兑不出来多久的追诉期
  • 零申报工会经费滞纳金怎么算
  • 应如何做会计分录表
  • 在建工程人工费会计分录
  • 增值税补开发票
  • 硬盘分区的原则主要有哪些
  • bios报警声是怎样的
  • php中数组的常用函数及用法
  • hpcfont.dll
  • 成本结转的科目
  • 对外长期投资会计分录
  • 巴伐利亚州地图
  • vue 获取当前url
  • 2023前端面试题pdf
  • php设计模式及使用场景
  • lstm crf
  • laravel enum
  • 对方代垫保险费算不算入账价值
  • python绘制散点图的函数
  • 外购存货的成本包括哪些内容
  • ps里的钢笔工具
  • 保教费属于什么收入
  • 如何隐藏应用软件华为
  • 小企业会计准则没有以前年度损益调整科目
  • 专项资金支出流程
  • 支付水费委托收款
  • 记账凭证应具备的基本内容包括
  • 股东收到投资收益会计科目
  • 基本户收到款不入账
  • 商铺固定设施指哪些
  • 作废的发票也要交印花税吗
  • 增值税退税是否算主营业务收入
  • 亏损企业所得税汇算清缴后调减
  • 营改增后的增值税税目税率表
  • 农产品加计扣除1%怎么计算和会计分录
  • 弃置费用摊销为什么在贷方增加
  • 增值税普票遗失可以补开吗
  • 分配间接成本的计算公式
  • 固定资产如何管理
  • 支票取钱不是本人要带什么
  • mysql查询语句菜鸟教程
  • mysql5.5安装配置教程
  • centos安装编译环境
  • win8.1关机
  • centos安装后配置
  • win7 更新
  • 盗版win7升级win10
  • win8怎么禁止弹窗
  • perl 排序
  • vue cli mock
  • listview item
  • javascript要怎么学
  • PreferenceActivity与PreferenceFragment应用
  • js做运算
  • jquery fullpage
  • 国税局宁夏税务
  • 企业注销结果查询
  • 娱乐圈的收入高得离谱
  • 地税局跟税务局有什么区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设