diff options
author | Wink Saville <wink@google.com> | 2011-07-24 09:15:39 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-07-24 09:15:39 -0700 |
commit | 895de9269fa125bf3903c21faf5e8d2750bfb000 (patch) | |
tree | 2e66cd7db93033847b1b3dbe292158430a1106c7 | |
parent | d2dd1e657c06cc37227861c37243e714636efb89 (diff) | |
parent | 051660d4d6d293f4b561bc6a772c70aa077a578a (diff) | |
download | frameworks_base-895de9269fa125bf3903c21faf5e8d2750bfb000.zip frameworks_base-895de9269fa125bf3903c21faf5e8d2750bfb000.tar.gz frameworks_base-895de9269fa125bf3903c21faf5e8d2750bfb000.tar.bz2 |
am 051660d4: am deb62be2: Merge "Configure RAT dependent retry pattern in GSM DCT." into honeycomb-LTE
* commit '051660d4d6d293f4b561bc6a772c70aa077a578a':
Configure RAT dependent retry pattern in GSM DCT.
3 files changed, 47 insertions, 15 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index 4f8b525..3bd78e0 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -36,6 +36,7 @@ import android.os.Messenger; import android.os.SystemProperties; import android.preference.PreferenceManager; import android.provider.Settings; +import android.telephony.ServiceState; import android.provider.Settings.SettingNotFoundException; import android.text.TextUtils; import android.util.Log; @@ -1031,6 +1032,27 @@ public abstract class DataConnectionTracker extends Handler { protected void onSetDependencyMet(String apnType, boolean met) { } + protected String getReryConfig(boolean forDefault) { + int rt = mPhone.getServiceState().getRadioTechnology(); + + if ((rt == ServiceState.RADIO_TECHNOLOGY_IS95A) || + (rt == ServiceState.RADIO_TECHNOLOGY_IS95B) || + (rt == ServiceState.RADIO_TECHNOLOGY_1xRTT) || + (rt == ServiceState.RADIO_TECHNOLOGY_EVDO_0) || + (rt == ServiceState.RADIO_TECHNOLOGY_EVDO_A) || + (rt == ServiceState.RADIO_TECHNOLOGY_EVDO_B) || + (rt == ServiceState.RADIO_TECHNOLOGY_EHRPD)) { + // CDMA variant + return SystemProperties.get("ro.cdma.data_retry_config"); + } else { + // Use GSM varient for all others. + if (forDefault) { + return SystemProperties.get("ro.gsm.data_retry_config"); + } else { + return SystemProperties.get("ro.gsm.2nd_data_retry_config"); + } + } + } protected void resetAllRetryCounts() { for (DataConnection dc : mDataConnections.values()) { diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java index 5df2edd..d3bb6a5 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java @@ -247,10 +247,11 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { boolean hasLocationChanged = !newCellLoc.equals(cellLoc); boolean has4gHandoff = - ((networkType == ServiceState.RADIO_TECHNOLOGY_LTE) && - (newNetworkType == ServiceState.RADIO_TECHNOLOGY_EHRPD)) || - ((networkType == ServiceState.RADIO_TECHNOLOGY_EHRPD) && - (newNetworkType == ServiceState.RADIO_TECHNOLOGY_LTE)); + mNewDataConnectionState == ServiceState.STATE_IN_SERVICE && + (((networkType == ServiceState.RADIO_TECHNOLOGY_LTE) && + (newNetworkType == ServiceState.RADIO_TECHNOLOGY_EHRPD)) || + ((networkType == ServiceState.RADIO_TECHNOLOGY_EHRPD) && + (newNetworkType == ServiceState.RADIO_TECHNOLOGY_LTE))); boolean hasMultiApnSupport = (((newNetworkType == ServiceState.RADIO_TECHNOLOGY_LTE) || @@ -391,7 +392,7 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { phone.notifyServiceStateChanged(ss); } - if (hasCdmaDataConnectionAttached) { + if (hasCdmaDataConnectionAttached || has4gHandoff) { mAttachedRegistrants.notifyRegistrants(); } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index a807e99..be129d5 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -609,9 +609,20 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { for (DataConnectionAc dcac : mDataConnectionAsyncChannels.values()) { if (dcac.getReconnectIntentSync() != null) { cancelReconnectAlarm(dcac); - if (dcac.dataConnection != null) { - dcac.dataConnection.resetRetryCount(); + } + // update retry config for existing calls to match up + // ones for the new RAT. + if (dcac.dataConnection != null) { + Collection<ApnContext> apns = dcac.getApnListSync(); + + boolean hasDefault = false; + for (ApnContext apnContext : apns) { + if (apnContext.getApnType().equals(Phone.APN_TYPE_DEFAULT)) { + hasDefault = true; + break; + } } + configureRetry(dcac.dataConnection, hasDefault); } } @@ -973,7 +984,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { // configure retry count if no other Apn is using the same connection. if (refCount == 0) { - configureRetry(dc, apnContext.getApnType()); + configureRetry(dc, apn.canHandleType(Phone.APN_TYPE_DEFAULT)); } apnContext.setDataConnectionAc(dcac); apnContext.setDataConnection(dc); @@ -2026,20 +2037,18 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { return conn; } - private void configureRetry(DataConnection dc, String apnType) { - if ((dc == null) || (apnType == null)) return; + private void configureRetry(DataConnection dc, boolean forDefault) { + if (dc == null) return; - if (apnType.equals(Phone.APN_TYPE_DEFAULT)) { - if (!dc.configureRetry(SystemProperties.get("ro.gsm.data_retry_config"))) { + if (!dc.configureRetry(getReryConfig(forDefault))) { + if (forDefault) { if (!dc.configureRetry(DEFAULT_DATA_RETRY_CONFIG)) { // Should never happen, log an error and default to a simple linear sequence. loge("configureRetry: Could not configure using " + "DEFAULT_DATA_RETRY_CONFIG=" + DEFAULT_DATA_RETRY_CONFIG); dc.configureRetry(20, 2000, 1000); } - } - } else { - if (!dc.configureRetry(SystemProperties.get("ro.gsm.2nd_data_retry_config"))) { + } else { if (!dc.configureRetry(SECONDARY_DATA_RETRY_CONFIG)) { // Should never happen, log an error and default to a simple sequence. loge("configureRetry: Could note configure using " + |