diff options
author | Ningyuan Wang <nywang@google.com> | 2017-08-09 23:05:10 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-08-09 23:05:10 +0000 |
commit | 72019f1d6afbd98efdd0d9feb54d0e2e43aff111 (patch) | |
tree | cf2d4ce999699cf27f130661959a13a11f15a4b6 /service | |
parent | 7c1d8685a863b53995be056a3a5a334306fe39d8 (diff) | |
parent | 5a19b6b8f6b4a123371c6a2023a96e9d4f8d6aac (diff) |
Merge "Update frequency of WifiInfo upon connection or roam" into oc-dr1-dev
am: 5a19b6b8f6
Change-Id: Ia29839b9c739cc0cd3e4160d0ceb222fef4b8e46
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/ScanDetailCache.java | 16 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/WifiStateMachine.java | 23 |
2 files changed, 36 insertions, 3 deletions
diff --git a/service/java/com/android/server/wifi/ScanDetailCache.java b/service/java/com/android/server/wifi/ScanDetailCache.java index a65137935..3b69a641b 100644 --- a/service/java/com/android/server/wifi/ScanDetailCache.java +++ b/service/java/com/android/server/wifi/ScanDetailCache.java @@ -67,12 +67,24 @@ public class ScanDetailCache { mMap.put(scanDetail.getBSSIDString(), scanDetail); } - ScanResult get(String bssid) { + /** + * Get ScanResult object corresponding to the provided BSSID. + * + * @param bssid provided BSSID + * @return {@code null} if no match ScanResult is found. + */ + public ScanResult get(String bssid) { ScanDetail scanDetail = getScanDetail(bssid); return scanDetail == null ? null : scanDetail.getScanResult(); } - ScanDetail getScanDetail(String bssid) { + /** + * Get ScanDetail object corresponding to the provided BSSID. + * + * @param bssid provided BSSID + * @return {@code null} if no match ScanDetail is found. + */ + public ScanDetail getScanDetail(String bssid) { return mMap.get(bssid); } diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index 608daa383..ce9c09432 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -3275,6 +3275,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss if (scanDetailCache != null) { ScanDetail scanDetail = scanDetailCache.getScanDetail(stateChangeResult.BSSID); if (scanDetail != null) { + mWifiInfo.setFrequency(scanDetail.getScanResult().frequency); NetworkDetail networkDetail = scanDetail.getNetworkDetail(); if (networkDetail != null && networkDetail.getAnt() == NetworkDetail.Ant.ChargeablePublic) { @@ -5414,6 +5415,15 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss if (config != null) { mWifiInfo.setBSSID(mLastBssid); mWifiInfo.setNetworkId(mLastNetworkId); + + ScanDetailCache scanDetailCache = + mWifiConfigManager.getScanDetailCacheForNetwork(config.networkId); + if (scanDetailCache != null && mLastBssid != null) { + ScanResult scanResult = scanDetailCache.get(mLastBssid); + if (scanResult != null) { + mWifiInfo.setFrequency(scanResult.frequency); + } + } mWifiConnectivityManager.trackBssid(mLastBssid, true, reasonCode); // We need to get the updated pseudonym from supplicant for EAP-SIM/AKA/AKA' if (config.enterpriseConfig != null @@ -5956,7 +5966,18 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss mLastBssid = (String) message.obj; if (mLastBssid != null && (mWifiInfo.getBSSID() == null || !mLastBssid.equals(mWifiInfo.getBSSID()))) { - mWifiInfo.setBSSID((String) message.obj); + mWifiInfo.setBSSID(mLastBssid); + WifiConfiguration config = getCurrentWifiConfiguration(); + if (config != null) { + ScanDetailCache scanDetailCache = mWifiConfigManager + .getScanDetailCacheForNetwork(config.networkId); + if (scanDetailCache != null) { + ScanResult scanResult = scanDetailCache.get(mLastBssid); + if (scanResult != null) { + mWifiInfo.setFrequency(scanResult.frequency); + } + } + } sendNetworkStateChangeBroadcast(mLastBssid); } break; |