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

Commit 1d2c0802 authored by Sarah Chin's avatar Sarah Chin
Browse files

Carrier config, log, and typo cleanup

No major functional/behavioral changes.
Query carrier configs once when they're updated instead of every time.
Use carrier-specific configs if they exist, otherwise use default.
Fix logs that were getting cut off or not printed properly.
Fix typos in variable names.
Remove unused variables or methods.

Test: atest ServiceStateTrackerTest, NetworkTypeControllerTest
Change-Id: Ib1be6804ef6f38c603414c5aa03ad52bcb3691cd
parent 6bab9a9d
Loading
Loading
Loading
Loading
+70 −105
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.telephony.data.DataCallResponse.LinkStatus;
import android.text.TextUtils;

import com.android.internal.telephony.data.DataNetworkController.DataNetworkControllerCallback;
import com.android.internal.telephony.data.DataUtils;
import com.android.internal.telephony.util.ArrayUtils;
import com.android.internal.util.IState;
import com.android.internal.util.IndentingPrintWriter;
@@ -154,7 +155,7 @@ public class NetworkTypeController extends StateMachine {
    private boolean mIsPhysicalChannelConfigOn;
    private boolean mIsPrimaryTimerActive;
    private boolean mIsSecondaryTimerActive;
    private boolean mIsTimerResetEnabledForLegacyStateRRCIdle;
    private boolean mIsTimerResetEnabledForLegacyStateRrcIdle;
    private int mLtePlusThresholdBandwidth;
    private int mNrAdvancedThresholdBandwidth;
    private boolean mIncludeLteForNrAdvancedThresholdBandwidth;
@@ -192,13 +193,14 @@ public class NetworkTypeController extends StateMachine {
        mPrimaryTimerState = "";
        mSecondaryTimerState = "";
        mPreviousState = "";
        addState(mDefaultState);
        addState(mLegacyState, mDefaultState);
        addState(mIdleState, mDefaultState);
        addState(mLteConnectedState, mDefaultState);
        addState(mNrConnectedState, mDefaultState);
        addState(mNrConnectedAdvancedState, mDefaultState);
        setInitialState(mDefaultState);
        DefaultState defaultState = new DefaultState();
        addState(defaultState);
        addState(mLegacyState, defaultState);
        addState(mIdleState, defaultState);
        addState(mLteConnectedState, defaultState);
        addState(mNrConnectedState, defaultState);
        addState(mNrConnectedAdvancedState, defaultState);
        setInitialState(defaultState);
        start();

        mServiceState = mPhone.getServiceStateTracker().getServiceState();
@@ -263,65 +265,30 @@ public class NetworkTypeController extends StateMachine {
    }

    private void parseCarrierConfigs() {
        String nrIconConfiguration = CarrierConfigManager.getDefaultConfig().getString(
                CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING);
        String overrideTimerRule = CarrierConfigManager.getDefaultConfig().getString(
                CarrierConfigManager.KEY_5G_ICON_DISPLAY_GRACE_PERIOD_STRING);
        String overrideSecondaryTimerRule = CarrierConfigManager.getDefaultConfig().getString(
                CarrierConfigManager.KEY_5G_ICON_DISPLAY_SECONDARY_GRACE_PERIOD_STRING);
        mLteEnhancedPattern = CarrierConfigManager.getDefaultConfig().getString(
                CarrierConfigManager.KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING);
        mIsTimerResetEnabledForLegacyStateRRCIdle =
                CarrierConfigManager.getDefaultConfig().getBoolean(
                        CarrierConfigManager.KEY_NR_TIMERS_RESET_IF_NON_ENDC_AND_RRC_IDLE_BOOL);
        mLtePlusThresholdBandwidth = CarrierConfigManager.getDefaultConfig().getInt(
                CarrierConfigManager.KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT);
        mNrAdvancedThresholdBandwidth = CarrierConfigManager.getDefaultConfig().getInt(
                CarrierConfigManager.KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT);
        mIncludeLteForNrAdvancedThresholdBandwidth = CarrierConfigManager.getDefaultConfig()
                .getBoolean(CarrierConfigManager
                        .KEY_INCLUDE_LTE_FOR_NR_ADVANCED_THRESHOLD_BANDWIDTH_BOOL);
        mEnableNrAdvancedWhileRoaming = CarrierConfigManager.getDefaultConfig().getBoolean(
                CarrierConfigManager.KEY_ENABLE_NR_ADVANCED_WHILE_ROAMING_BOOL);

        CarrierConfigManager configManager = (CarrierConfigManager) mPhone.getContext()
                .getSystemService(Context.CARRIER_CONFIG_SERVICE);
        PersistableBundle config = CarrierConfigManager.getDefaultConfig();
        CarrierConfigManager configManager =
                mPhone.getContext().getSystemService(CarrierConfigManager.class);
        if (configManager != null) {
            PersistableBundle b = configManager.getConfigForSubId(mPhone.getSubId());
            if (b != null) {
                if (b.getString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING) != null) {
                    nrIconConfiguration = b.getString(
                            CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING);
                config = b;
            }
                if (b.getString(CarrierConfigManager
                        .KEY_5G_ICON_DISPLAY_GRACE_PERIOD_STRING) != null) {
                    overrideTimerRule = b.getString(
                            CarrierConfigManager.KEY_5G_ICON_DISPLAY_GRACE_PERIOD_STRING);
        }
                if (b.getString(CarrierConfigManager
                        .KEY_5G_ICON_DISPLAY_SECONDARY_GRACE_PERIOD_STRING) != null) {
                    overrideSecondaryTimerRule = b.getString(
                            CarrierConfigManager.KEY_5G_ICON_DISPLAY_SECONDARY_GRACE_PERIOD_STRING);
                }
                if (b.getString(CarrierConfigManager
                        .KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING) != null) {
                    mLteEnhancedPattern = b.getString(
        mLteEnhancedPattern = config.getString(
                CarrierConfigManager.KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING);
                }
                mIsTimerResetEnabledForLegacyStateRRCIdle = b.getBoolean(
        mIsTimerResetEnabledForLegacyStateRrcIdle = config.getBoolean(
                CarrierConfigManager.KEY_NR_TIMERS_RESET_IF_NON_ENDC_AND_RRC_IDLE_BOOL);
                mLtePlusThresholdBandwidth = b.getInt(
                        CarrierConfigManager.KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT,
                        mLtePlusThresholdBandwidth);
                mNrAdvancedThresholdBandwidth = b.getInt(
                        CarrierConfigManager.KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT,
                        mNrAdvancedThresholdBandwidth);
                mIncludeLteForNrAdvancedThresholdBandwidth = b.getBoolean(CarrierConfigManager
                        .KEY_INCLUDE_LTE_FOR_NR_ADVANCED_THRESHOLD_BANDWIDTH_BOOL,
                        mIncludeLteForNrAdvancedThresholdBandwidth);
                mAdditionalNrAdvancedBandsList = b.getIntArray(
        mLtePlusThresholdBandwidth = config.getInt(
                CarrierConfigManager.KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT);
        mNrAdvancedThresholdBandwidth = config.getInt(
                CarrierConfigManager.KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT);
        mIncludeLteForNrAdvancedThresholdBandwidth = config.getBoolean(
                CarrierConfigManager.KEY_INCLUDE_LTE_FOR_NR_ADVANCED_THRESHOLD_BANDWIDTH_BOOL);
        mEnableNrAdvancedWhileRoaming = config.getBoolean(
                CarrierConfigManager.KEY_ENABLE_NR_ADVANCED_WHILE_ROAMING_BOOL);
        mAdditionalNrAdvancedBandsList = config.getIntArray(
                CarrierConfigManager.KEY_ADDITIONAL_NR_ADVANCED_BANDS_INT_ARRAY);
                mNrAdvancedCapablePcoId = b.getInt(
        mNrAdvancedCapablePcoId = config.getInt(
                CarrierConfigManager.KEY_NR_ADVANCED_CAPABLE_PCO_ID_INT);
        if (mNrAdvancedCapablePcoId > 0 && mNrAdvancedCapableByPcoChangedCallback == null) {
            mNrAdvancedCapableByPcoChangedCallback =
@@ -335,27 +302,23 @@ public class NetworkTypeController extends StateMachine {
                    };
            mPhone.getDataNetworkController().registerDataNetworkControllerCallback(
                    mNrAdvancedCapableByPcoChangedCallback);
                } else if (mNrAdvancedCapablePcoId == 0
                        && mNrAdvancedCapableByPcoChangedCallback != null) {
        } else if (mNrAdvancedCapablePcoId == 0 && mNrAdvancedCapableByPcoChangedCallback != null) {
            mPhone.getDataNetworkController().unregisterDataNetworkControllerCallback(
                    mNrAdvancedCapableByPcoChangedCallback);
            mNrAdvancedCapableByPcoChangedCallback = null;
        }
                mEnableNrAdvancedWhileRoaming = b.getBoolean(
                        CarrierConfigManager.KEY_ENABLE_NR_ADVANCED_WHILE_ROAMING_BOOL);
                mIsUsingUserDataForRrcDetection = b.getBoolean(
        mIsUsingUserDataForRrcDetection = config.getBoolean(
                CarrierConfigManager.KEY_LTE_ENDC_USING_USER_DATA_FOR_RRC_DETECTION_BOOL);
                if (!mIsPhysicalChannelConfig16Supported || mIsUsingUserDataForRrcDetection) {
        if (!isUsingPhysicalChannelConfigForRrcDetection()) {
            if (mNrPhysicalLinkStatusChangedCallback == null) {
                mNrPhysicalLinkStatusChangedCallback =
                        new DataNetworkControllerCallback(getHandler()::post) {
                            @Override
                            public void onPhysicalLinkStatusChanged(
                                    @LinkStatus int status) {
                                sendMessage(obtainMessage(
                                        EVENT_PHYSICAL_LINK_STATUS_CHANGED,
                            public void onPhysicalLinkStatusChanged(@LinkStatus int status) {
                                sendMessage(obtainMessage(EVENT_PHYSICAL_LINK_STATUS_CHANGED,
                                        new AsyncResult(null, status, null)));
                            }};
                            }
                        };
                mPhone.getDataNetworkController().registerDataNetworkControllerCallback(
                        mNrPhysicalLinkStatusChangedCallback);
            }
@@ -364,8 +327,12 @@ public class NetworkTypeController extends StateMachine {
                    mNrPhysicalLinkStatusChangedCallback);
            mNrPhysicalLinkStatusChangedCallback = null;
        }
            }
        }
        String nrIconConfiguration = config.getString(
                CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING);
        String overrideTimerRule = config.getString(
                CarrierConfigManager.KEY_5G_ICON_DISPLAY_GRACE_PERIOD_STRING);
        String overrideSecondaryTimerRule = config.getString(
                CarrierConfigManager.KEY_5G_ICON_DISPLAY_SECONDARY_GRACE_PERIOD_STRING);
        createTimerRules(nrIconConfiguration, overrideTimerRule, overrideSecondaryTimerRule);
    }

@@ -661,8 +628,6 @@ public class NetworkTypeController extends StateMachine {
        }
    }

    private final DefaultState mDefaultState = new DefaultState();

    /**
     * Device does not have NR available, due to any of the below reasons:
     * <ul>
@@ -721,7 +686,7 @@ public class NetworkTypeController extends StateMachine {
                    if (DBG) log("Physical channel configs updated: " + mPhysicalChannelConfigs);
                    if (isUsingPhysicalChannelConfigForRrcDetection()) {
                        mPhysicalLinkStatus = getPhysicalLinkStatusFromPhysicalChannelConfig();
                        if (mIsTimerResetEnabledForLegacyStateRRCIdle && !isPhysicalLinkActive()) {
                        if (mIsTimerResetEnabledForLegacyStateRrcIdle && !isPhysicalLinkActive()) {
                            if (DBG) log("Reset timers since timer reset is enabled for RRC idle.");
                            resetAllTimers();
                        }
@@ -730,7 +695,7 @@ public class NetworkTypeController extends StateMachine {
                case EVENT_PHYSICAL_LINK_STATUS_CHANGED:
                    AsyncResult ar = (AsyncResult) msg.obj;
                    mPhysicalLinkStatus = (int) ar.result;
                    if (mIsTimerResetEnabledForLegacyStateRRCIdle && !isPhysicalLinkActive()) {
                    if (mIsTimerResetEnabledForLegacyStateRrcIdle && !isPhysicalLinkActive()) {
                        if (DBG) log("Reset timers since timer reset is enabled for RRC idle.");
                        resetAllTimers();
                        updateOverrideNetworkType();
@@ -1394,16 +1359,16 @@ public class NetworkTypeController extends StateMachine {
        pw.println("mIsPhysicalChannelConfigOn=" + mIsPhysicalChannelConfigOn);
        pw.println("mIsPrimaryTimerActive=" + mIsPrimaryTimerActive);
        pw.println("mIsSecondaryTimerActive=" + mIsSecondaryTimerActive);
        pw.println("mIsTimerRestEnabledForLegacyStateRRCIdle="
                + mIsTimerResetEnabledForLegacyStateRRCIdle);
        pw.println("mIsTimerResetEnabledForLegacyStateRrcIdle="
                + mIsTimerResetEnabledForLegacyStateRrcIdle);
        pw.println("mLtePlusThresholdBandwidth=" + mLtePlusThresholdBandwidth);
        pw.println("mNrAdvancedThresholdBandwidth=" + mNrAdvancedThresholdBandwidth);
        pw.println("mAdditionalNrAdvancedBandsList="
                + Arrays.toString(mAdditionalNrAdvancedBandsList));
        pw.println("mPrimaryTimerState=" + mPrimaryTimerState);
        pw.println("mSecondaryTimerState=" + mSecondaryTimerState);
        pw.println("mPreviousState=" + mPreviousState);
        pw.println("mPhysicalLinkStatus=" + mPhysicalLinkStatus);
        pw.println("mAdditionalNrAdvancedBandsList="
                + Arrays.toString(mAdditionalNrAdvancedBandsList));
        pw.println("mPhysicalLinkStatus=" + DataUtils.linkStatusToString(mPhysicalLinkStatus));
        pw.println("mIsPhysicalChannelConfig16Supported=" + mIsPhysicalChannelConfig16Supported);
        pw.println("mIsNrAdvancedAllowedByPco=" + mIsNrAdvancedAllowedByPco);
        pw.println("mNrAdvancedCapablePcoId=" + mNrAdvancedCapablePcoId);
+78 −122

File changed.

Preview size limit exceeded, changes collapsed.

+11 −11
Original line number Diff line number Diff line
@@ -146,7 +146,7 @@ public class DataStallRecoveryManager extends Handler {
    private final @NonNull DataServiceManager mWwanDataServiceManager;

    /** The data stall recovery action. */
    private @RecoveryAction int mRecovryAction;
    private @RecoveryAction int mRecoveryAction;
    /** The elapsed real time of last recovery attempted */
    private @ElapsedRealtimeLong long mTimeLastRecoveryStartMs;
    /** Whether current network is good or not */
@@ -362,7 +362,7 @@ public class DataStallRecoveryManager extends Handler {
        cancelNetworkCheckTimer();
        mTimeLastRecoveryStartMs = 0;
        mLastAction = RECOVERY_ACTION_GET_DATA_CALL_LIST;
        mRecovryAction = RECOVERY_ACTION_GET_DATA_CALL_LIST;
        mRecoveryAction = RECOVERY_ACTION_GET_DATA_CALL_LIST;
    }

    /**
@@ -402,8 +402,8 @@ public class DataStallRecoveryManager extends Handler {
    @VisibleForTesting
    @RecoveryAction
    public int getRecoveryAction() {
        log("getRecoveryAction: " + recoveryActionToString(mRecovryAction));
        return mRecovryAction;
        log("getRecoveryAction: " + recoveryActionToString(mRecoveryAction));
        return mRecoveryAction;
    }

    /**
@@ -413,24 +413,24 @@ public class DataStallRecoveryManager extends Handler {
     */
    @VisibleForTesting
    public void setRecoveryAction(@RecoveryAction int action) {
        mRecovryAction = action;
        mRecoveryAction = action;

        // Check if the mobile data enabled is TRUE, it means that the mobile data setting changed
        // from DISABLED to ENABLED, we will set the next recovery action to
        // RECOVERY_ACTION_RADIO_RESTART due to already did the RECOVERY_ACTION_CLEANUP.
        if (mMobileDataChangedToEnabledDuringDataStall
                && mRecovryAction < RECOVERY_ACTION_RADIO_RESTART) {
            mRecovryAction = RECOVERY_ACTION_RADIO_RESTART;
                && mRecoveryAction < RECOVERY_ACTION_RADIO_RESTART) {
            mRecoveryAction = RECOVERY_ACTION_RADIO_RESTART;
        }
        // Check if the radio state changed from off to on, it means that the modem already
        // did the radio restart, we will set the next action to RECOVERY_ACTION_RESET_MODEM.
        if (mRadioStateChangedDuringDataStall
                && mRadioPowerState == TelephonyManager.RADIO_POWER_ON) {
            mRecovryAction = RECOVERY_ACTION_RESET_MODEM;
            mRecoveryAction = RECOVERY_ACTION_RESET_MODEM;
        }
        // To check the flag from DataConfigManager if we need to skip the step.
        if (shouldSkipRecoveryAction(mRecovryAction)) {
            switch (mRecovryAction) {
        if (shouldSkipRecoveryAction(mRecoveryAction)) {
            switch (mRecoveryAction) {
                case RECOVERY_ACTION_GET_DATA_CALL_LIST:
                    setRecoveryAction(RECOVERY_ACTION_CLEANUP);
                    break;
@@ -446,7 +446,7 @@ public class DataStallRecoveryManager extends Handler {
            }
        }

        log("setRecoveryAction: " + recoveryActionToString(mRecovryAction));
        log("setRecoveryAction: " + recoveryActionToString(mRecoveryAction));
    }

    /**
+6 −57

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -2471,7 +2471,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {

    @Test
    @SmallTest
    public void testGetMdn() throws Exception {
    public void testGetMdn() {
        doReturn(false).when(mPhone).isPhoneTypeGsm();
        doReturn(false).when(mPhone).isPhoneTypeCdma();
        doReturn(true).when(mPhone).isPhoneTypeCdmaLte();