diff options
author | Sunil Dutt <usdutt@qti.qualcomm.com> | 2016-06-02 18:20:51 +0530 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2016-08-24 08:07:55 -0600 |
commit | 61ebcfc5e047951f7f4ee885fd54c42b19e78cb8 (patch) | |
tree | 07fd7962359e33998bbfb7f149f80f9accc0a570 | |
parent | 6dfb317b034a2aa850026e021a40b2a0fc38e6d8 (diff) | |
download | android_frameworks_opt_net_wifi-61ebcfc5e047951f7f4ee885fd54c42b19e78cb8.tar.gz android_frameworks_opt_net_wifi-61ebcfc5e047951f7f4ee885fd54c42b19e78cb8.tar.bz2 android_frameworks_opt_net_wifi-61ebcfc5e047951f7f4ee885fd54c42b19e78cb8.zip |
Provision to restart SoftAP.
This commit ensures to restart the SoftAP on a
CMD_TETHER_STATE_CHANGE indication when in
TetheredState.
Change-Id: I840c50f38d5b73a573ad45bc0b238bc64b3c1531
CRs-Fixed: 1034612
-rw-r--r-- | service/java/com/android/server/wifi/SoftApManager.java | 17 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/WifiStateMachine.java | 5 |
2 files changed, 16 insertions, 6 deletions
diff --git a/service/java/com/android/server/wifi/SoftApManager.java b/service/java/com/android/server/wifi/SoftApManager.java index f271b4cc4..d92bb49d4 100644 --- a/service/java/com/android/server/wifi/SoftApManager.java +++ b/service/java/com/android/server/wifi/SoftApManager.java @@ -48,6 +48,7 @@ import java.util.Locale; */ public class SoftApManager { private static final String TAG = "SoftApManager"; + private boolean restartSap = false; private final Context mContext; private final INetworkManagementService mNmService; @@ -345,9 +346,15 @@ public class SoftApManager { /* Already started, ignore this command. */ break; case CMD_STOP: - updateApState(WifiManager.WIFI_AP_STATE_DISABLING, 0); - stopSoftAp(); - updateApState(WifiManager.WIFI_AP_STATE_DISABLED, 0); + if (restartSap) { + stopSoftAp(); + updateApState(WifiManager.WIFI_AP_STATE_RESTART, 0); + restartSap = false; + } else { + updateApState(WifiManager.WIFI_AP_STATE_DISABLING, 0); + stopSoftAp(); + updateApState(WifiManager.WIFI_AP_STATE_DISABLED, 0); + } transitionTo(mIdleState); break; case CMD_TETHER_STATE_CHANGE: @@ -409,8 +416,8 @@ public class SoftApManager { case CMD_TETHER_STATE_CHANGE: TetherStateChange stateChange = (TetherStateChange) message.obj; if (!isWifiTethered(stateChange.active)) { - Log.e(TAG, "Tethering reports wifi as untethered!, " - + "shut down soft Ap"); + Log.e(TAG, "Tether State Change : Restart (Stop and Start) Soft AP"); + restartSap = true; sendMessage(CMD_STOP); } break; diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index a6e6ef56b..e083e87eb 100644 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -7688,8 +7688,11 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss sendMessage(CMD_AP_STOPPED); } else if (state == WIFI_AP_STATE_FAILED) { sendMessage(CMD_START_AP_FAILURE); + } else if (state == WifiManager.WIFI_AP_STATE_RESTART) { + sendMessage(CMD_AP_STOPPED); + sendMessage(CMD_START_AP, null); + return; } - setWifiApState(state, reason); } } |