summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWink Saville <wink@google.com>2011-07-24 09:11:28 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-07-24 09:11:28 -0700
commitdeb62be2e87b19e9bbbc668f8d9327b12dba4a3b (patch)
treef26293bc37358c2b45ba75c70be4ca24c6e65bd8
parent4281817f6b624cb51926eb24fa78c68cd9431dce (diff)
parent789df167fa31e684baa957aea1a4430963bf12b1 (diff)
downloadframeworks_base-deb62be2e87b19e9bbbc668f8d9327b12dba4a3b.zip
frameworks_base-deb62be2e87b19e9bbbc668f8d9327b12dba4a3b.tar.gz
frameworks_base-deb62be2e87b19e9bbbc668f8d9327b12dba4a3b.tar.bz2
Merge "Configure RAT dependent retry pattern in GSM DCT." into honeycomb-LTE
-rw-r--r--telephony/java/com/android/internal/telephony/DataConnectionTracker.java22
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java11
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java29
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 977b412..923cc21 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -34,6 +34,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;
@@ -993,6 +994,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 dd7ec2f..aa56cca 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 " +