summaryrefslogtreecommitdiffstats
path: root/telephony/java
diff options
context:
space:
mode:
authorYong Zhang <yzhang@motorola.com>2009-09-04 16:41:36 -0500
committerWink Saville <wink@google.com>2009-09-21 15:31:09 -0700
commite4e8e4d4f2a8ccd552670df592bed67481133344 (patch)
treecffca59d9815a80005c9eaa792933afd0f14b804 /telephony/java
parent31a12429b77e87b5047589d251642b975ad35b9a (diff)
downloadframeworks_base-e4e8e4d4f2a8ccd552670df592bed67481133344.zip
frameworks_base-e4e8e4d4f2a8ccd552670df592bed67481133344.tar.gz
frameworks_base-e4e8e4d4f2a8ccd552670df592bed67481133344.tar.bz2
Resolve race conditions with disconnect of CDMA data and airplane mode
Specifically, wait for data to be deactivated when setPowerStateToDesired() is called during data activation. Bug: 2101430 Change-Id: Ia97dd799f779c3f88f66bc1235e7a65958e1e04f
Diffstat (limited to 'telephony/java')
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
index 9ac78eb..a410f0e 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java
@@ -538,12 +538,15 @@ final class CdmaServiceStateTracker extends ServiceStateTracker {
if (!mPendingRadioPowerOffAfterDataOff) {
DataConnectionTracker.State currentState = dcTracker.getState();
if (currentState != DataConnectionTracker.State.CONNECTED
- && currentState != DataConnectionTracker.State.DISCONNECTING) {
+ && currentState != DataConnectionTracker.State.DISCONNECTING
+ && currentState != DataConnectionTracker.State.INITING) {
if (DBG) log("Data disconnected, turn off radio right away.");
cm.setRadioPower(false, null);
}
- else if (sendEmptyMessageDelayed(EVENT_SET_RADIO_POWER_OFF, 5000)) {
- if (DBG) log("Wait 5 sec for data to be disconnected, then turn off radio.");
+ else if (sendEmptyMessageDelayed(EVENT_SET_RADIO_POWER_OFF, 30000)) {
+ if (DBG) {
+ log("Wait up to 30 sec for data to disconnect, then turn off radio.");
+ }
mPendingRadioPowerOffAfterDataOff = true;
} else {
Log.w(LOG_TAG, "Cannot send delayed Msg, turn off radio right away.");