Android WiFi子系统深度解析:初始化、连接与WPS流程
需积分: 10 195 浏览量
更新于2024-09-09
1
收藏 163KB DOC 举报
"这篇文档是关于Android WiFi子系统的学习总结,涵盖了从系统初始化到连接AP,查找AP,配置AP以及分配IP的整个流程,并重点介绍了WPS(Wi-Fi Protected Setup)流程。文中还提到了与WiFi硬件抽象层(HAL)以及wpa_supplicant的交互,同时提供了大量的测试分析代码用于跟踪调试。"
Android WiFi子系统是Android操作系统中的一个重要组成部分,它负责处理无线网络的连接和管理。以下是对WiFi流程的详细说明:
**初始化**
初始化阶段主要由SystemServer中的ConnectivityService开始,它在构造函数中启动WPS(Wi-Fi Protected Setup)并创建WifiMonitor来监控网络事件。WifiTracker通过WifiMonitor接收wait_for_event返回的事件,而WifiService则负责启动或关闭WPS,并向WPS发送控制命令。
**连接AP**
当用户尝试连接到一个AP(接入点)时,这个过程通常由wifisetting发起,通过AIDL调用wifiservice的setwifienable方法。这会触发加载启动WPS,启动Monitor等一系列操作。
**查找AP**
查找AP是通过调用Wifiservice的StartScan方法发起SCAN命令,然后等待wait_for_event返回扫描结果。一旦扫描完成,发现的AP信息将被返回给调用者。
**配置AP**
配置AP首先检查Wifiservice的LIST_NETWORK,看是否已存在相同的网络配置。如果不存在,就通过ADD_NETWORK添加新的网络配置,并获取对应的网络ID。接着,通过ENABLE_NETWORK启用网络,WPS开始尝试连接到指定的AP。
**分配IP**
当WPS成功连接到AP后,WifiMonitor会监听到该事件,并调用wifiStateTacker的notifyStateChange。接着,发送EVENT_DHCP_START广播启动DHCP服务,以便从AP处获取IP地址和其他网络配置。
**WPS流程**
WPS是一个简化Wi-Fi设备设置的机制,它通过一个中间件与WiFiHAL层交互。中间件向上通过socket与HAL通信,处理wifi_cmd操作和event事件的返回;向下通过netlink与驱动程序交互,根据命令操作驱动并接收事件;同时,它还负责密码认证。
WiFiHAL层是Android与无线网卡驱动之间的接口,通过wpa_cli操作接口(本地socket封装)与WPS进行交互。WPS内部使用eloop机制来处理与上层和驱动的交互。
总结来说,Android WiFi子系统是一个复杂的网络管理框架,涉及多个层次的交互,从应用程序层的设置指令,到WiFi服务的处理,再到硬件驱动的通信,最后实现网络连接和配置。深入理解这一流程对于Android开发者尤其是无线网络相关的开发者至关重要。
2018-09-30 上传
2021-09-27 上传
2021-10-19 上传
2021-10-11 上传
2022-11-26 上传
2022-11-26 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
East0000000、
- 粉丝: 28
- 资源: 80
最新资源
- 分析新棒球的物理结构及其与进攻统计数据增加的关系matlab代码.zip
- ListView保持在列表的顶部固定View 案例分析 源码(实用1).zip
- 死亡细胞MOD.zip
- Python电影智能推荐之Apriori算法(推荐)
- 语音朗读-语音识别Android源代码.zip
- fullstack-resources:很棒的全栈学习资源的资料库
- libiec61850-1.2.1.tar.gz_嵌入式Linux_C/C++_
- class_java_源码.rar.rar
- API-coffee:自助餐厅中用于管理产品的API
- MysqlReplicationClient
- 截图工具,办公必备,程序员必选
- 中国研究生数学建模大赛二等奖.zip
- asset:快速构建简单的ops资源管理系统的方法,请勿使用excel
- arv:与框架无关的UI库,与任何框架相同的ui套件
- 在Matlab的Simulink仿真环境,使用buck电路实现降压。.zip
- Python库 | aws_cdk.aws_gamelift-1.18.0-py3-none-any.whl