diff options
author | Wink Saville <wink@google.com> | 2011-10-18 13:38:09 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-10-18 13:38:09 -0700 |
commit | 7a0390b97c0a9dfa4a32cd472a83a9f7471ba569 (patch) | |
tree | bced17826e2b0a10fcd24c761a07ec4aa769a1b4 /telephony | |
parent | 7c3a18398f8cd8977079fad34a6bfc3fdab6378e (diff) | |
parent | 07848843b23e10e4728fa779cc79fc38a341cf6b (diff) | |
download | frameworks_base-7a0390b97c0a9dfa4a32cd472a83a9f7471ba569.zip frameworks_base-7a0390b97c0a9dfa4a32cd472a83a9f7471ba569.tar.gz frameworks_base-7a0390b97c0a9dfa4a32cd472a83a9f7471ba569.tar.bz2 |
am 07848843: Merge "Add DataConnection#isEmergency and use in trySetupData." into ics-mr0
* commit '07848843b23e10e4728fa779cc79fc38a341cf6b':
Add DataConnection#isEmergency and use in trySetupData.
Diffstat (limited to 'telephony')
5 files changed, 43 insertions, 13 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index 759a84b..97e7aa3 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -676,6 +676,15 @@ public abstract class DataConnectionTracker extends Handler { return result; } + protected boolean isEmergency() { + final boolean result; + synchronized (mDataEnabledLock) { + result = mPhone.isInEcm() || mPhone.isInEmergencyCall(); + } + log("isEmergency: result=" + result); + return result; + } + protected int apnTypeToId(String type) { if (TextUtils.equals(type, Phone.APN_TYPE_DEFAULT)) { return APN_DEFAULT_ID; @@ -981,17 +990,14 @@ public abstract class DataConnectionTracker extends Handler { protected void onSetInternalDataEnabled(boolean enabled) { synchronized (mDataEnabledLock) { - final boolean prevEnabled = getAnyDataEnabled(); - if (mInternalDataEnabled != enabled) { - mInternalDataEnabled = enabled; - if (prevEnabled != getAnyDataEnabled()) { - if (!prevEnabled) { - resetAllRetryCounts(); - onTrySetupData(Phone.REASON_DATA_ENABLED); - } else { - cleanUpAllConnections(null); - } - } + mInternalDataEnabled = enabled; + if (enabled) { + log("onSetInternalDataEnabled: changed to enabled, try to setup data call"); + resetAllRetryCounts(); + onTrySetupData(Phone.REASON_DATA_ENABLED); + } else { + log("onSetInternalDataEnabled: changed to disabled, cleanUpAllConnections"); + cleanUpAllConnections(null); } } } diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java index a7a4908..10121dd 100644 --- a/telephony/java/com/android/internal/telephony/PhoneBase.java +++ b/telephony/java/com/android/internal/telephony/PhoneBase.java @@ -832,6 +832,22 @@ public abstract class PhoneBase extends Handler implements Phone { mNotifier.notifyOtaspChanged(this, otaspMode); } + /** + * @return true if a mobile originating emergency call is active + */ + public boolean isInEmergencyCall() { + return false; + } + + /** + * @return true if we are in the emergency call back mode. This is a period where + * the phone should be using as little power as possible and be ready to receive an + * incoming call from the emergency operator. + */ + public boolean isInEcm() { + return false; + } + public abstract String getPhoneName(); public abstract int getPhoneType(); diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java index 09ee28c..58e3e5f 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java @@ -848,6 +848,14 @@ public class CDMAPhone extends PhoneBase { mUnknownConnectionRegistrants.notifyResult(this); } + public boolean isInEmergencyCall() { + return mCT.isInEmergencyCall(); + } + + public boolean isInEcm() { + return mIsPhoneInEcmState; + } + void sendEmergencyCallbackModeChange(){ //Send an Intent Intent intent = new Intent(TelephonyIntents.ACTION_EMERGENCY_CALLBACK_MODE_CHANGED); diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 3c7ff05..f5d05a1 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -248,7 +248,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { boolean desiredPowerState = mCdmaPhone.mSST.getDesiredPowerState(); if ((mState == State.IDLE || mState == State.SCANNING) && - isDataAllowed() && getAnyDataEnabled()) { + isDataAllowed() && getAnyDataEnabled() && !isEmergency()) { boolean retValue = setupData(reason); notifyOffApnsOfAvailability(reason); return retValue; diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 5497b7f..ac3cdb8 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -686,7 +686,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { boolean desiredPowerState = mPhone.getServiceStateTracker().getDesiredPowerState(); if ((apnContext.getState() == State.IDLE || apnContext.getState() == State.SCANNING) && - isDataAllowed(apnContext) && getAnyDataEnabled()) { + isDataAllowed(apnContext) && getAnyDataEnabled() && !isEmergency()) { if (apnContext.getState() == State.IDLE) { ArrayList<ApnSetting> waitingApns = buildWaitingApns(apnContext.getApnType()); |