diff options
author | Randy Pan <zpan@google.com> | 2016-10-06 19:10:39 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-10-06 19:10:39 +0000 |
commit | 407b67dabe82aa6aa2b7ea56d4b2708af8cd31de (patch) | |
tree | 4ebe8d3f4aefbfe0b3b745e59eae19f9d32f52e8 /service | |
parent | ef6e06d0eebfa3bc6cfbe719af2cd2f21f3d912f (diff) | |
parent | c168540bd2c0368489f8574db23380a050cd0ae4 (diff) |
Move WifiNetworkSelector to WifiInjector am: 2dfadf313b
am: c168540bd2
Change-Id: I084ad68ef855de68a614fef435faa1b9894bb9e1
Diffstat (limited to 'service')
4 files changed, 30 insertions, 30 deletions
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java index 9386bb304..bd64e114e 100644 --- a/service/java/com/android/server/wifi/WifiConnectivityManager.java +++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java @@ -229,7 +229,7 @@ public class WifiConnectivityManager { localLog(listenerName + " onResults: start network selection"); WifiConfiguration candidate = - mNetworkSelector.selectNetwork(scanDetails, + mNetworkSelector.selectNetwork(scanDetails, mWifiInfo, mStateMachine.isConnected(), mStateMachine.isDisconnected(), mUntrustedConnectionAllowed); mWifiLastResortWatchdog.updateAvailableNetworks( diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java index 53e089d56..711c03b54 100644 --- a/service/java/com/android/server/wifi/WifiInjector.java +++ b/service/java/com/android/server/wifi/WifiInjector.java @@ -83,6 +83,7 @@ public class WifiInjector { private final IpConfigStore mIpConfigStore; private final WifiConfigStoreLegacy mWifiConfigStoreLegacy; private final WifiConfigManager mWifiConfigManager; + private final WifiNetworkSelector mWifiNetworkSelector; private WifiScanner mWifiScanner; private final boolean mUseRealLogger; @@ -139,6 +140,7 @@ public class WifiInjector { mWifiConfigManager = new WifiConfigManager(mContext, mFrameworkFacade, mClock, UserManager.get(mContext), TelephonyManager.from(mContext), mWifiKeyStore, mWifiConfigStore, mWifiConfigStoreLegacy); + mWifiNetworkSelector = new WifiNetworkSelector(mContext, mWifiConfigManager, mClock); mWifiStateMachine = new WifiStateMachine(mContext, mFrameworkFacade, mWifiStateMachineHandlerThread.getLooper(), UserManager.get(mContext), @@ -322,4 +324,11 @@ public class WifiInjector { } return mWifiScanner; } + + /** + * Obtain an instance of WifiNetworkSelector. + */ + public WifiNetworkSelector getWifiNetworkSelector() { + return mWifiNetworkSelector; + } } diff --git a/service/java/com/android/server/wifi/WifiNetworkSelector.java b/service/java/com/android/server/wifi/WifiNetworkSelector.java index fec10eec7..9f19b32d7 100644 --- a/service/java/com/android/server/wifi/WifiNetworkSelector.java +++ b/service/java/com/android/server/wifi/WifiNetworkSelector.java @@ -56,10 +56,7 @@ public class WifiNetworkSelector { public static final int BSSID_BLACKLIST_EXPIRE_TIME_MS = 5 * 60 * 1000; private WifiConfigManager mWifiConfigManager; - private WifiInfo mWifiInfo; private Clock mClock; - private WifiConfiguration mCurrentNetwork = null; - private String mCurrentBssid = null; private static class BssidBlacklistStatus { // Number of times this BSSID has been rejected for association. public int counter; @@ -152,7 +149,10 @@ public class WifiNetworkSelector { mLocalLog.log(log); } - private boolean isCurrentNetworkSufficient(WifiConfiguration network) { + private boolean isCurrentNetworkSufficient(WifiInfo wifiInfo) { + WifiConfiguration network = + mWifiConfigManager.getConfiguredNetwork(wifiInfo.getNetworkId()); + // Currently connected? if (network == null) { localLog("No current connected network."); @@ -175,16 +175,16 @@ public class WifiNetworkSelector { } // 2.4GHz networks is not qualified. - if (mWifiInfo.is24GHz()) { + if (wifiInfo.is24GHz()) { localLog("Current network is 2.4GHz."); return false; } // Is the current network's singnal strength qualified? It can only // be a 5GHz network if we reach here. - int currentRssi = mWifiInfo.getRssi(); - if (mWifiInfo.is5GHz() && currentRssi < mThresholdQualifiedRssi5) { - localLog("Current network band=" + (mWifiInfo.is5GHz() ? "5GHz" : "2.4GHz") + int currentRssi = wifiInfo.getRssi(); + if (wifiInfo.is5GHz() && currentRssi < mThresholdQualifiedRssi5) { + localLog("Current network band=" + (wifiInfo.is5GHz() ? "5GHz" : "2.4GHz") + ", RSSI[" + currentRssi + "]-acceptable but not qualified."); return false; } @@ -192,7 +192,7 @@ public class WifiNetworkSelector { return true; } - private boolean isNetworkSelectionNeeded(List<ScanDetail> scanDetails, + private boolean isNetworkSelectionNeeded(List<ScanDetail> scanDetails, WifiInfo wifiInfo, boolean connected, boolean disconnected) { if (scanDetails.size() == 0) { localLog("Empty connectivity scan results. Skip network selection."); @@ -218,15 +218,15 @@ public class WifiNetworkSelector { } } - if (isCurrentNetworkSufficient(mCurrentNetwork)) { + if (isCurrentNetworkSufficient(wifiInfo)) { localLog("Current connected network already sufficient. Skip network selection."); return false; } else { localLog("Current connected network is not sufficient."); + return true; } } else if (disconnected) { - mCurrentNetwork = null; - mCurrentBssid = null; + return true; } else { // No network selection if WifiStateMachine is in a state other than // CONNECTED or DISCONNECTED. @@ -234,8 +234,6 @@ public class WifiNetworkSelector { + " Skip network selection."); return false; } - - return true; } /** @@ -446,7 +444,7 @@ public class WifiNetworkSelector { * */ @Nullable - public WifiConfiguration selectNetwork(List<ScanDetail> scanDetails, + public WifiConfiguration selectNetwork(List<ScanDetail> scanDetails, WifiInfo wifiInfo, boolean connected, boolean disconnected, boolean untrustedNetworkAllowed) { mConnectableNetworks.clear(); if (scanDetails.size() == 0) { @@ -454,17 +452,15 @@ public class WifiNetworkSelector { return null; } - if (mCurrentNetwork == null) { - mCurrentNetwork = - mWifiConfigManager.getConfiguredNetwork(mWifiInfo.getNetworkId()); - } + WifiConfiguration currentNetwork = + mWifiConfigManager.getConfiguredNetwork(wifiInfo.getNetworkId()); // Always get the current BSSID from WifiInfo in case that firmware initiated // roaming happened. - mCurrentBssid = mWifiInfo.getBSSID(); + String currentBssid = wifiInfo.getBSSID(); // Shall we start network selection at all? - if (!isNetworkSelectionNeeded(scanDetails, connected, disconnected)) { + if (!isNetworkSelectionNeeded(scanDetails, wifiInfo, connected, disconnected)) { return null; } @@ -490,7 +486,7 @@ public class WifiNetworkSelector { for (NetworkEvaluator registeredEvaluator : mEvaluators) { if (registeredEvaluator != null) { selectedNetwork = registeredEvaluator.evaluateNetworks(scanDetails, - mCurrentNetwork, mCurrentBssid, connected, + currentNetwork, currentBssid, connected, untrustedNetworkAllowed, mConnectableNetworks); if (selectedNetwork != null) { break; @@ -499,8 +495,6 @@ public class WifiNetworkSelector { } if (selectedNetwork != null) { - mCurrentNetwork = selectedNetwork; - mCurrentBssid = selectedNetwork.getNetworkSelectionStatus().getCandidate().BSSID; mLastNetworkSelectionTimeStamp = mClock.getElapsedSinceBootMillis(); } @@ -552,10 +546,8 @@ public class WifiNetworkSelector { return false; } - WifiNetworkSelector(Context context, WifiConfigManager configManager, - WifiInfo wifiInfo, Clock clock) { + WifiNetworkSelector(Context context, WifiConfigManager configManager, Clock clock) { mWifiConfigManager = configManager; - mWifiInfo = wifiInfo; mClock = clock; mThresholdQualifiedRssi24 = context.getResources().getInteger( diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index 2a1ca3106..6e681a513 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -877,8 +877,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss mWifiDiagnostics = mWifiInjector.makeWifiDiagnostics(mWifiNative); mWifiInfo = new WifiInfo(); - mWifiNetworkSelector = new WifiNetworkSelector(mContext, mWifiConfigManager, - mWifiInfo, mWifiInjector.getClock()); + mWifiNetworkSelector = mWifiInjector.getWifiNetworkSelector(); mSupplicantStateTracker = mFacade.makeSupplicantStateTracker(context, mWifiConfigManager, getHandler()); |