summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRandy Pan <zpan@google.com>2016-10-03 13:41:25 -0700
committerRandy Pan <zpan@google.com>2016-10-06 11:28:44 -0700
commit2dfadf313b3e5194d56d2fa24b9270086cda165a (patch)
treec5eef0e5a1bbfe4c66600e9c391dd4159a4dd904 /service
parent2e4c946e15dff5a207816ea21c0c3e8d5de01f08 (diff)
Move WifiNetworkSelector to WifiInjector
While there, move WifiInfo to be an input parameter of WifiNetworkSelector#selectNetwork and make WifiInfo the sole source for obtaining information of the currently connected network. Bug: 31383992 Test: Wifi framework unit tests Change-Id: I107ba600165b008079cebf230865f8b2082740a8
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiConnectivityManager.java2
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java9
-rw-r--r--service/java/com/android/server/wifi/WifiNetworkSelector.java46
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java3
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 3c2971210..e763472b6 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -227,7 +227,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 807f20133..7ddd6a238 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());