diff options
| author | Irfan Sheriff <isheriff@google.com> | 2011-09-12 12:24:05 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-12 12:24:05 -0700 |
| commit | 45caa44717d047e0aa0a066c352eee00a6ea2f11 (patch) | |
| tree | 7c3c4131bb3bb54ff792cad952234e7ea12ff229 | |
| parent | 76eb1a251808438771a237a92a0ab0903baeea7e (diff) | |
| parent | 616f3173e08ec6110cf5766c70f84c9e031fb7d7 (diff) | |
Merge "Emergency callback mode handling"
| -rw-r--r-- | services/java/com/android/server/WifiService.java | 14 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/p2p/WifiP2pService.java | 18 |
2 files changed, 28 insertions, 4 deletions
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java index e6b5898c1e47..4b1a4e6edb66 100644 --- a/services/java/com/android/server/WifiService.java +++ b/services/java/com/android/server/WifiService.java @@ -69,6 +69,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import com.android.internal.app.IBatteryStats; +import com.android.internal.telephony.TelephonyIntents; import com.android.internal.util.AsyncChannel; import com.android.server.am.BatteryStatsService; import com.android.internal.R; @@ -96,6 +97,7 @@ public class WifiService extends IWifiManager.Stub { private static final int IDLE_REQUEST = 0; private boolean mScreenOff; private boolean mDeviceIdle; + private boolean mEmergencyCallbackMode = false; private int mPluggedType; /* Chipset supports background scan */ @@ -996,6 +998,9 @@ public class WifiService extends IWifiManager.Stub { int state = intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE, BluetoothAdapter.STATE_DISCONNECTED); mWifiStateMachine.sendBluetoothAdapterStateChange(state); + } else if (action.equals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED)) { + mEmergencyCallbackMode = intent.getBooleanExtra("phoneinECMState", false); + updateWifiState(); } } @@ -1057,7 +1062,13 @@ public class WifiService extends IWifiManager.Stub { private void updateWifiState() { boolean lockHeld = mLocks.hasLocks(); int strongestLockMode = WifiManager.WIFI_MODE_FULL; - boolean wifiShouldBeStarted = !mDeviceIdle || lockHeld; + boolean wifiShouldBeStarted; + + if (mEmergencyCallbackMode) { + wifiShouldBeStarted = false; + } else { + wifiShouldBeStarted = !mDeviceIdle || lockHeld; + } if (lockHeld) { strongestLockMode = mLocks.getStrongestLockMode(); @@ -1097,6 +1108,7 @@ public class WifiService extends IWifiManager.Stub { intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); intentFilter.addAction(ACTION_DEVICE_IDLE); intentFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED); + intentFilter.addAction(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED); mContext.registerReceiver(mReceiver, intentFilter); } diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java index 2f7b9278f1c6..fb2c1347a68a 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java @@ -61,6 +61,7 @@ import android.view.WindowManager; import android.widget.EditText; import com.android.internal.R; +import com.android.internal.telephony.TelephonyIntents; import com.android.internal.util.AsyncChannel; import com.android.internal.util.Protocol; import com.android.internal.util.State; @@ -134,6 +135,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub { /* Airplane mode changed */ private static final int AIRPLANE_MODE_CHANGED = BASE + 6; + /* Emergency callback mode */ + private static final int EMERGENCY_CALLBACK_MODE = BASE + 7; private final boolean mP2pSupported; private final String mDeviceType; @@ -172,6 +175,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { IntentFilter filter = new IntentFilter(); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); + filter.addAction(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED); filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION); mContext.registerReceiver(new WifiStateReceiver(), filter); @@ -185,14 +189,19 @@ public class WifiP2pService extends IWifiP2pManager.Stub { private class WifiStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { + String action = intent.getAction(); + if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { mWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED); - } else if (intent.getAction().equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) { + } else if (action.equals(WifiManager.WIFI_AP_STATE_CHANGED_ACTION)) { mWifiApState = intent.getIntExtra(WifiManager.EXTRA_WIFI_AP_STATE, WifiManager.WIFI_AP_STATE_DISABLED); - } else if (intent.getAction().equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) { + } else if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) { mP2pStateMachine.sendMessage(AIRPLANE_MODE_CHANGED); + } else if (action.equals(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED)) { + if (intent.getBooleanExtra("phoneinECMState", false) == true) { + mP2pStateMachine.sendMessage(EMERGENCY_CALLBACK_MODE); + } } } } @@ -361,6 +370,9 @@ public class WifiP2pService extends IWifiP2pManager.Stub { case AIRPLANE_MODE_CHANGED: if (isAirplaneModeOn()) sendMessage(WifiP2pManager.DISABLE_P2P); break; + case EMERGENCY_CALLBACK_MODE: + sendMessage(WifiP2pManager.DISABLE_P2P); + break; // Ignore case WIFI_DISABLE_USER_ACCEPT: case WIFI_DISABLE_USER_REJECT: |
