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

Commit d06d5993 authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Add NetworkRegistrationState into SS's list.

When SST received new NetworkRegistrationState, we add it into
SS's list.

Bug: 73305596
Test: regression-test

Change-Id: I9bacd738b87556f3127e09a4ef760a152ce78a6f
parent e44a7285
Loading
Loading
Loading
Loading
+31 −26
Original line number Diff line number Diff line
@@ -1724,21 +1724,22 @@ public class ServiceStateTracker extends Handler {
        int ints[];
        switch (what) {
            case EVENT_POLL_STATE_REGISTRATION: {
                NetworkRegistrationState regStates = (NetworkRegistrationState) ar.result;
                NetworkRegistrationState networkRegState = (NetworkRegistrationState) ar.result;
                VoiceSpecificRegistrationStates voiceSpecificStates =
                        regStates.getVoiceSpecificStates();
                        networkRegState.getVoiceSpecificStates();

                int registrationState = regStates.getRegState();
                int registrationState = networkRegState.getRegState();
                int cssIndicator = voiceSpecificStates.cssSupported ? 1 : 0;
                int newVoiceRat = ServiceState.networkTypeToRilRadioTechnology(
                        regStates.getAccessNetworkTechnology());
                        networkRegState.getAccessNetworkTechnology());

                mNewSS.setVoiceRegState(regCodeToServiceState(registrationState));
                mNewSS.setCssIndicator(cssIndicator);
                mNewSS.setRilVoiceRadioTechnology(newVoiceRat);
                mNewSS.addNetworkRegistrationState(networkRegState);

                //Denial reason if registrationState = 3
                int reasonForDenial = regStates.getReasonForDenial();
                int reasonForDenial = networkRegState.getReasonForDenial();
                if (mPhone.isPhoneTypeGsm()) {

                    mGsmRoaming = regCodeIsRoaming(registrationState);
@@ -1746,7 +1747,7 @@ public class ServiceStateTracker extends Handler {

                    boolean isVoiceCapable = mPhone.getContext().getResources()
                            .getBoolean(com.android.internal.R.bool.config_voice_capable);
                    mEmergencyOnly = regStates.isEmergencyEnabled();
                    mEmergencyOnly = networkRegState.isEmergencyEnabled();
                } else {
                    int roamingIndicator = voiceSpecificStates.roamingIndicator;

@@ -1771,7 +1772,7 @@ public class ServiceStateTracker extends Handler {

                    int systemId = 0;
                    int networkId = 0;
                    CellIdentity cellIdentity = regStates.getCellIdentity();
                    CellIdentity cellIdentity = networkRegState.getCellIdentity();
                    if (cellIdentity != null && cellIdentity.getType() == CellInfoType.CDMA) {
                        systemId = ((CellIdentityCdma) cellIdentity).getSystemId();
                        networkId = ((CellIdentityCdma) cellIdentity).getNetworkId();
@@ -1791,7 +1792,7 @@ public class ServiceStateTracker extends Handler {
                    }
                }

                processCellLocationInfo(mNewCellLoc, regStates.getCellIdentity());
                processCellLocationInfo(mNewCellLoc, networkRegState.getCellIdentity());

                if (DBG) {
                    log("handlPollVoiceRegResultMessage: regState=" + registrationState
@@ -1801,33 +1802,34 @@ public class ServiceStateTracker extends Handler {
            }

            case EVENT_POLL_STATE_GPRS: {
                NetworkRegistrationState regStates = (NetworkRegistrationState) ar.result;
                NetworkRegistrationState networkRegState = (NetworkRegistrationState) ar.result;
                DataSpecificRegistrationStates dataSpecificStates =
                        regStates.getDataSpecificStates();
                int regState = regStates.getRegState();
                int serviceState = regCodeToServiceState(regState);
                        networkRegState.getDataSpecificStates();
                int registrationState = networkRegState.getRegState();
                int serviceState = regCodeToServiceState(registrationState);
                int newDataRat = ServiceState.networkTypeToRilRadioTechnology(
                        regStates.getAccessNetworkTechnology());
                        networkRegState.getAccessNetworkTechnology());
                mNewSS.setDataRegState(serviceState);
                mNewSS.setRilDataRadioTechnology(newDataRat);
                mNewSS.addNetworkRegistrationState(networkRegState);

                if (mPhone.isPhoneTypeGsm()) {

                    mNewReasonDataDenied = regStates.getReasonForDenial();
                    mNewReasonDataDenied = networkRegState.getReasonForDenial();
                    mNewMaxDataCalls = dataSpecificStates.maxDataCalls;
                    mDataRoaming = regCodeIsRoaming(regState);
                    mDataRoaming = regCodeIsRoaming(registrationState);
                    // Save the data roaming state reported by modem registration before resource
                    // overlay or carrier config possibly overrides it.
                    mNewSS.setDataRoamingFromRegistration(mDataRoaming);

                    if (DBG) {
                        log("handlPollStateResultMessage: GsmSST dataServiceState=" + serviceState
                                + " regState=" + regState
                                + " regState=" + registrationState
                                + " dataRadioTechnology=" + newDataRat);
                    }
                } else if (mPhone.isPhoneTypeCdma()) {

                    boolean isDataRoaming = regCodeIsRoaming(regState);
                    boolean isDataRoaming = regCodeIsRoaming(registrationState);
                    mNewSS.setDataRoaming(isDataRoaming);
                    // Save the data roaming state reported by modem registration before resource
                    // overlay or carrier config possibly overrides it.
@@ -1835,7 +1837,7 @@ public class ServiceStateTracker extends Handler {

                    if (DBG) {
                        log("handlPollStateResultMessage: cdma dataServiceState=" + serviceState
                                + " regState=" + regState
                                + " regState=" + registrationState
                                + " dataRadioTechnology=" + newDataRat);
                    }
                } else {
@@ -1856,19 +1858,20 @@ public class ServiceStateTracker extends Handler {
                    }

                    // voice roaming state in done while handling EVENT_POLL_STATE_REGISTRATION_CDMA
                    boolean isDataRoaming = regCodeIsRoaming(regState);
                    boolean isDataRoaming = regCodeIsRoaming(registrationState);
                    mNewSS.setDataRoaming(isDataRoaming);
                    // Save the data roaming state reported by modem registration before resource
                    // overlay or carrier config possibly overrides it.
                    mNewSS.setDataRoamingFromRegistration(isDataRoaming);
                    if (DBG) {
                        log("handlPollStateResultMessage: CdmaLteSST dataServiceState="
                                + serviceState + " regState=" + regState + " dataRadioTechnology="
                                + newDataRat);
                                + serviceState + " registrationState=" + registrationState
                                + " dataRadioTechnology=" + newDataRat);
                    }
                }

                updateServiceStateLteEarfcnBoost(mNewSS, getLteEarfcn(regStates.getCellIdentity()));
                updateServiceStateLteEarfcnBoost(mNewSS,
                        getLteEarfcn(networkRegState.getCellIdentity()));
                break;
            }

@@ -1878,8 +1881,9 @@ public class ServiceStateTracker extends Handler {

                    if (opNames != null && opNames.length >= 3) {
                        // FIXME: Giving brandOverride higher precedence, is this desired?
                        String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ?
                                mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() : null;
                        String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null
                                ? mUiccController.getUiccCard(getPhoneId())
                                        .getOperatorBrandOverride() : null;
                        if (brandOverride != null) {
                            log("EVENT_POLL_STATE_OPERATOR: use brandOverride=" + brandOverride);
                            mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]);
@@ -1909,8 +1913,9 @@ public class ServiceStateTracker extends Handler {
                            // NV device (as opposed to CSIM)
                            mNewSS.setOperatorName(opNames[0], opNames[1], opNames[2]);
                        } else {
                            String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ?
                                    mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() : null;
                            String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null
                                    ? mUiccController.getUiccCard(getPhoneId())
                                    .getOperatorBrandOverride() : null;
                            if (brandOverride != null) {
                                mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]);
                            } else {
+43 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.internal.telephony;

import android.os.Bundle;
import android.os.Parcel;
import android.telephony.AccessNetworkConstants;
import android.telephony.NetworkRegistrationState;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.SmallTest;
@@ -264,4 +266,44 @@ public class ServiceStateTest extends TestCase {

        assertEquals(ss, newSs);
    }

    @SmallTest
    public void testNetworkRegistrationState() {
        NetworkRegistrationState wwanVoiceRegState = new NetworkRegistrationState(
                AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_CS,
                0, 0, 0, false,
                null, null, true, 0, 0, 0);


        NetworkRegistrationState wwanDataRegState = new NetworkRegistrationState(
                AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS,
                0, 0, 0, false,
                null, null, 0);

        NetworkRegistrationState wlanRegState = new NetworkRegistrationState(
                AccessNetworkConstants.TransportType.WLAN, NetworkRegistrationState.DOMAIN_PS,
                0, 0, 0, false,
                null, null);

        ServiceState ss = new ServiceState();

        ss.addNetworkRegistrationState(wwanVoiceRegState);
        ss.addNetworkRegistrationState(wwanDataRegState);
        ss.addNetworkRegistrationState(wlanRegState);

        assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN,
                NetworkRegistrationState.DOMAIN_CS), wwanVoiceRegState);
        assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN,
                NetworkRegistrationState.DOMAIN_PS), wwanDataRegState);
        assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WLAN,
                NetworkRegistrationState.DOMAIN_PS), wlanRegState);

        wwanDataRegState = new NetworkRegistrationState(
                AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS,
                0, 0, 0, true,
                null, null, 0);
        ss.addNetworkRegistrationState(wwanDataRegState);
        assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN,
                NetworkRegistrationState.DOMAIN_PS), wwanDataRegState);
    }
}