Loading services/java/com/android/server/WifiService.java +4 −4 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ public class WifiService extends IWifiManager.Stub { * of WifiLock & device idle status unless wifi enabled status is toggled */ mWifiStateMachine.setDriverStart(true); mWifiStateMachine.setDriverStart(true, mEmergencyCallbackMode); mWifiStateMachine.reconnectCommand(); } Loading @@ -854,7 +854,7 @@ public class WifiService extends IWifiManager.Stub { * TODO: if a stop is issued, wifi is brought up only by startWifi * unless wifi enabled status is toggled */ mWifiStateMachine.setDriverStart(false); mWifiStateMachine.setDriverStart(false, mEmergencyCallbackMode); } Loading Loading @@ -1074,11 +1074,11 @@ public class WifiService extends IWifiManager.Stub { mWifiStateMachine.setWifiEnabled(true); mWifiStateMachine.setScanOnlyMode( strongestLockMode == WifiManager.WIFI_MODE_SCAN_ONLY); mWifiStateMachine.setDriverStart(true); mWifiStateMachine.setDriverStart(true, mEmergencyCallbackMode); mWifiStateMachine.setHighPerfModeEnabled(strongestLockMode == WifiManager.WIFI_MODE_FULL_HIGH_PERF); } else { mWifiStateMachine.setDriverStart(false); mWifiStateMachine.setDriverStart(false, mEmergencyCallbackMode); } } else { mWifiStateMachine.setWifiEnabled(false); Loading wifi/java/android/net/wifi/WifiStateMachine.java +19 −6 Original line number Diff line number Diff line Loading @@ -368,6 +368,10 @@ public class WifiStateMachine extends StateMachine { private static final int SUCCESS = 1; private static final int FAILURE = -1; /* Phone in emergency call back mode */ private static final int IN_ECM_STATE = 1; private static final int NOT_IN_ECM_STATE = 0; /** * The maximum number of times we will retry a connection to an access point * for which we have failed in acquiring an IP address from DHCP. A value of Loading Loading @@ -778,11 +782,11 @@ public class WifiStateMachine extends StateMachine { /** * TODO: doc */ public void setDriverStart(boolean enable) { public void setDriverStart(boolean enable, boolean ecm) { if (enable) { sendMessage(CMD_START_DRIVER); } else { sendMessage(CMD_STOP_DRIVER); sendMessage(obtainMessage(CMD_STOP_DRIVER, ecm ? IN_ECM_STATE : NOT_IN_ECM_STATE, 0)); } } Loading Loading @@ -2576,16 +2580,25 @@ public class WifiStateMachine extends StateMachine { WifiNative.setBluetoothCoexistenceScanModeCommand(mBluetoothConnectionActive); break; case CMD_STOP_DRIVER: /* Already doing a delayed stop */ if (mInDelayedStop) { int mode = message.arg1; /* Already doing a delayed stop && not in ecm state */ if (mInDelayedStop && mode != IN_ECM_STATE) { if (DBG) log("Already in delayed stop"); break; } mInDelayedStop = true; mDelayedStopCounter++; if (DBG) log("Delayed stop message " + mDelayedStopCounter); sendMessageDelayed(obtainMessage(CMD_DELAYED_STOP_DRIVER, mDelayedStopCounter, 0), DELAYED_DRIVER_STOP_MS); if (mode == IN_ECM_STATE) { /* send a shut down immediately */ sendMessage(obtainMessage(CMD_DELAYED_STOP_DRIVER, mDelayedStopCounter, 0)); } else { /* send regular delayed shut down */ sendMessageDelayed(obtainMessage(CMD_DELAYED_STOP_DRIVER, mDelayedStopCounter, 0), DELAYED_DRIVER_STOP_MS); } break; case CMD_START_DRIVER: if (mInDelayedStop) { Loading Loading
services/java/com/android/server/WifiService.java +4 −4 Original line number Diff line number Diff line Loading @@ -840,7 +840,7 @@ public class WifiService extends IWifiManager.Stub { * of WifiLock & device idle status unless wifi enabled status is toggled */ mWifiStateMachine.setDriverStart(true); mWifiStateMachine.setDriverStart(true, mEmergencyCallbackMode); mWifiStateMachine.reconnectCommand(); } Loading @@ -854,7 +854,7 @@ public class WifiService extends IWifiManager.Stub { * TODO: if a stop is issued, wifi is brought up only by startWifi * unless wifi enabled status is toggled */ mWifiStateMachine.setDriverStart(false); mWifiStateMachine.setDriverStart(false, mEmergencyCallbackMode); } Loading Loading @@ -1074,11 +1074,11 @@ public class WifiService extends IWifiManager.Stub { mWifiStateMachine.setWifiEnabled(true); mWifiStateMachine.setScanOnlyMode( strongestLockMode == WifiManager.WIFI_MODE_SCAN_ONLY); mWifiStateMachine.setDriverStart(true); mWifiStateMachine.setDriverStart(true, mEmergencyCallbackMode); mWifiStateMachine.setHighPerfModeEnabled(strongestLockMode == WifiManager.WIFI_MODE_FULL_HIGH_PERF); } else { mWifiStateMachine.setDriverStart(false); mWifiStateMachine.setDriverStart(false, mEmergencyCallbackMode); } } else { mWifiStateMachine.setWifiEnabled(false); Loading
wifi/java/android/net/wifi/WifiStateMachine.java +19 −6 Original line number Diff line number Diff line Loading @@ -368,6 +368,10 @@ public class WifiStateMachine extends StateMachine { private static final int SUCCESS = 1; private static final int FAILURE = -1; /* Phone in emergency call back mode */ private static final int IN_ECM_STATE = 1; private static final int NOT_IN_ECM_STATE = 0; /** * The maximum number of times we will retry a connection to an access point * for which we have failed in acquiring an IP address from DHCP. A value of Loading Loading @@ -778,11 +782,11 @@ public class WifiStateMachine extends StateMachine { /** * TODO: doc */ public void setDriverStart(boolean enable) { public void setDriverStart(boolean enable, boolean ecm) { if (enable) { sendMessage(CMD_START_DRIVER); } else { sendMessage(CMD_STOP_DRIVER); sendMessage(obtainMessage(CMD_STOP_DRIVER, ecm ? IN_ECM_STATE : NOT_IN_ECM_STATE, 0)); } } Loading Loading @@ -2576,16 +2580,25 @@ public class WifiStateMachine extends StateMachine { WifiNative.setBluetoothCoexistenceScanModeCommand(mBluetoothConnectionActive); break; case CMD_STOP_DRIVER: /* Already doing a delayed stop */ if (mInDelayedStop) { int mode = message.arg1; /* Already doing a delayed stop && not in ecm state */ if (mInDelayedStop && mode != IN_ECM_STATE) { if (DBG) log("Already in delayed stop"); break; } mInDelayedStop = true; mDelayedStopCounter++; if (DBG) log("Delayed stop message " + mDelayedStopCounter); sendMessageDelayed(obtainMessage(CMD_DELAYED_STOP_DRIVER, mDelayedStopCounter, 0), DELAYED_DRIVER_STOP_MS); if (mode == IN_ECM_STATE) { /* send a shut down immediately */ sendMessage(obtainMessage(CMD_DELAYED_STOP_DRIVER, mDelayedStopCounter, 0)); } else { /* send regular delayed shut down */ sendMessageDelayed(obtainMessage(CMD_DELAYED_STOP_DRIVER, mDelayedStopCounter, 0), DELAYED_DRIVER_STOP_MS); } break; case CMD_START_DRIVER: if (mInDelayedStop) { Loading