Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit deb62be2 authored by Wink Saville's avatar Wink Saville Committed by Android (Google) Code Review
Browse files

Merge "Configure RAT dependent retry pattern in GSM DCT." into honeycomb-LTE

parents 4281817f 789df167
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -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()) {
+6 −5
Original line number Diff line number Diff line
@@ -247,10 +247,11 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
        boolean hasLocationChanged = !newCellLoc.equals(cellLoc);

        boolean has4gHandoff =
                ((networkType == 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));
                  (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();
        }

+19 −10
Original line number Diff line number Diff line
@@ -609,9 +609,20 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
        for (DataConnectionAc dcac : mDataConnectionAsyncChannels.values()) {
            if (dcac.getReconnectIntentSync() != null) {
                cancelReconnectAlarm(dcac);
            }
            // update retry config for existing calls to match up
            // ones for the new RAT.
            if (dcac.dataConnection != null) {
                    dcac.dataConnection.resetRetryCount();
                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"))) {
                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 " +