+ public void updateWifiState(WifiInfo wifiInfo, SupplicantState wifiState) {
+ WifiConnectionStatus previousWifiState = currentWifiState;
+ currentWifiState = WifiConnectionStatus.WIFISTATE_NULL;
+ String ssid = wifiSettingsFragment.trimWifiSSID(wifiInfo != null ? wifiInfo.getSSID() : null);
+
+ if(tryConnectTo == null)
+ return;
+
+ boolean processedWifiState = true;
+ switch (wifiState) {
+ case ASSOCIATING:
+ currentWifiState = WifiConnectionStatus.WIFISTATE_CONNECTING;
+ break;
+ case ASSOCIATED:
+ currentWifiState = WifiConnectionStatus.WIFISTATE_AUTHENTICATING;
+ break;
+ case COMPLETED:
+ currentWifiState = WifiConnectionStatus.WIFISTATE_CONNECTED;
+ break;
+ case DISCONNECTED:
+ if(previousWifiState != WifiConnectionStatus.WIFISTATE_CONNECTED)
+ currentWifiState = WifiConnectionStatus.WIFISTATE_FAILED;
+ else
+ currentWifiState = WifiConnectionStatus.WIFISTATE_NULL;
+ break;
+ default:
+ processedWifiState = false;
+ break;
+ }
+ Log.i("WiFiConf", "Handled: "+wifiState.name());
+ if(!processedWifiState || (ssid != null && !ssid.equalsIgnoreCase(tryConnectTo.getSSID()))) {
+ currentWifiState = previousWifiState;
+ return;
+ }
+
+ SecureLoginManager loginManager;
+ if(currentWifiState == WifiConnectionStatus.WIFISTATE_CONNECTED && (loginManager = tryConnectTo.getSecureLoginManager()) != null) {
+ currentWifiState = WifiConnectionStatus.WIFISTATE_AUTHENTICATING;
+
+ SecureLoginTask logintask = new SecureLoginTask();
+ logintask.loginCallback = new SecureLoginManager.SecureLoginResult() {
+ @Override
+ public void onSecureLoginFailed(String errMsg) {
+ currentWifiState = WifiConnectionStatus.WIFISTATE_FAILED;
+ isLocked = false;
+
+ wifiSettingsFragment.updateWifiState();
+ }
+ @Override
+ public void onSecureLoginSuccess() {
+ currentWifiState = WifiConnectionStatus.WIFISTATE_CONNECTED;
+ isLocked = false;
+
+ wifiSettingsFragment.updateWifiState();
+ }
+ };
+ logintask.settings = tryConnectTo;
+
+ loginManager.execute(logintask);
+ }
+
+ if(currentWifiState == WifiConnectionStatus.WIFISTATE_CONNECTED || currentWifiState == WifiConnectionStatus.WIFISTATE_FAILED) {
+ isLocked = false;
+ }
+ }
+
+ public WifiConnectionStatus getWifiState(WifiNetworkSettings settings) {
+ if(settings == tryConnectTo)
+ return currentWifiState;
+ return WifiConnectionStatus.WIFISTATE_NULL;
+ }