summaryrefslogtreecommitdiffstats
path: root/telephony
diff options
context:
space:
mode:
authorWink Saville <wink@google.com>2011-03-31 15:46:25 -0700
committerWink Saville <wink@google.com>2011-03-31 15:46:25 -0700
commit261306889e75ecc2b2fcac1165cfc39f03610979 (patch)
tree0122fe2273177c9d9d630a7cce23808beda05090 /telephony
parentb136aa6c9a1c043ff91357cea9e0b6597c904507 (diff)
downloadframeworks_base-261306889e75ecc2b2fcac1165cfc39f03610979.zip
frameworks_base-261306889e75ecc2b2fcac1165cfc39f03610979.tar.gz
frameworks_base-261306889e75ecc2b2fcac1165cfc39f03610979.tar.bz2
Telephony: Add Powerdown Cause to PDP Deactivate Message.
Modem needs to know if PDP deactivation is due to UE power down so that it can do detach. Change-Id: Ie63f90f005845fcd6bfab421f193058b6e2e78d5
Diffstat (limited to 'telephony')
-rw-r--r--telephony/java/com/android/internal/telephony/DataConnection.java17
-rw-r--r--telephony/java/com/android/internal/telephony/DataConnectionTracker.java9
-rw-r--r--telephony/java/com/android/internal/telephony/PhoneBase.java2
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java18
-rwxr-xr-xtelephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java4
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java6
6 files changed, 29 insertions, 27 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnection.java b/telephony/java/com/android/internal/telephony/DataConnection.java
index b5578c3..e21e951 100644
--- a/telephony/java/com/android/internal/telephony/DataConnection.java
+++ b/telephony/java/com/android/internal/telephony/DataConnection.java
@@ -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.
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index 8a029f1..fba73fb5 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -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);
}
diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java
index 5408ce9..779b125 100644
--- a/telephony/java/com/android/internal/telephony/PhoneBase.java
+++ b/telephony/java/com/android/internal/telephony/PhoneBase.java
@@ -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;
}
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index 01519a7..3d10c9c 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -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() {
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
index 658de84..4c6cd17 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
@@ -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();
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 22c4640..4d94b27 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -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);