位置: 编程技术 - 正文

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

  • 个体户定额超了怎么收费
  • 增值税查询校验码是什么
  • 已经抵扣的进项税额转出怎么申报
  • 新政府会计制度衔接预算会计需做好的账目清理工作有
  • u盘算固态吗
  • 税务申报有什么技巧
  • 社保公司部分交多少比例
  • 项目转包是什么意思
  • 企业不得将生产经营项目、场所
  • 出纳工作的七大技巧
  • 房地产开发项目手册备案
  • 收到微信公众号退款怎么做账
  • 企业如何认定
  • 购买股权支付的相关税费怎么处理
  • 预缴企业所得税税率
  • 浅析税收滞纳金问题的政策法规
  • 企业所得税季报是填累计数吗
  • 高危行业企业要设置什么机构
  • 银行收取年费是什么意思
  • 新注册公司什么时候报个税
  • 主营业务成本怎么算出来的
  • 增值税申报表中期初未缴税额指什么
  • 企业支付工商年费怎么查
  • macos monterey值得安装吗
  • 劳务派遣公司的作用
  • 三证合一后的税务登记证查询方法
  • macqq怎么查看删除好友
  • 如何更改文件的创建时间
  • linux模块的概念
  • win11安装不显示wifi
  • 将自产的应税消费品用于非应税项目
  • 银行对公账户收款码手续费多少
  • 跨期发票怎么作废
  • linux标准文件和链接文件
  • 公众号 隐藏文章
  • 化妆品与药品
  • 老板垫付的员工怎么入账
  • chart.js教程
  • 东洛锡安的金黄麦田,苏格兰 (© Scott Masterton/plainpicture)
  • 高新技术企业研发费比例
  • 房租违约金怎么开发票
  • 预收账款和应收账款的账务处理
  • web自动化selenium实战项目
  • 路由vue-router
  • php搜索功能怎么实现
  • php功能实现
  • 个人所得税生产经营所得B表
  • 电梯销售公司利润
  • 织梦系统基本参数
  • sql防御
  • 账面成本与账面余额
  • 金税四期的基本理念
  • 销售使用过的固定资产怎么填申报表
  • 房屋租赁合同印花税计税依据
  • 长期债券是长期借款吗
  • 材料抵扣进项税额
  • 发票开票服务名称
  • 存货总账根据什么填列
  • 会计凭证是对外公布的资料吗
  • 使用 GUID 值来作为数据库行标识讲解
  • 10分钟学会
  • linux介绍视频
  • ubuntu12.04.5安装教程
  • 查看端口信息命令
  • 如何关闭office开机自启动
  • ISBMgr.exe - ISBMgr是什么进程 有什么作用
  • Win10 Mobile Build 10586.xx将持续更新 WP8.1用户可直升最新版
  • Linux Shell 通配符、元字符、转义符使用实例介绍
  • win10如何彻底关掉自动锁屏
  • win7系统c盘占用空间大
  • opengl怎么学
  • python 入门
  • javascript教程代码
  • android的中文
  • 企业所得税税率10%
  • 江苏省国家税务局电话号码
  • 云南发票网站
  • 车辆购置税如何入账
  • 建筑施工及安装单位企业在异地
  • 什么是党建工作一体化
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设