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

Commit 29650a36 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Android (Google) Code Review
Browse files

Merge "SetIsNonTerrestrialNetwork only if network is in service." into main

parents 8564af2d 86c47b74
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;


@@ -450,7 +453,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;
                }
@@ -460,6 +463,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()));
            }
        }
    }
}