WIFI学习之三:android wifi工作流程

转载 2012年03月23日 16:10:00

Wifi 网卡状态

1.    WIFI_STATE_DISABLED: WIFI网卡不可用

2.    WIFI_STATE_DISABLING: WIFI正在关闭

3.    WIFI_STATE_ENABLED:WIFI网卡可用

4.    WIFI_STATE_ENABLING:WIFI网卡正在打开

5.    WIFI_STATE_UNKNOWN:未知网卡状态

 

WIFI 访问网络需要的权限

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE">

</uses-permission>修改网络状态的权限

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE">

</uses-permission>修改WIFI状态的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">

</uses-permission>访问网络权限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE">

</uses-permission>访问WIFI权限

 

WIFI 核心模块

n  WifiService

由SystemServer启动的时候生成的ConnecttivityService创建,负责启动关闭wpa_supplicant,启动和关闭WifiMonitor线程,把命令下发给wpa_supplicant以及跟新WIFI的状态

n  WifiMonitor

  负责从wpa_supplicant接收事件通知

n  Wpa_supplicant

1、读取配置文件

2、初始化配置参数,驱动函数

3、让驱动scan当前所有的bssid

4、检查扫描的参数是否和用户设置的想否

5、如果相符,通知驱动进行权限 认证操作

6、连上AP

n  Wifi驱动模块

厂商提供的source,主要进行load firmware和kernel的wireless进行通信

n  Wifi电源管理模块

主要控制硬件的GPIO和上下电,让CPU和Wifi模组之间通过sdio接口通信

 

Wifi工作步骤

n  Wifi模块初期化

n  Wifi启动

n  查找热点(AP)

n  配置AP

n  配置AP参数

n  Wifi连接

n  IP地址配置

 

Wifi模块代码总结

n  Wifi Application代码

packages/apps/Settings/src/com/android/settings/wifi

n  Wifi Framework

frameworks/base/wifi/java/android/net/wifi

frameworks/base/services/java/com/android/server

n  Wifi JNI

frameworks/base/core/jni/android_net_wifi_Wifi.cpp

n  Wifi Hardware

hardware/libhardware_legacy/wifi/wifi.c

n  Wifi tool

external/wpa_supplicant

n  Wifi kernel

net/wireless     drivers/wlan_sd8688       arch/arm/mach-pxa/wlan_pm.c

 

Wifi模块的初始化:

在 SystemServer 启动的时候,会生成一个ConnectivityService 的实例, ConnectivityService 的构造函数会创建WifiService,WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心。WifiService 负责启动关闭wpa_supplicant、启动关闭WifiMonitor 监视线程和把命令下发给wpa_supplicant,而WifiMonitor 则负责从wpa_supplicant 接收事件通知。

 

Wifi模块的启动:

WirelessSettings 在初始化的时候配置了由WifiEnabler 来处理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 中的监视线程。

 

查找热点(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地址的配置:

 

 

wifi介绍及其简单工作流程

1, WIFI 介绍 Wi-Fi(WirelessFidelity),即无线保真,与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。 该技术使用的使2.4GHz附近的频段,该...
  • justmeloo
  • justmeloo
  • 2014年09月26日 14:31
  • 647

Android WiFi框架学习--打开WiFi

android wifi开启过程中,从Application到wpa_supplicant层的介绍。
  • gaopo_Y
  • gaopo_Y
  • 2013年08月28日 15:21
  • 4353

wifi学习总结

1WLAN技术 3 2802.11协议简述 3 2.1.1概述 3 3802.11四种主要物理组件 4 3.1工作站(Station) 4 3.2接入点(AccessPoint) 5 3.3无线媒...
  • u011006622
  • u011006622
  • 2015年09月15日 11:11
  • 2763

WIFI从零开始学起 -- 基本内容

开始学习WIFI相关内容,目前只了解一点WIFI 的相关名字和概念,对其实现和相关标准的了解基本为零,所以可以认为是从零学起。由于上年龄易忘事,所以强迫记录之。 一、WIFI工作的几种模式:...
  • perddy
  • perddy
  • 2013年06月03日 23:45
  • 8686

我的一些学习经验:WIFI

从接触WIFI到现在,才几个月左右时间,期间又不断穿插其它事务,不过总算学了点东西。本文记录一下学习WIFI的过程。...
  • subfate
  • subfate
  • 2016年10月16日 14:17
  • 395

android wifi工作流程

http://blog.csdn.net/sshhbb/article/details/6817272 Wifi 网卡状态 1.    WIFI_STATE_DISABLED: WIF...
  • zangchaodotcnatgmail
  • zangchaodotcnatgmail
  • 2013年09月03日 11:09
  • 498

wifi通信过程的研究--(1)Wifi基本属性介绍

一、 Wifi基本属性介绍 (一)、WLAN WLAN是Wireless LAN(无线局域网)的简称,基于IP的的通信,能提供一定范围内的高速数据连接,一般采用2.4GHz或5.8GHz无线频段(...
  • djd1234567
  • djd1234567
  • 2015年04月28日 14:48
  • 1694

android wifi 工作流程

Wifi 网卡状态 1.    WIFI_STATE_DISABLED: WIFI网卡不可用 2.    WIFI_STATE_DISABLING: WIFI正在关闭 3.    W...
  • menuconfig_men
  • menuconfig_men
  • 2012年09月11日 11:09
  • 739

Android Wifi的工作流程

Wifi 网卡状态 1.    WIFI_STATE_DISABLED: WIFI网卡不可用 2.    WIFI_STATE_DISABLING: WIFI正在关闭 3.    WIFI_STATE...
  • ruan200885
  • ruan200885
  • 2013年11月06日 15:41
  • 416

wifi学习记录

/external/wpa_supplicant_8/wpa_supplicant/ctrl_iface.c 该类是底层用于对接上层com.android.server.wifi.WifiNative...
  • u013405006
  • u013405006
  • 2016年12月29日 14:32
  • 291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WIFI学习之三:android wifi工作流程
举报原因:
原因补充:

(最多只允许输入30个字)