summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2016-03-07 19:19:42 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2016-03-07 19:19:43 +0000
commit3a2b55ba283dec0d3e3421bdd27568ad0644bd7e (patch)
treec3bacafd83d56ddda94b10fb86e48bfcac80f283 /service
parent9a7223a7a51be6e8f700b9240493859e667f2017 (diff)
parent8c0c14b2c98bc26e6a09f66cff1244f0a30f44cb (diff)
Merge "WifiConfigManager: Change PNO network list type" into mm-wireless-dev
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiConfigManager.java45
-rw-r--r--service/java/com/android/server/wifi/WifiNative.java36
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java24
3 files changed, 58 insertions, 47 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index ef23ba1df..1ba11ed10 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -39,6 +39,7 @@ import android.net.wifi.WifiConfiguration.Status;
import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.net.wifi.WifiScanner;
import android.net.wifi.WpsInfo;
import android.net.wifi.WpsResult;
import android.os.Environment;
@@ -1181,7 +1182,7 @@ public class WifiConfigManager {
*
* @return list of networks with updated priorities.
*/
- public ArrayList<WifiNative.PnoNetwork> retrieveDisconnectedPnoNetworkList() {
+ public ArrayList<WifiScanner.PnoSettings.PnoNetwork> retrieveDisconnectedPnoNetworkList() {
return retrievePnoNetworkList(true, sDisconnectedPnoListComparator);
}
@@ -1197,7 +1198,7 @@ public class WifiConfigManager {
* @param enablePno boolean indicating whether PNO is being enabled or disabled.
* @return list of networks with updated priorities.
*/
- public ArrayList<WifiNative.PnoNetwork> retrieveDisconnectedPnoNetworkList(
+ public ArrayList<WifiScanner.PnoSettings.PnoNetwork> retrieveDisconnectedPnoNetworkList(
boolean enablePno) {
return retrievePnoNetworkList(enablePno, sDisconnectedPnoListComparator);
}
@@ -1230,23 +1231,49 @@ public class WifiConfigManager {
*
* @return list of networks with updated priorities.
*/
- public ArrayList<WifiNative.PnoNetwork> retrieveConnectedPnoNetworkList() {
+ public ArrayList<WifiScanner.PnoSettings.PnoNetwork> retrieveConnectedPnoNetworkList() {
return retrievePnoNetworkList(true, sConnectedPnoListComparator);
}
/**
+ * Create a PnoNetwork object from the provided WifiConfiguration.
+ * @param config Configuration corresponding to the network.
+ * @param newPriority New priority to be assigned to the network.
+ */
+ private static WifiScanner.PnoSettings.PnoNetwork createPnoNetworkFromWifiConfiguration(
+ WifiConfiguration config, int newPriority) {
+ WifiScanner.PnoSettings.PnoNetwork pnoNetwork =
+ new WifiScanner.PnoSettings.PnoNetwork(config.SSID);
+ pnoNetwork.networkId = config.networkId;
+ pnoNetwork.priority = newPriority;
+ if (config.hiddenSSID) {
+ pnoNetwork.flags |= WifiScanner.PnoSettings.PnoNetwork.FLAG_DIRECTED_SCAN;
+ }
+ pnoNetwork.flags |= WifiScanner.PnoSettings.PnoNetwork.FLAG_A_BAND;
+ pnoNetwork.flags |= WifiScanner.PnoSettings.PnoNetwork.FLAG_G_BAND;
+ if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_PSK)) {
+ pnoNetwork.authBitField |= WifiScanner.PnoSettings.PnoNetwork.AUTH_CODE_PSK;
+ } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_EAP)
+ || config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.IEEE8021X)) {
+ pnoNetwork.authBitField |= WifiScanner.PnoSettings.PnoNetwork.AUTH_CODE_EAPOL;
+ } else {
+ pnoNetwork.authBitField |= WifiScanner.PnoSettings.PnoNetwork.AUTH_CODE_OPEN;
+ }
+ return pnoNetwork;
+ }
+
+ /**
* Retrieves an updated list of priorities for all the saved networks before
* enabling/disabling PNO.
*
* @param enablePno boolean indicating whether PNO is being enabled or disabled.
* @return list of networks with updated priorities.
*/
- private ArrayList<WifiNative.PnoNetwork> retrievePnoNetworkList(
+ private ArrayList<WifiScanner.PnoSettings.PnoNetwork> retrievePnoNetworkList(
boolean enablePno, PnoListComparator pnoListComparator) {
- ArrayList<WifiNative.PnoNetwork> pnoList =
- new ArrayList<WifiNative.PnoNetwork>();
+ ArrayList<WifiScanner.PnoSettings.PnoNetwork> pnoList = new ArrayList<>();
ArrayList<WifiConfiguration> wifiConfigurations =
- new ArrayList<WifiConfiguration>(mConfiguredNetworks.valuesForCurrentUser());
+ new ArrayList<>(mConfiguredNetworks.valuesForCurrentUser());
if (enablePno) {
Collections.sort(wifiConfigurations, pnoListComparator);
// Let's use the network list size as the highest priority and then go down from there.
@@ -1256,14 +1283,14 @@ public class WifiConfigManager {
Log.d(TAG, "Retrieve network priorities before PNO. Max priority: " + priority);
}
for (WifiConfiguration config : wifiConfigurations) {
- pnoList.add(new WifiNative.PnoNetwork(config, priority));
+ pnoList.add(createPnoNetworkFromWifiConfiguration(config, priority));
priority--;
}
} else {
// Revert the priorities back to the saved config values after PNO.
if (DBG) Log.d(TAG, "Retrieve network priorities after PNO.");
for (WifiConfiguration config : wifiConfigurations) {
- pnoList.add(new WifiNative.PnoNetwork(config, config.priority));
+ pnoList.add(createPnoNetworkFromWifiConfiguration(config, config.priority));
}
}
return pnoList;
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java
index bfbeefc8b..9cd9235fe 100644
--- a/service/java/com/android/server/wifi/WifiNative.java
+++ b/service/java/com/android/server/wifi/WifiNative.java
@@ -1804,42 +1804,6 @@ public class WifiNative {
public int priority;
public byte flags;
public byte auth_bit_field;
- public String configKey; // kept for reference
-
- /**
- * Default constructor needed in WifiScanningServiceImpl.
- * TODO(rpius): Remove both the constructors.
- */
- PnoNetwork() {
- }
-
- /**
- * Constructor for the PnoNetwork object used by WifiStateMachine.
- * TODO(rpius): Remove this constructor when we remove the PNO usage out of StateMachine.
- * @param config Corresponding configuration for the network
- * @param newPriority Priority to be set.
- */
- PnoNetwork(WifiConfiguration config, int newPriority) {
- if (config.SSID == null) {
- ssid = "";
- flags = WifiScanner.PnoSettings.PnoNetwork.FLAG_DIRECTED_SCAN;
- } else {
- ssid = config.SSID;
- }
- if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_PSK)) {
- auth_bit_field |= WifiScanner.PnoSettings.PnoNetwork.AUTH_CODE_PSK;
- } else if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.WPA_EAP)
- || config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.IEEE8021X)) {
- auth_bit_field |= WifiScanner.PnoSettings.PnoNetwork.AUTH_CODE_EAPOL;
- } else {
- auth_bit_field |= WifiScanner.PnoSettings.PnoNetwork.AUTH_CODE_OPEN;
- }
- flags = WifiScanner.PnoSettings.PnoNetwork.FLAG_A_BAND;
- flags |= WifiScanner.PnoSettings.PnoNetwork.FLAG_G_BAND;
- configKey = config.configKey();
- networkId = config.networkId;
- priority = newPriority;
- }
}
/**
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index adaeb1106..447a79182 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -2464,6 +2464,25 @@ public class WifiStateMachine extends StateMachine implements WifiNative.PnoEven
return mWifiNative.getNfcWpsConfigurationToken(netId);
}
+ /**
+ * Convert WifiScanner.PnoNetwork List to WifiNative.PnoNetwork List
+ * TODO(rpius): Remove this once WifiScanner starts PNO scanning.
+ */
+ private List<WifiNative.PnoNetwork> convertPnoNetworkListToNative(
+ List<WifiScanner.PnoSettings.PnoNetwork> pnoNetworkList) {
+ List<WifiNative.PnoNetwork> nativePnoNetworkList = new ArrayList<>();
+ for (WifiScanner.PnoSettings.PnoNetwork pnoNetwork : pnoNetworkList) {
+ WifiNative.PnoNetwork nativePnoNetwork = new WifiNative.PnoNetwork();
+ nativePnoNetwork.ssid = pnoNetwork.ssid;
+ nativePnoNetwork.networkId = pnoNetwork.networkId;
+ nativePnoNetwork.priority = pnoNetwork.priority;
+ nativePnoNetwork.flags = pnoNetwork.flags;
+ nativePnoNetwork.auth_bit_field = pnoNetwork.authBitField;
+ nativePnoNetworkList.add(nativePnoNetwork);
+ }
+ return nativePnoNetworkList;
+ }
+
void enableBackgroundScan(boolean enable) {
if (enable) {
mWifiConfigManager.enableAllNetworks();
@@ -2471,9 +2490,10 @@ public class WifiStateMachine extends StateMachine implements WifiNative.PnoEven
// disabled when we connect to a network after PNO.
mWifiConfigManager.enableAllNetworksNative();
}
- List<WifiNative.PnoNetwork> pnoList =
+ List<WifiScanner.PnoSettings.PnoNetwork> pnoList =
mWifiConfigManager.retrieveDisconnectedPnoNetworkList(enable);
- boolean ret = mWifiNative.enableBackgroundScan(enable, pnoList);
+ boolean ret =
+ mWifiNative.enableBackgroundScan(enable, convertPnoNetworkListToNative(pnoList));
if (ret) {
mLegacyPnoEnabled = enable;
} else {