位置: 编程技术 - 正文

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

  • 土地取得方式有哪些
  • 销售服务增值税税率
  • 何谓运输,交通和交通运输
  • 减免附加税怎么填报
  • 电子发票和纸质发票只能二选一吗
  • 收企业利息如何做账
  • 办理企业所得税退税
  • 普通发票与增值税发票的图片
  • 现金长短款的一般处理
  • 外汇税收怎么缴纳增值税
  • 汇算清缴期间费用社保填哪里
  • 其他业务收入的核算内容
  • 应付职工薪酬明细账模板
  • 审计人员用餐费用
  • 支票结算方式下用其他货币资金账户
  • 积分兑换的话费在使用后不再累计消费积分是什么意思
  • 联想笔记本bios密码忘记了
  • vmware10虚拟机安装
  • 苹果客服人工24小时
  • 物业公司预收款增值税纳税义务发生时间
  • 怎么提升电脑速度
  • php include path
  • 计提房产税会计分录怎么做账
  • php7.0新特性
  • 存货需要计算填列吗
  • cvg模型
  • 第十章光结局和夜结局
  • oc底层原理
  • php使用curl
  • 油票上没有公司名称可以报么
  • 织梦添加文章如何修改高级参数
  • spring 门面模式
  • 抽烟罚款会计分录
  • db2 deadlock
  • wordpress防盗链
  • 合同补充协议印花税怎么交
  • 如何处理预付和预付差异
  • 编制利润表计算公式
  • 合作社分红计入什么科目
  • 税控系统技术维护费全额抵扣分录
  • 小规模纳税人的增值税怎么算
  • 错账原因有哪些类型
  • 专项资金会计和税务处理差异
  • 销售费用专票能抵扣吗
  • 不能抵扣的普通发票如何做分录
  • 应付账款冲减会计分录
  • 在建工程如何转固
  • 基本户转到一般户用途写什么
  • 处置子公司如何合并
  • 技术服务费计入主营业务成本
  • 房产税计入管理费还是税金及附加
  • 维修费收入怎么结转销售成本
  • 预交了增值税款可以退吗
  • 公司加班的餐费怎么算
  • 应收票据贷方余额
  • 收到劳务费发票如何申报个税
  • 农村会计做什么工作好
  • 残疾人保障金必须交吗
  • mysql服务自动停止运行
  • mysql 5.7.32
  • cmos开机密码的清除的二种方法
  • win8.1 升级
  • win7电脑显示屏显示不全怎么调整
  • windows7凭据管理器
  • js array数组
  • ant编译工具
  • Node.js中的事件循环是什么意思
  • Unity3D中ScreenPointToRay函数的分析-个人见解
  • linux sleep 2
  • jquery获取当前对象
  • easyui导出excel表格
  • 从零基础开始学
  • javascript前端开发案例教程课后答案
  • 从最近两会看苹果和谷歌的最大梦魇
  • jquery删除对象
  • 济南税务局投诉电话
  • 国内免费机场
  • 福州房管局网签查询
  • 申报土地增值税需要什么资料
  • 工商注册app是不是在手机上可以完全操作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设