我自己的比较全的wifi流程分析Word格式文档下载.doc
- 文档编号:13168288
- 上传时间:2022-10-07
- 格式:DOC
- 页数:6
- 大小:974.50KB
我自己的比较全的wifi流程分析Word格式文档下载.doc
《我自己的比较全的wifi流程分析Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《我自己的比较全的wifi流程分析Word格式文档下载.doc(6页珍藏版)》请在冰豆网上搜索。
Wi-Fi系统总是对用户端开放其连接标准,并支援漫游,这就是Wi-Fi的好处。
但亦意味着,一个无线适配器有可能在性能上优于其他的适配器。
由于Wi-Fi通过空气传送信号,所以和非交换以太网有相同的特点。
近两年,出现一种WIFIovercable的新方案。
此方案属于EOC(ethernetovercable)中的一种技术。
通过将2.4Gwifi射频降频后在cable中传输。
此种方案已经在中国大陆小范围内试商用。
二:
Wifi模块的初始化:
:
在SystemServer启动的时候,会生成一个ConnectivityService的实例,
try{
Log.i(TAG,"
StartingConnectivityService."
);
ServiceManager.addService(Context.CONNECTIVITY_SERVICE,new
ConnectivityService(context));
}catch(Throwablee){
Log.e(TAG,"
FailurestartingConnectivityService"
e);
}
ConnectivityService的构造函数会创建WifiService,
if(DBG)Log.v(TAG,"
StartingWifiService."
mWifiStateTracker=newWifiStateTracker(context,handler);
WifiServicewifiService=newWifiService(context,mWifiStateTracker);
ServiceManager.addService(Context.WIFI_SERVICE,wifiService);
WifiStateTracker会创建WifiMonitor接收来自底层的事件,WifiService和WifiMonitor是整
个模块的核心。
WifiService负责启动关闭wpa_supplicant、启动关闭WifiMonitor监视线程
和把命令下发给wpa_supplicant,而WifiMonitor则负责从wpa_supplicant接收事件通知。
具体流程图如下:
第三部分:
Wifi模块的启动(使能)
WirelessSettings在初始化的时候配置了由WifiEnabler来处理Wifi按钮,
privatevoidinitToggles(){
mWifiEnabler=newWifiEnabler(this,
(WifiManager)getSystemService(WIFI_SERVICE),
(CheckBoxPreference)findPreference(KEY_TOGGLE_WIFI));
当用户按下Wifi按钮后,Android会调用WifiEnabler的onPreferenceChange,再由WifiEnabler
调用WifiManager的setWifiEnabled接口函数,通过AIDL,实际调用的是WifiService的
setWifiEnabled函数,WifiService接着向自身发送一条MESSAGE_ENABLE_WIFI消息,在
处理该消息的代码中做真正的使能工作:
首先装载WIFI内核模块(该模块的位置硬编码为
"
/system/lib/modules/wlan.ko"
),然后启动wpa_supplicant(配置文件硬编码为
/data/misc/wifi/wpa_supplicant.conf"
),再通过WifiStateTracker来启动WifiMonitor中的监视
线程。
privatebooleansetWifiEnabledBlocking(booleanenable){
finalinteventualWifiState=enable?
WIFI_STATE_ENABLED:
WIFI_STATE_DISABLED;
updateWifiState(enable?
WIFI_STATE_ENABLING:
WIFI_STATE_DISABLING);
if(enable){
if(!
WifiNative.loadDriver()){
Log.e(TAG,"
FailedtoloadWi-Fidriver."
updateWifiState(WIFI_STATE_UNKNOWN);
returnfalse;
}
WifiNative.startSupplicant()){
WifiNative.unloadDriver();
Failedtostartsupplicantdaemon."
mWifiStateTracker.startEventLoop();
//Success!
persistWifiEnabled(enable);
updateWifiState(eventualWifiState);
returntrue;
当使能成功后,会广播发送WIFI_STATE_CHANGED_ACTION这个Intent通知外界WIFI
已经成功使能了。
WifiEnabler创建的时候就会向Android注册接收
WIFI_STATE_CHANGED_ACTION,因此它会收到该Intent,从而开始扫描。
privatevoidhandleWifiStateChanged(intwifiState){
if(wifiState==WIFI_STATE_ENABLED){
loadConfiguredAccessPoints();
attemptScan();
具体流程如下流程图所示:
第四部分:
查找热点(AP)
上一节(第三部分:
Wifi开启)中讲到Wifi模块开启后会对外发送WIFI_STATE_CHANGED_ACTION。
WifiLayer中注册了Action的Receiver。
当WifiLayer收到此Action后开始scan的流程,具体如下:
当wpa_supplicant处理完SCAN命令后,它会向控制通道发送事件通知扫描完成,从wifi_wait_for_event函数会接收到该事件,由此WifiMonitor中的MonitorThread会被执行来出来这个事件:
第五部分:
配置AP参数
当用户在WifiSettings界面上选择了一个AP后,会显示配置AP参数的一个对话框:
第六部分:
Wifi连接
具体流程参见以下流程图:
第七部分:
IP地址的配置
流程如图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自己 比较 wifi 流程 分析