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

Commit c14ec237 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati
Browse files

Exit satellite mode if device is in limited service

Check if network registration state is HOME/ROAMING/EMERGENCY, if so
exit from satellite mode.

Bug: 350583364
Test: atest SatelliteControllerTest,
      SMS/MMS/Calls are working fine.
      Tested in TMO Lab: b/350583364#comment20
FLAG: EXEMPT bugfix

Change-Id: I8d2e75d16ed5376279a8e9fc9ee24c9988fb68f8
parent b622b7fb
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -5068,12 +5068,15 @@ public class SatelliteController extends Handler {
        return mDemoPointingNotAlignedDurationMillis;
    }

    private boolean getWwanIsInService(ServiceState serviceState) {
    /** Returns {@code true} if WWAN is in service, else {@code false}.*/
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public boolean getWwanIsInService(@NonNull ServiceState serviceState) {
        List<NetworkRegistrationInfo> nriList = serviceState
                .getNetworkRegistrationInfoListForTransportType(
                        AccessNetworkConstants.TRANSPORT_TYPE_WWAN);

        for (NetworkRegistrationInfo nri : nriList) {
            if (nri.isInService()) {
            if (nri.isInService() || nri.isEmergencyEnabled()) {
                logv("getWwanIsInService: return true");
                return true;
            }
+41 −0
Original line number Diff line number Diff line
@@ -103,6 +103,7 @@ import android.os.Message;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.telephony.AccessNetworkConstants;
import android.telephony.CarrierConfigManager;
import android.telephony.CellSignalStrength;
import android.telephony.NetworkRegistrationInfo;
@@ -3815,6 +3816,46 @@ public class SatelliteControllerTest extends TelephonyTest {
                mSatelliteControllerUT.getCarrierEmergencyCallWaitForConnectionTimeoutMillis());
    }

    @Test
    public void testGetWwanIsInService() {
        when(mServiceState.getNetworkRegistrationInfoListForTransportType(
                eq(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)))
                .thenReturn(new ArrayList<>());
        assertFalse(mSatelliteControllerUT.getWwanIsInService(mServiceState));

        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
                .build();
        when(mServiceState.getNetworkRegistrationInfoListForTransportType(
                eq(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)))
                .thenReturn(List.of(nri));
        assertTrue(mSatelliteControllerUT.getWwanIsInService(mServiceState));

        nri = new NetworkRegistrationInfo.Builder()
                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
                .build();
        when(mServiceState.getNetworkRegistrationInfoListForTransportType(
                eq(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)))
                .thenReturn(List.of(nri));
        assertTrue(mSatelliteControllerUT.getWwanIsInService(mServiceState));

        nri = new NetworkRegistrationInfo.Builder()
                .setEmergencyOnly(true)
                .build();
        when(mServiceState.getNetworkRegistrationInfoListForTransportType(
                eq(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)))
                .thenReturn(List.of(nri));
        assertTrue(mSatelliteControllerUT.getWwanIsInService(mServiceState));

        nri = new NetworkRegistrationInfo.Builder().setRegistrationState(
                NetworkRegistrationInfo.REGISTRATION_STATE_NOT_REGISTERED_OR_SEARCHING)
                .build();
        when(mServiceState.getNetworkRegistrationInfoListForTransportType(
                eq(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)))
                .thenReturn(List.of(nri));
        assertFalse(mSatelliteControllerUT.getWwanIsInService(mServiceState));
    }

    private void resetSatelliteControllerUTEnabledState() {
        logd("resetSatelliteControllerUTEnabledState");
        setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_RADIO_NOT_AVAILABLE);