Android 8.0的WIFI 架构差异分析

版权声明:本文为原博主原创文章,未经博主允许不得转载。 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的流程 
这里写图片描述

Android 8.0 wifi连接流程

wifi整体的framework改动还是挺大的, 
WifiStateMachine就改动了,如下。后续再把各版本的变化贴出来 
这里写图片描述

8.0 wifi的连接过程如下: 
这里写图片描述



版权声明:本文为原博主原创文章,未经博主允许不得转载。 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的流程 
这里写图片描述

猜你喜欢

转载自blog.csdn.net/andytian1991/article/details/80829062
今日推荐