Merge "Emergency callback mode handling"

This commit is contained in:
Irfan Sheriff
2011-09-12 12:24:05 -07:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 4 deletions

View File

@@ -69,6 +69,7 @@ import java.io.FileDescriptor;
import java.io.PrintWriter; import java.io.PrintWriter;
import com.android.internal.app.IBatteryStats; import com.android.internal.app.IBatteryStats;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.util.AsyncChannel; import com.android.internal.util.AsyncChannel;
import com.android.server.am.BatteryStatsService; import com.android.server.am.BatteryStatsService;
import com.android.internal.R; import com.android.internal.R;
@@ -96,6 +97,7 @@ public class WifiService extends IWifiManager.Stub {
private static final int IDLE_REQUEST = 0; private static final int IDLE_REQUEST = 0;
private boolean mScreenOff; private boolean mScreenOff;
private boolean mDeviceIdle; private boolean mDeviceIdle;
private boolean mEmergencyCallbackMode = false;
private int mPluggedType; private int mPluggedType;
/* Chipset supports background scan */ /* Chipset supports background scan */
@@ -996,6 +998,9 @@ public class WifiService extends IWifiManager.Stub {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE, int state = intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE,
BluetoothAdapter.STATE_DISCONNECTED); BluetoothAdapter.STATE_DISCONNECTED);
mWifiStateMachine.sendBluetoothAdapterStateChange(state); 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() { private void updateWifiState() {
boolean lockHeld = mLocks.hasLocks(); boolean lockHeld = mLocks.hasLocks();
int strongestLockMode = WifiManager.WIFI_MODE_FULL; int strongestLockMode = WifiManager.WIFI_MODE_FULL;
boolean wifiShouldBeStarted = !mDeviceIdle || lockHeld; boolean wifiShouldBeStarted;
if (mEmergencyCallbackMode) {
wifiShouldBeStarted = false;
} else {
wifiShouldBeStarted = !mDeviceIdle || lockHeld;
}
if (lockHeld) { if (lockHeld) {
strongestLockMode = mLocks.getStrongestLockMode(); strongestLockMode = mLocks.getStrongestLockMode();
@@ -1097,6 +1108,7 @@ public class WifiService extends IWifiManager.Stub {
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
intentFilter.addAction(ACTION_DEVICE_IDLE); intentFilter.addAction(ACTION_DEVICE_IDLE);
intentFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED); intentFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
intentFilter.addAction(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED);
mContext.registerReceiver(mReceiver, intentFilter); mContext.registerReceiver(mReceiver, intentFilter);
} }

View File

@@ -61,6 +61,7 @@ import android.view.WindowManager;
import android.widget.EditText; import android.widget.EditText;
import com.android.internal.R; import com.android.internal.R;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.util.AsyncChannel; import com.android.internal.util.AsyncChannel;
import com.android.internal.util.Protocol; import com.android.internal.util.Protocol;
import com.android.internal.util.State; import com.android.internal.util.State;
@@ -134,6 +135,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
/* Airplane mode changed */ /* Airplane mode changed */
private static final int AIRPLANE_MODE_CHANGED = BASE + 6; 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 boolean mP2pSupported;
private final String mDeviceType; private final String mDeviceType;
@@ -172,6 +175,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
filter.addAction(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED);
filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION); filter.addAction(WifiManager.WIFI_AP_STATE_CHANGED_ACTION);
mContext.registerReceiver(new WifiStateReceiver(), filter); mContext.registerReceiver(new WifiStateReceiver(), filter);
@@ -185,14 +189,19 @@ public class WifiP2pService extends IWifiP2pManager.Stub {
private class WifiStateReceiver extends BroadcastReceiver { private class WifiStateReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { 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, mWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_DISABLED); 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, mWifiApState = intent.getIntExtra(WifiManager.EXTRA_WIFI_AP_STATE,
WifiManager.WIFI_AP_STATE_DISABLED); 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); 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: case AIRPLANE_MODE_CHANGED:
if (isAirplaneModeOn()) sendMessage(WifiP2pManager.DISABLE_P2P); if (isAirplaneModeOn()) sendMessage(WifiP2pManager.DISABLE_P2P);
break; break;
case EMERGENCY_CALLBACK_MODE:
sendMessage(WifiP2pManager.DISABLE_P2P);
break;
// Ignore // Ignore
case WIFI_DISABLE_USER_ACCEPT: case WIFI_DISABLE_USER_ACCEPT:
case WIFI_DISABLE_USER_REJECT: case WIFI_DISABLE_USER_REJECT: