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

Commit 99cc5e6a authored by Eric Schwarzenbach's avatar Eric Schwarzenbach
Browse files

Update ServiceState channel number from regState.

Bug: 73728783
Test: runtest frameworks-telephony
Test: manual
Change-Id: I64e2b092c2fa8a6746fc53e38c4ce6b8245e6c92
Merged-In: I64e2b092c2fa8a6746fc53e38c4ce6b8245e6c92
(cherry picked from commit b08281a7)
parent 8056bc17
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1753,6 +1753,7 @@ public class ServiceStateTracker extends Handler {
                mNewSS.setCssIndicator(cssIndicator);
                mNewSS.setRilVoiceRadioTechnology(newVoiceRat);
                mNewSS.addNetworkRegistrationState(networkRegState);
                setChannelNumberFromCellIdentity(mNewSS, networkRegState.getCellIdentity());

                //Denial reason if registrationState = 3
                int reasonForDenial = networkRegState.getReasonForDenial();
@@ -1828,6 +1829,7 @@ public class ServiceStateTracker extends Handler {
                mNewSS.setDataRegState(serviceState);
                mNewSS.setRilDataRadioTechnology(newDataRat);
                mNewSS.addNetworkRegistrationState(networkRegState);
                setChannelNumberFromCellIdentity(mNewSS, networkRegState.getCellIdentity());

                if (mPhone.isPhoneTypeGsm()) {

@@ -1966,6 +1968,20 @@ public class ServiceStateTracker extends Handler {
        }
    }

    private void setChannelNumberFromCellIdentity(ServiceState ss, CellIdentity cellIdentity) {
        if (cellIdentity == null) {
            if (DBG) {
                log("Could not set ServiceState channel number. CellIdentity null");
            }
            return;
        }

        ss.setChannelNumber(cellIdentity.getChannelNumber());
        if (VDBG) {
            log("Setting channel number: " + cellIdentity.getChannelNumber());
        }
    }

    /**
     * Determine whether a roaming indicator is in the carrier-specified list of ERIs for
     * home system
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ public class CellIdentityGsmTest extends AndroidTestCase {
        assertEquals(LAC, ci.getLac());
        assertEquals(CID, ci.getCid());
        assertEquals(ARFCN, ci.getArfcn());
        assertEquals(ARFCN, ci.getChannelNumber());
        assertEquals(BSIC, ci.getBsic());
        assertEquals(MCC, ci.getMcc());
        assertEquals(MNC, ci.getMnc());
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ public class CellIdentityLteTest extends AndroidTestCase {
        assertEquals(PCI, ci.getPci());
        assertEquals(TAC, ci.getTac());
        assertEquals(EARFCN, ci.getEarfcn());
        assertEquals(EARFCN, ci.getChannelNumber());
        assertEquals(BANDWIDTH, ci.getBandwidth());
        assertEquals(MCC, ci.getMcc());
        assertEquals(MNC, ci.getMnc());
+2 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ public class CellIdentityWcdmaTest extends AndroidTestCase {
        assertEquals(LAC, ci.getLac());
        assertEquals(CID, ci.getCid());
        assertEquals(PSC, ci.getPsc());
        assertEquals(UARFCN, ci.getUarfcn());
        assertEquals(UARFCN, ci.getChannelNumber());
        assertEquals(MCC, ci.getMcc());
        assertEquals(MNC, ci.getMnc());
        assertEquals(MCC_STR, ci.getMccString());
+40 −0
Original line number Diff line number Diff line
@@ -306,4 +306,44 @@ public class ServiceStateTest extends TestCase {
        assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN,
                NetworkRegistrationState.DOMAIN_PS), wwanDataRegState);
    }

    @SmallTest
    public void testDuplexMode_notLte() {
        ServiceState ss = new ServiceState();
        ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_GSM);
        ss.setChannelNumber(2400);

        assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_UNKNOWN);
    }

    @SmallTest
    public void testDuplexMode_invalidEarfcn() {
        ServiceState ss = new ServiceState();
        ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
        ss.setChannelNumber(-1);

        assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_UNKNOWN);

        ss.setChannelNumber(Integer.MAX_VALUE);

        assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_UNKNOWN);
    }

    @SmallTest
    public void testDuplexMode_FddChannel() {
        ServiceState ss = new ServiceState();
        ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
        ss.setChannelNumber(2400); // band 5

        assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_FDD);
    }

    @SmallTest
    public void testDuplexMode_TddChannel() {
        ServiceState ss = new ServiceState();
        ss.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
        ss.setChannelNumber(36000); // band 33

        assertEquals(ss.getDuplexMode(), ServiceState.DUPLEX_MODE_TDD);
    }
}