summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorNingyuan Wang <nywang@google.com>2017-08-09 23:05:10 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-08-09 23:05:10 +0000
commit72019f1d6afbd98efdd0d9feb54d0e2e43aff111 (patch)
treecf2d4ce999699cf27f130661959a13a11f15a4b6 /service
parent7c1d8685a863b53995be056a3a5a334306fe39d8 (diff)
parent5a19b6b8f6b4a123371c6a2023a96e9d4f8d6aac (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.java16
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java23
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;