Merge "Telephony: Add Powerdown Cause to PDP Deactivate Message." into honeycomb-LTE
This commit is contained in:
@@ -109,14 +109,17 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
* Used internally for saving disconnecting parameters.
|
||||
*/
|
||||
protected static class DisconnectParams {
|
||||
public DisconnectParams(Message onCompletedMsg) {
|
||||
public DisconnectParams(String reason, Message onCompletedMsg) {
|
||||
this.reason = reason;
|
||||
this.onCompletedMsg = onCompletedMsg;
|
||||
}
|
||||
public DisconnectParams(ResetSynchronouslyLock lockObj) {
|
||||
this.reason = null;
|
||||
this.lockObj = lockObj;
|
||||
}
|
||||
|
||||
public int tag;
|
||||
public String reason;
|
||||
public Message onCompletedMsg;
|
||||
public ResetSynchronouslyLock lockObj;
|
||||
}
|
||||
@@ -274,10 +277,8 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
if ((o != null) && (o instanceof DisconnectParams)) {
|
||||
DisconnectParams dp = (DisconnectParams)o;
|
||||
Message m = dp.onCompletedMsg;
|
||||
if ((m != null) && (m.obj != null) && (m.obj instanceof String)) {
|
||||
String reason = (String)m.obj;
|
||||
if (TextUtils.equals(reason, Phone.REASON_RADIO_TURNED_OFF))
|
||||
discReason = RILConstants.DEACTIVATE_REASON_RADIO_OFF;
|
||||
if (TextUtils.equals(dp.reason, Phone.REASON_RADIO_TURNED_OFF)) {
|
||||
discReason = RILConstants.DEACTIVATE_REASON_RADIO_OFF;
|
||||
}
|
||||
}
|
||||
if (phone.mCM.getRadioState().isOn()) {
|
||||
@@ -963,7 +964,7 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
* With AsyncResult.userObj set to the original msg.obj.
|
||||
*/
|
||||
public void reset(Message onCompletedMsg) {
|
||||
sendMessage(obtainMessage(EVENT_RESET, new DisconnectParams(onCompletedMsg)));
|
||||
sendMessage(obtainMessage(EVENT_RESET, new DisconnectParams(null, onCompletedMsg)));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1014,8 +1015,8 @@ public abstract class DataConnection extends HierarchicalStateMachine {
|
||||
* @param onCompletedMsg is sent with its msg.obj as an AsyncResult object.
|
||||
* With AsyncResult.userObj set to the original msg.obj.
|
||||
*/
|
||||
public void disconnect(Message onCompletedMsg) {
|
||||
sendMessage(obtainMessage(EVENT_DISCONNECT, new DisconnectParams(onCompletedMsg)));
|
||||
public void disconnect(String reason, Message onCompletedMsg) {
|
||||
sendMessage(obtainMessage(EVENT_DISCONNECT, new DisconnectParams(reason, onCompletedMsg)));
|
||||
}
|
||||
|
||||
// ****** The following are used for debugging.
|
||||
|
||||
@@ -461,7 +461,7 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
protected abstract void onVoiceCallStarted();
|
||||
protected abstract void onVoiceCallEnded();
|
||||
protected abstract void onCleanUpConnection(boolean tearDown, int apnId, String reason);
|
||||
protected abstract void onCleanUpAllConnections();
|
||||
protected abstract void onCleanUpAllConnections(String cause);
|
||||
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
@@ -517,7 +517,7 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
break;
|
||||
|
||||
case EVENT_CLEAN_UP_ALL_CONNECTIONS: {
|
||||
onCleanUpAllConnections();
|
||||
onCleanUpAllConnections((String) msg.obj);
|
||||
break;
|
||||
}
|
||||
case EVENT_CLEAN_UP_CONNECTION: {
|
||||
@@ -920,7 +920,7 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
resetAllRetryCounts();
|
||||
onTrySetupData(Phone.REASON_DATA_ENABLED);
|
||||
} else {
|
||||
cleanUpAllConnections();
|
||||
cleanUpAllConnections(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -930,8 +930,9 @@ public abstract class DataConnectionTracker extends Handler {
|
||||
return mDataEnabled;
|
||||
}
|
||||
|
||||
public void cleanUpAllConnections() {
|
||||
public void cleanUpAllConnections(String cause) {
|
||||
Message msg = obtainMessage(EVENT_CLEAN_UP_ALL_CONNECTIONS);
|
||||
msg.obj = cause;
|
||||
sendMessage(msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -243,7 +243,7 @@ public abstract class PhoneBase extends Handler implements Phone {
|
||||
synchronized(PhoneProxy.lockForRadioTechnologyChange) {
|
||||
mCM.unSetOnCallRing(this);
|
||||
// Must cleanup all connectionS and needs to use sendMessage!
|
||||
mDataConnection.cleanUpAllConnections();
|
||||
mDataConnection.cleanUpAllConnections(null);
|
||||
mIsTheCurrentActivePhone = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -269,7 +269,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
if(conn != null) {
|
||||
if (tearDown) {
|
||||
if (DBG) log("cleanUpConnection: teardown, call conn.disconnect");
|
||||
conn.disconnect(obtainMessage(EVENT_DISCONNECT_DONE,
|
||||
conn.disconnect(reason, obtainMessage(EVENT_DISCONNECT_DONE,
|
||||
conn.getDataConnectionId(), 0, reason));
|
||||
notificationDeferred = true;
|
||||
} else {
|
||||
@@ -367,7 +367,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
protected void restartRadio() {
|
||||
if (DBG) log("Cleanup connection and wait " +
|
||||
(TIME_DELAYED_TO_RESTART_RADIO / 1000) + "s to restart radio");
|
||||
cleanUpAllConnections();
|
||||
cleanUpAllConnections(null);
|
||||
sendEmptyMessageDelayed(EVENT_RESTART_RADIO, TIME_DELAYED_TO_RESTART_RADIO);
|
||||
mPendingRestartRadio = true;
|
||||
}
|
||||
@@ -524,14 +524,14 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
|
||||
protected void onRecordsLoaded() {
|
||||
if (mState == State.FAILED) {
|
||||
cleanUpAllConnections();
|
||||
cleanUpAllConnections(null);
|
||||
}
|
||||
sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA, Phone.REASON_SIM_LOADED));
|
||||
}
|
||||
|
||||
protected void onNVReady() {
|
||||
if (mState == State.FAILED) {
|
||||
cleanUpAllConnections();
|
||||
cleanUpAllConnections(null);
|
||||
}
|
||||
sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
|
||||
}
|
||||
@@ -570,7 +570,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
trySetupData(Phone.REASON_ROAMING_ON);
|
||||
} else {
|
||||
if (DBG) log("Tear down data connection on roaming.");
|
||||
cleanUpAllConnections();
|
||||
cleanUpAllConnections(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -591,7 +591,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
notifyDataAvailability(null);
|
||||
|
||||
if (mState != State.IDLE) {
|
||||
cleanUpAllConnections();
|
||||
cleanUpAllConnections(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -608,7 +608,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
log("We're on the simulator; assuming radio off is meaningless");
|
||||
} else {
|
||||
if (DBG) log("Radio is off and clean up all connection");
|
||||
cleanUpAllConnections();
|
||||
cleanUpAllConnections(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -714,9 +714,9 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCleanUpAllConnections() {
|
||||
protected void onCleanUpAllConnections(String cause) {
|
||||
// Only one CDMA connection is supported
|
||||
cleanUpConnection(true, null);
|
||||
cleanUpConnection(true, cause);
|
||||
}
|
||||
|
||||
private void createAllDataConnectionList() {
|
||||
|
||||
@@ -525,7 +525,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
|
||||
synchronized (this) {
|
||||
if (!mPendingRadioPowerOffAfterDataOff) {
|
||||
if (dcTracker.isAnyActiveDataConnections()) {
|
||||
dcTracker.cleanUpAllConnections();
|
||||
dcTracker.cleanUpAllConnections(Phone.REASON_RADIO_TURNED_OFF);
|
||||
if (sendEmptyMessageDelayed(EVENT_SET_RADIO_POWER_OFF, 30000)) {
|
||||
if (DBG) log("Wait upto 30s for data to disconnect, then turn off radio.");
|
||||
mPendingRadioPowerOffAfterDataOff = true;
|
||||
@@ -534,7 +534,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker {
|
||||
hangupAndPowerOff();
|
||||
}
|
||||
} else {
|
||||
dcTracker.cleanUpAllConnections();
|
||||
dcTracker.cleanUpAllConnections(Phone.REASON_RADIO_TURNED_OFF);
|
||||
if (DBG) log("Data disconnected, turn off radio right away.");
|
||||
hangupAndPowerOff();
|
||||
}
|
||||
|
||||
@@ -708,8 +708,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
*/
|
||||
|
||||
@Override
|
||||
protected void onCleanUpAllConnections() {
|
||||
cleanUpAllConnections(true, null);
|
||||
protected void onCleanUpAllConnections(String cause) {
|
||||
cleanUpAllConnections(true, cause);
|
||||
}
|
||||
|
||||
private void cleanUpConnection(boolean tearDown, ApnContext apnContext) {
|
||||
@@ -745,7 +745,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
|
||||
apnContext.setState(State.DISCONNECTING);
|
||||
if (tearDown ) {
|
||||
Message msg = obtainMessage(EVENT_DISCONNECT_DONE, apnContext);
|
||||
conn.disconnect(msg);
|
||||
conn.disconnect(apnContext.getReason(), msg);
|
||||
} else {
|
||||
conn.resetSynchronously();
|
||||
apnContext.setState(State.IDLE);
|
||||
|
||||
Reference in New Issue
Block a user