版权声明:本文为原博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gh201030460222/article/details/80717604
Android 8.0 wifi架构
1. Android 8.0 wifi差异
1)与其他Android版本相比,整体架构还来,就多了个wificond跟底层的通信,当然framework整个的修改,还是挺大的
2)wifi的scan、scan_results是通过wificond去跟kernel通信,不再通过wpa_supplicant了
3)wifi direct的p2p find还是通过wpa-supplicant通信
4)wifi的连接等相差操作,还是通过wpa_supplicant进行
2. Android 8.0 wifi的整体架构
3. wifi的相关流程
HIDL:
https://blog.csdn.net/gh201030460222/article/details/80551897
wifi scan flow:
https://blog.csdn.net/gh201030460222/article/details/80553645
wifi open flow:
https://blog.csdn.net/gh201030460222/article/details/80717386
wifi connect flow:
https://blog.csdn.net/gh201030460222/article/details/80717690
wifi p2p scan flow:
https://blog.csdn.net/gh201030460222/article/details/80717466
wifi p2p connect flow:
https://blog.csdn.net/gh201030460222/article/details/80717513
wifi p2p协议部分:
https://blog.csdn.net/gh201030460222/article/details/79872617
wifi hostap flow:
https://blog.csdn.net/gh201030460222/article/details/80717513
Android 8.0 wifi打开流程
8.0跟其他的版本区别,就是8.0重新加入了一个wificond的client,有点类型wpa_supplicant功能,以下是整个系统自动开机时,wifi的自动打开流程,以及从TvSettings上用户手动打开wifi的流程,最后UI显示的整个过程
以下是系统开机自动打开wifi,以及用户手动打开wifi的过程,详细的文字过程,以后有时间再补上了。。。
Android 8.0的scan流程
- 最近在查看android 8.0的相关代码,以下是8.0 scan的相关信息
Android O的scan跟之前Android版本存在的差异
1) 现在scan的命令不是通过wpa_supplicant下发到kernel,而是直接改由wificond传送到kernel,而scan results的结果也是直接由kernel传给wificond,再由wificond传送给上层去显示
2) 在framework层,现在scan改由scanner这个类去使用,之前从6.0开始慢慢用起来,现在到了8.0,可以说已经用了近95%了,剩下了目前google还在修改中,google的目标应该是想把scan整个完全独立出来,不跟其他的扯太大,例如WifiStateMachine
3) 目前上层下发的scan,已经改由SettingsLib去定时下,不交给apk去做了。
在android 8.0之前的版本,scan的定时扫描都是在上层app做的,但从8.0开始,google把这个定时器改到了framework中的SettingsLib(frameworks/base/packages/SettingsLib)中去了
如下为google人员对TvSettings所做的更改上的Commit
packages/apps/TvSettings/Settings/src/com/android/tv/settings/connectivity$ git log -p
commit 7e552863cea67e57b375f3db15e0baf70e22c39e
Author: Tony Mantler <nicoya@google.com>
Date: Fri Jan 8 11:12:49 2016 -0800
Start using WifiTracker/AccessPoint from SettingsLib
Change-Id: Ie951cdc5a3b2d3188dc1044df624a6d1a0efab74
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4) 之前的版本scan操作,当同一时间下两次scan时,是直接交由wpa_supplicant去隔开的,现在由于直接把scan下发给kernel。所以,google已经把上层下的scan跟framework的自动scan也实现了分离,不让这两种flow打到,让同一时间只下一次scan,后一次则做pending动作
以下是目前Android 8.0的scan流程,以及获取scan results的流程