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

Commit 86c47b74 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati
Browse files

SetIsNonTerrestrialNetwork only if network is in service.

Bug: 335057328
Test: b/343738831

Change-Id: Ia193befd4ce7a1f7e697ffdbb637ae60c0914a6f
parent 046c3e8a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -47,7 +47,8 @@ public class NtnCapabilityResolver {
        SatelliteController satelliteController = SatelliteController.getInstance();
        List<String> satellitePlmnList = satelliteController.getSatellitePlmnsForCarrier(subId);
        for (String satellitePlmn : satellitePlmnList) {
            if (TextUtils.equals(satellitePlmn, registeredPlmn)) {
            if (TextUtils.equals(satellitePlmn, registeredPlmn)
                    && networkRegistrationInfo.isInService()) {
                logd("Registered to satellite PLMN " + satellitePlmn);
                networkRegistrationInfo.setIsNonTerrestrialNetwork(true);
                networkRegistrationInfo.setAvailableServices(
+32 −1
Original line number Diff line number Diff line
@@ -43,7 +43,9 @@ import android.os.OutcomeReceiver;
import android.os.SystemProperties;
import android.provider.DeviceConfig;
import android.telecom.Connection;
import android.telephony.AccessNetworkConstants;
import android.telephony.DropBoxManagerLoggerBackend;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.ServiceState;
@@ -68,6 +70,7 @@ import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.SmsApplication;
import com.android.internal.telephony.metrics.SatelliteStats;

import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;


@@ -452,7 +455,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
                int state = serviceState.getState();
                if ((state == STATE_IN_SERVICE || state == STATE_EMERGENCY_ONLY
                        || serviceState.isEmergencyOnly())
                        && !serviceState.isUsingNonTerrestrialNetwork()) {
                        && !isSatellitePlmn(phone.getSubId(), serviceState)) {
                    logv("isCellularAvailable true");
                    return true;
                }
@@ -462,6 +465,34 @@ public class SatelliteSOSMessageRecommender extends Handler {
        return false;
    }

    private boolean isSatellitePlmn(int subId, @NonNull ServiceState serviceState) {
        List<String> satellitePlmnList =
                mSatelliteController.getSatellitePlmnsForCarrier(subId);
        if (satellitePlmnList.isEmpty()) {
            logv("isSatellitePlmn: satellitePlmnList is empty");
            return false;
        }

        for (NetworkRegistrationInfo nri :
                serviceState.getNetworkRegistrationInfoListForTransportType(
                        AccessNetworkConstants.TRANSPORT_TYPE_WWAN)) {
            String registeredPlmn = nri.getRegisteredPlmn();
            String mccmnc = nri.getCellIdentity().getMccString()
                    + nri.getCellIdentity().getMncString();
            for (String satellitePlmn : satellitePlmnList) {
                if (TextUtils.equals(satellitePlmn, registeredPlmn)
                        || TextUtils.equals(satellitePlmn, mccmnc)) {
                    logv("isSatellitePlmn: return true, satellitePlmn:" + satellitePlmn
                            + " registeredPlmn:" + registeredPlmn + " mccmnc:" + mccmnc);
                    return true;
                }
            }
        }

        logv("isSatellitePlmn: return false");
        return false;
    }

    /**
     * @return {@link ServiceState#STATE_IN_SERVICE} if any subscription is in this state; else
     * {@link ServiceState#STATE_EMERGENCY_ONLY} if any subscription is in this state; else
+6 −3
Original line number Diff line number Diff line
@@ -3471,9 +3471,12 @@ public class ServiceStateTrackerTest extends TelephonyTest {
                        AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
        assertEquals(2, nriList.size());
        for (NetworkRegistrationInfo nri : nriList) {
            assertTrue(Arrays.equals(satelliteSupportedServices, nri.getAvailableServices().stream()
            if (nri.isInService()) {
                assertTrue(Arrays.equals(satelliteSupportedServices,
                        nri.getAvailableServices().stream()
                        .mapToInt(Integer::intValue)
                        .toArray()));
            }
        }
    }
}