Loading src/java/com/android/internal/telephony/satellite/NtnCapabilityResolver.java +2 −1 Original line number Diff line number Diff line Loading @@ -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( Loading src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java +32 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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 Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -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())); } } } } Loading
src/java/com/android/internal/telephony/satellite/NtnCapabilityResolver.java +2 −1 Original line number Diff line number Diff line Loading @@ -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( Loading
src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java +32 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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 Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -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())); } } } }