WPA_Supplicant

Android 7.0 WifiMonitor工作流程分析

十年热恋 提交于 2020-03-01 09:21:51
在wifi启动扫描的分析过程中,出现了多次WifiMonitor的操作,在此分析一下这个函数是如何工作的。 在Android的Wifi体系中,WifiMonitor承担着分发来自wpa_supplicant底层事件的任务。当上层下达Wifi的扫描、连接等指令后, 底层驱动以及wpa_s进行实际的扫描、连接操作,操作完成后会向上层反馈一个event,通知framework扫描是否结束、连接是否成功。 1.WifiMonitor的初始化 在WifiStateMachine的构造函数中获取WifiMonitor的实例,并且在WifiStateMachine的构造函数中注册了一系列的handler。 从启动扫描流程中可知,在启动过程中会调用startMonitoring(),开始监听从底层上报的消息。 2.startMonitoring() 为了监听wpa_supplicant的事件,需要先建立与wpa_s的消息通道,这一步调用WifiNative.connectToSupplicant()实现。 如果是第一次进行监听mConnected为false,进入else分支。先建立与wpa_s的消息通道,建立成功后会向WifiStateMachine发送SUP_CONNECTION_EVENT消息,通知Wifi状态机。随后,开启事件监听线程:new MonitorThread

android中wifi原理及流程分析(很经典)

雨燕双飞 提交于 2019-12-02 20:14:22
在网上找的一篇好文章,分析的很详细,自己再加了些东西,图片有点大,不能完全显示,点击图像拖动鼠标直接查看图像。 wifi相关的文件位置: WIFI Settings应用程序位于 packages/apps/Settings/src/com/android/settings/wifi/ JAVA部分: frameworks/base/services/java/com/android/server/ frameworks/base/wifi/java/android/net/wifi/ JNI部分: frameworks/base/core/jni/android_net_wifi_Wifi.cpp wifi管理库。 hardware/libhardware_legary/wifi/ wifi用户空间的程序和库: external/wpa_supplicant/ 生成库libwpaclient.so和守护进程wpa_supplicant。 调用流程: wifi模块的初始化: (frameworks/base/services/java/com/android/server/SystemServer.Java) 在 SystemServer 启动的时候,会生成一个 ConnectivityService 的实例, class ServerThread extends Thread {