summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunil Dutt <usdutt@qti.qualcomm.com>2016-06-02 18:20:51 +0530
committerLinux Build Service Account <lnxbuild@localhost>2016-08-24 08:07:55 -0600
commit61ebcfc5e047951f7f4ee885fd54c42b19e78cb8 (patch)
tree07fd7962359e33998bbfb7f149f80f9accc0a570
parent6dfb317b034a2aa850026e021a40b2a0fc38e6d8 (diff)
downloadandroid_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.java17
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java5
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);
}
}