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的流程 
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章