本文基于Android 4.2.2+Linux3.6.9+SAMA5D3 SoC从源代码的角度审视Android Wifi子系统

软件平台:Linux3.6.9 + Android 4.2.2

硬件平台:Atmel SAMA5

Wifi模组:RTL8723AU(USB接口)

Android的WiFi子系统自上而下包括如下一些内容:

Android Wifi子系统源代码View_第1张图片

应用层

Androd系统自带Settings应用

/system/app/Settings.apk

http://androidxref.com/4.2.2_r1/xref/packages/apps/Settings/src/com/android/settings/wifi/

Java应用框架层

/system/framework/framework.jar

android.net.wifi

http://androidxref.com/4.2.2_r1/xref/frameworks/base/wifi/java/android/net/wifi/

关键类:

WifiManager

WifiNative

WiFiManger是WiFi部分与外界的接口,用户通过它来访问WiFi的核心功能。

WifiNative 将为 WifiService WifiStateTracker和 WifiMonitor 等几个 WiFi 框架内部组件提供底层操作支持。


Wifi服务

/system/framework/services.jar

http://androidxref.com/4.2.2_r1/xref/frameworks/base/services/java/com/android/server/WifiService.java

关键类:

WifiService

WiFi系统Java层的核心是根据IWifiManger接口所创建的Binder服务器端和客户端,服务器端是WifiService,客户端是WifiManger,WifiManager与WifiService之间通过Binder机制进行通信。


JNI

/system/lib/libandroid_runtime.so

Java类WifiNative的本地JNI实现

http://androidxref.com/4.2.2_r1/xref/frameworks/base/core/jni/android_net_wifi_Wifi.cpp

wpa_supplicant适配层

/system/lib/libhardware_legacy.so

http://androidxref.com/4.2.2_r1/xref/hardware/libhardware_legacy/include/hardware_legacy/wifi.h

http://androidxref.com/4.2.2_r1/xref/hardware/libhardware_legacy/wifi/wifi.c


wpa_supplicant客户端库

/system/lib/libwpa_client.so

http://androidxref.com/4.2.2_r1/xref/external/wpa_supplicant_8/

libwpa_client.so是一个给客户端调用的库,用于和wpa_supplicant守护进程进行通信。


wpa_supplicant守护进程

/system/bin/wpa_supplicant

http://androidxref.com/4.2.2_r1/xref/external/wpa_supplicant_8/

wpa_supplicant是一个开源项目,已经被移植到Linux,Windows以及很多嵌入式系统上。它是WPA的应用层认证客户端,负责完成认证相关的登录、加密等工作。

wpa_supplicant是一个独立运行的守护进程,其核心是一个消息循环,在消息循环中处理WPA状态机、控制命令、驱动事件、配置信息等。wpa_supplicant有很多控制接口,也提供命令行和通行界面的控制模式。wpa_supplicant适配层与wpa_supplicant之间通过unix domain socket机制进行通信。

Wifi驱动

/system/lib/modules/wlan.ko

https://github.com/Android4SAM/platform_hardware_realtek/tree/master/cm8723u/wlan/rtl8723A_WiFi_linux_v4.1.3_6044.20121224





更多相关文章

  1. struts2中获取request、response,与android客户端进行交互
  2. 基于Apache mina 的android 客户端tcp长连接实现
  3. haproxy根据客户端浏览器进行跳转
  4. 【安卓笔记】android客户端与服务端交互的三种方式
  5. android手机客户端上传文件,java servlet服务器端接收并保存到服
  6. Android仿优酷客户端图片左右滑动(自动滑动)
  7. android客户端加密代码
  8. Android作为CXF客户端调用服务端。
  9. Android客户端与服务端交互-客户端GET方式登录和客户端POST方式

随机推荐

  1. Flutter(环境搭建-Android视角)
  2. android硬编码h264-MediaCodec
  3. 1. 2 Textview 及其子类
  4. Android 多媒体应用——MediaPlayer音频
  5. Android Intent实现页面跳转的方法示例
  6. Android(安卓)组件系列之Activity的传值
  7. android之逐帧动画
  8. Android(安卓)Shape控件美化实现代码
  9. android ListView Item和CheckBox、Butto
  10. Android评分控件RatingBar使用实例解析