summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNalla Kartheek <karthe@codeaurora.org>2015-12-08 15:18:26 +0530
committerSteve Kondik <steve@cyngn.com>2016-06-24 11:28:49 -1000
commit22b3c71953adbf0db948efde921560bdeecfc1a4 (patch)
tree0421096760b5ece87943ffc05ba27d87ed8db275
parent6c7911a4f7f0d450e3cbff3466f9208800cec752 (diff)
downloadandroid_frameworks_opt_net_wifi-22b3c71953adbf0db948efde921560bdeecfc1a4.tar.gz
android_frameworks_opt_net_wifi-22b3c71953adbf0db948efde921560bdeecfc1a4.tar.bz2
android_frameworks_opt_net_wifi-22b3c71953adbf0db948efde921560bdeecfc1a4.zip
Wifi: Update WifiController state if Wifi turn On fails
If Wifi turn On fails due to failure in loading driver or supplicant start then WifiStateMachine stays in InitialState, but WifiController is left stuck in StaEnabledState, which in turn fails to turn on WLAN again. Register WifiService to receive WIFI_STATE_CHANGED_ACTION intent from WifiStateMachine, and if wifiState is failed, inform WifiController to transition to ApStaDisabledState. Change-Id: I454f6d5bb7f45cc18c9fdd8a625c5b3481640c19 CRs-Fixed: 947716
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java17
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java2
2 files changed, 19 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index ed09d2c10..02ba186d3 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -1445,6 +1445,22 @@ public final class WifiServiceImpl extends IWifiManager.Stub {
if (wifiApState == WifiManager.WIFI_AP_STATE_FAILED) {
setWifiApEnabled(null, false);
}
+ } else if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
+ int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
+ WifiManager.WIFI_STATE_UNKNOWN);
+ /*
+ * If Wi-Fi turn on fails, WifiStateMachine stays in InitialState,
+ * but WifiController is left stuck in StaEnabledState, which in turn
+ * fails to turn on WLAN again.
+ *
+ * Register WifiService to receive WIFI_STATE_CHANGED_ACTION intent
+ * from WifiStateMachine, and if wifiState is failed, inform WifiController
+ * to transtion to ApStaDisabledState.
+ */
+ if (wifiState == WifiManager.WIFI_STATE_FAILED) {
+ Slog.e(TAG, "Wi-Fi state is failed");
+ setWifiEnabled(false);
+ }
}
}
};
@@ -1473,6 +1489,7 @@ public final class WifiServiceImpl extends IWifiManager.Stub {
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+ intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
intentFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
intentFilter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED);
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 513752722..20a549da2 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -6091,9 +6091,11 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiPno
transitionTo(mSupplicantStartingState);
} else {
loge("Failed to start supplicant!");
+ setWifiState(WifiManager.WIFI_STATE_FAILED);
}
} else {
loge("Failed to load driver");
+ setWifiState(WifiManager.WIFI_STATE_FAILED);
}
break;
case CMD_START_AP: