From cdbc80afb2dd191e1e2938a9939a1e11b5fd17ff Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Wed, 8 Dec 2010 11:28:25 -0800 Subject: [PATCH] Use WpsConfiguration for new API Change-Id: I4c1544178bcb29e751db56edb781faf9145cdf86 --- .../settings/wifi/WifiConfigController.java | 73 ++++++++++++++----- .../android/settings/wifi/WifiSettings.java | 7 +- 2 files changed, 55 insertions(+), 25 deletions(-) diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java index d1c89dd4da2..1a882d40c29 100644 --- a/src/com/android/settings/wifi/WifiConfigController.java +++ b/src/com/android/settings/wifi/WifiConfigController.java @@ -30,6 +30,9 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.IpAssignment; import android.net.wifi.WifiConfiguration.AuthAlgorithm; import android.net.wifi.WifiConfiguration.KeyMgmt; +import android.net.wifi.WpsConfiguration; +import android.net.wifi.WpsConfiguration.Setup; + import static android.net.wifi.WifiConfiguration.INVALID_NETWORK_ID; import android.net.wifi.WifiConfiguration.ProxySettings; import android.net.wifi.WifiInfo; @@ -114,6 +117,10 @@ public class WifiConfigController implements TextWatcher, private TextView mProxyPortView; private TextView mProxyExclusionListView; + private IpAssignment mIpAssignment; + private ProxySettings mProxySettings; + private LinkProperties mLinkProperties = new LinkProperties(); + static boolean requireKeyStore(WifiConfiguration config) { if (config == null) { return false; @@ -331,28 +338,37 @@ public class WifiConfigController implements TextWatcher, return null; } - config.ipAssignment = (mIpSettingsSpinner != null && + validateAndFetchIpAndProxyFields(); + + config.proxySettings = mProxySettings; + config.ipAssignment = mIpAssignment; + config.linkProperties = new LinkProperties(mLinkProperties); + + return config; + } + + private void validateAndFetchIpAndProxyFields() { + mLinkProperties.clear(); + mIpAssignment = (mIpSettingsSpinner != null && mIpSettingsSpinner.getSelectedItemPosition() == STATIC_IP) ? IpAssignment.STATIC : IpAssignment.DHCP; - if (config.ipAssignment == IpAssignment.STATIC) { + if (mIpAssignment == IpAssignment.STATIC) { //TODO: A better way to do this is to not dismiss the //dialog as long as one of the fields is invalid - LinkProperties linkProperties = new LinkProperties(); - int result = validateIpConfigFields(linkProperties); - if (result == 0) { - config.linkProperties = linkProperties; - } else { + int result = validateIpConfigFields(mLinkProperties); + if (result != 0) { + mLinkProperties.clear(); Toast.makeText(mConfigUi.getContext(), result, Toast.LENGTH_LONG).show(); - config.ipAssignment = IpAssignment.UNASSIGNED; + mIpAssignment = IpAssignment.UNASSIGNED; } } - config.proxySettings = (mProxySettingsSpinner != null && + mProxySettings = (mProxySettingsSpinner != null && mProxySettingsSpinner.getSelectedItemPosition() == PROXY_STATIC) ? ProxySettings.STATIC : ProxySettings.NONE; - if (config.proxySettings == ProxySettings.STATIC) { + if (mProxySettings == ProxySettings.STATIC) { String host = mProxyHostView.getText().toString(); String portStr = mProxyPortView.getText().toString(); String exclusionList = mProxyExclusionListView.getText().toString(); @@ -366,14 +382,12 @@ public class WifiConfigController implements TextWatcher, } if (result == 0) { ProxyProperties proxyProperties= new ProxyProperties(host, port, exclusionList); - config.linkProperties.setHttpProxy(proxyProperties); + mLinkProperties.setHttpProxy(proxyProperties); } else { Toast.makeText(mConfigUi.getContext(), result, Toast.LENGTH_LONG).show(); - config.proxySettings = ProxySettings.UNASSIGNED; + mProxySettings = ProxySettings.UNASSIGNED; } } - - return config; } private int validateIpConfigFields(LinkProperties linkProperties) { @@ -428,13 +442,32 @@ public class WifiConfigController implements TextWatcher, return MANUAL; } - int getWpsPin() { - try { - String wpsPin = ((TextView) mView.findViewById(R.id.wps_pin)).getText().toString(); - return Integer.parseInt(wpsPin); - } catch (NumberFormatException e) { - return -1; + WpsConfiguration getWpsConfig() { + WpsConfiguration config = new WpsConfiguration(); + switch (mNetworkSetupSpinner.getSelectedItemPosition()) { + case WPS_PBC: + config.setup = Setup.PBC; + break; + case WPS_PIN_FROM_ACCESS_POINT: + config.setup = Setup.PIN_FROM_ACCESS_POINT; + break; + case WPS_PIN_FROM_DEVICE: + config.setup = Setup.PIN_FROM_DEVICE; + break; + default: + config.setup = Setup.INVALID; + Log.e(TAG, "WPS not selected type"); + return config; } + config.pin = ((TextView) mView.findViewById(R.id.wps_pin)).getText().toString(); + config.BSSID = (mAccessPoint != null) ? mAccessPoint.bssid : null; + + validateAndFetchIpAndProxyFields(); + + config.proxySettings = mProxySettings; + config.ipAssignment = mIpAssignment; + config.linkProperties = new LinkProperties(mLinkProperties); + return config; } private void showSecurityFields() { diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 52d053f7513..3a1f7673c19 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -559,14 +559,11 @@ public class WifiSettings extends SettingsPreferenceFragment /* package */ void submit(WifiConfigController configController) { switch(configController.chosenNetworkSetupMethod()) { case WifiConfigController.WPS_PBC: - mWifiManager.startWpsPbc(mSelectedAccessPoint.bssid); - break; case WifiConfigController.WPS_PIN_FROM_ACCESS_POINT: - int apPin = configController.getWpsPin(); - mWifiManager.startWpsWithPinFromAccessPoint(mSelectedAccessPoint.bssid, apPin); + mWifiManager.startWps(configController.getWpsConfig()); break; case WifiConfigController.WPS_PIN_FROM_DEVICE: - int pin = mWifiManager.startWpsWithPinFromDevice(mSelectedAccessPoint.bssid); + String pin = mWifiManager.startWps(configController.getWpsConfig()); new AlertDialog.Builder(getActivity()) .setTitle(R.string.wifi_wps_pin_method_configuration) .setMessage(getResources().getString(R.string.wifi_wps_pin_output, pin))