diff options
author | Roshan Pius <rpius@google.com> | 2016-03-07 19:19:42 +0000 |
---|---|---|
committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2016-03-07 19:19:43 +0000 |
commit | 3a2b55ba283dec0d3e3421bdd27568ad0644bd7e (patch) | |
tree | c3bacafd83d56ddda94b10fb86e48bfcac80f283 /service | |
parent | 9a7223a7a51be6e8f700b9240493859e667f2017 (diff) | |
parent | 8c0c14b2c98bc26e6a09f66cff1244f0a30f44cb (diff) |
Merge "WifiConfigManager: Change PNO network list type" into mm-wireless-dev
Diffstat (limited to 'service')
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 { |