Loading src/java/com/android/internal/telephony/CarrierServiceStateTracker.java +47 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import android.telephony.CarrierConfigManager; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager.NetworkTypeBitMask; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.util.NotificationChannelController; Loading Loading @@ -205,8 +207,52 @@ public class CarrierServiceStateTracker extends Handler { Rlog.e(LOG_TAG, "Unable to get PREFERRED_NETWORK_MODE."); return true; } if (isNrSupported()) { return (preferredNetworkSetting == RILConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); } else { return (preferredNetworkSetting == RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA); } } private boolean isNrSupported() { Context context = mPhone.getContext(); TelephonyManager tm = ((TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE)).createForSubscriptionId(mPhone.getSubId()); boolean isCarrierConfigEnabled = isCarrierConfigEnableNr(context); boolean isRadioAccessFamilySupported = checkSupportedBitmask( tm.getSupportedRadioAccessFamily(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); boolean isNrNetworkTypeAllowed = checkSupportedBitmask( tm.getAllowedNetworkTypes(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); Rlog.i(LOG_TAG, "isNrSupported: " + " carrierConfigEnabled: " + isCarrierConfigEnabled + ", AccessFamilySupported: " + isRadioAccessFamilySupported + ", isNrNetworkTypeAllowed: " + isNrNetworkTypeAllowed); return (isCarrierConfigEnabled && isRadioAccessFamilySupported && isNrNetworkTypeAllowed); } private boolean isCarrierConfigEnableNr(Context context) { CarrierConfigManager carrierConfigManager = (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE); if (carrierConfigManager == null) { Rlog.e(LOG_TAG, "isCarrierConfigEnableNr: CarrierConfigManager is null"); return false; } PersistableBundle config = carrierConfigManager.getConfigForSubId(mPhone.getSubId()); if (config == null) { Rlog.e(LOG_TAG, "isCarrierConfigEnableNr: Cannot get config " + mPhone.getSubId()); return false; } return config.getBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL); } private boolean checkSupportedBitmask(@NetworkTypeBitMask long supportedBitmask, @NetworkTypeBitMask long targetBitmask) { return (targetBitmask & supportedBitmask) == targetBitmask; } private void handleConfigChanges() { for (Map.Entry<Integer, NotificationType> entry : mNotificationTypeMap.entrySet()) { Loading src/java/com/android/internal/telephony/DeviceStateMonitor.java +5 −5 Original line number Diff line number Diff line Loading @@ -854,15 +854,15 @@ public class DeviceStateMonitor extends Handler { }; /** * List of default 10*dB RSSNR thresholds for EUTRAN {@link AccessNetworkType}. * List of default dB RSSNR thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSSNR defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSSNR = new int[] { -30, /* SIGNAL_STRENGTH_POOR */ 10, /* SIGNAL_STRENGTH_MODERATE */ 45, /* SIGNAL_STRENGTH_GOOD */ 130 /* SIGNAL_STRENGTH_GREAT */ -3, /* SIGNAL_STRENGTH_POOR */ 1, /* SIGNAL_STRENGTH_MODERATE */ 5, /* SIGNAL_STRENGTH_GOOD */ 13 /* SIGNAL_STRENGTH_GREAT */ }; /** Loading src/java/com/android/internal/telephony/RadioIndication.java +26 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ import android.hardware.radio.V1_5.IRadioIndication; import android.os.AsyncResult; import android.sysprop.TelephonyProperties; import android.telephony.Annotation.RadioPowerState; import android.telephony.AnomalyReporter; import android.telephony.BarringInfo; import android.telephony.CellIdentity; import android.telephony.CellInfo; Loading @@ -100,6 +101,7 @@ import android.telephony.SmsMessage; import android.telephony.TelephonyManager; import android.telephony.data.DataCallResponse; import android.telephony.emergency.EmergencyNumber; import android.text.TextUtils; import com.android.internal.telephony.cdma.CdmaCallWaitingNotification; import com.android.internal.telephony.cdma.CdmaInformationRecords; Loading @@ -112,6 +114,7 @@ import com.android.internal.telephony.uicc.IccUtils; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class RadioIndication extends IRadioIndication.Stub { RIL mRil; Loading Loading @@ -1007,6 +1010,20 @@ public class RadioIndication extends IRadioIndication.Stub { int causeCode, int additionalCauseCode) { mRil.processIndication(indicationType); if (cellIdentity == null || TextUtils.isEmpty(chosenPlmn) || (domain & NetworkRegistrationInfo.DOMAIN_CS_PS) == 0 || (domain & ~NetworkRegistrationInfo.DOMAIN_CS_PS) != 0 || causeCode < 0 || additionalCauseCode < 0 || (causeCode == Integer.MAX_VALUE && additionalCauseCode == Integer.MAX_VALUE)) { AnomalyReporter.reportAnomaly( UUID.fromString("f16e5703-6105-4341-9eb3-e68189156eb4"), "Invalid registrationFailed indication"); mRil.riljLoge("Invalid registrationFailed indication"); return; } CellIdentity ci = CellIdentity.create(cellIdentity); mRil.mRegistrationFailedRegistrant.notifyRegistrant( Loading @@ -1029,6 +1046,15 @@ public class RadioIndication extends IRadioIndication.Stub { ArrayList<android.hardware.radio.V1_5.BarringInfo> barringInfos) { mRil.processIndication(indicationType); if (cellIdentity == null || barringInfos == null) { AnomalyReporter.reportAnomaly( UUID.fromString("645b16bb-c930-4c1c-9c5d-568696542e05"), "Invalid barringInfoChanged indication"); mRil.riljLoge("Invalid barringInfoChanged indication"); return; } CellIdentity ci = CellIdentity.create(cellIdentity); BarringInfo cbi = BarringInfo.create(cellIdentity, barringInfos); Loading src/java/com/android/internal/telephony/SubscriptionController.java +9 −3 Original line number Diff line number Diff line Loading @@ -1067,7 +1067,12 @@ public class SubscriptionController extends ISub.Stub { selection += " OR " + SubscriptionManager.IS_EMBEDDED + "=1"; } List<String> iccIds = getIccIdsOfInsertedSims(); // Available eSIM profiles are reported by EuiccManager. However for physical SIMs if // they are in inactive slot or programmatically disabled, they are still considered // available. In this case we get their iccid from slot info and include their // subscriptionInfos. List<String> iccIds = getIccIdsOfInsertedPhysicalSims(); if (!iccIds.isEmpty()) { selection += " OR (" + getSelectionForIccIdList(iccIds.toArray(new String[0])) + ")"; Loading @@ -1089,7 +1094,7 @@ public class SubscriptionController extends ISub.Stub { } } private List<String> getIccIdsOfInsertedSims() { private List<String> getIccIdsOfInsertedPhysicalSims() { List<String> ret = new ArrayList<>(); UiccSlot[] uiccSlots = UiccController.getInstance().getUiccSlots(); if (uiccSlots == null) return ret; Loading @@ -1097,8 +1102,9 @@ public class SubscriptionController extends ISub.Stub { for (UiccSlot uiccSlot : uiccSlots) { if (uiccSlot != null && uiccSlot.getCardState() != null && uiccSlot.getCardState().isCardPresent() && !uiccSlot.isEuicc() && !TextUtils.isEmpty(uiccSlot.getIccId())) { ret.add(uiccSlot.getIccId()); ret.add(IccUtils.stripTrailingFs(uiccSlot.getIccId())); } } Loading tests/telephonytests/src/com/android/internal/telephony/SignalStrengthTest.java +39 −39 Original line number Diff line number Diff line Loading @@ -57,10 +57,10 @@ public class SignalStrengthTest { -12 }; // SIGNAL_STRENGTH_GREAT private static final int[] DEFAULT_LTE_RSSNR_THRESHOLDS = { -30, // SIGNAL_STRENGTH_POOR 10, // SIGNAL_STRENGTH_MODERATE 45, // SIGNAL_STRENGTH_GOOD 130 }; // SIGNAL_STRENGTH_GREAT -3, // SIGNAL_STRENGTH_POOR 1, // SIGNAL_STRENGTH_MODERATE 5, // SIGNAL_STRENGTH_GOOD 13 }; // SIGNAL_STRENGTH_GREAT private static final int[] DEFAULT_5G_NR_SSRSRP_THRESHOLDS = { -125, // SIGNAL_STRENGTH_POOR Loading Loading @@ -244,20 +244,20 @@ public class SignalStrengthTest { ss = createSignalStrengthLteReportRsrq(-60, -35); assertEquals(SignalStrength.INVALID, ss.getLteRsrq()); // Input value of RSSNR: 301[dB] ss = createSignalStrengthLteReportRssnr(-60, 301); // Input value of RSSNR: 31[dB] ss = createSignalStrengthLteReportRssnr(-60, 31); assertEquals(SignalStrength.INVALID, ss.getLteRssnr()); // Input value of RSSNR: 300[dB] ss = createSignalStrengthLteReportRssnr(-60, 300); assertEquals(300, ss.getLteRssnr()); // Input value of RSSNR: 30[dB] ss = createSignalStrengthLteReportRssnr(-60, 30); assertEquals(30, ss.getLteRssnr()); // Input value of RSSNR: -200[dB] ss = createSignalStrengthLteReportRssnr(60, -200); assertEquals(-200, ss.getLteRssnr()); // Input value of RSSNR: -20[dB] ss = createSignalStrengthLteReportRssnr(60, -20); assertEquals(-20, ss.getLteRssnr()); // Input value of RSSNR: -201[dB] ss = createSignalStrengthLteReportRssnr(60, -201); // Input value of RSSNR: -21[dB] ss = createSignalStrengthLteReportRssnr(60, -21); assertEquals(SignalStrength.INVALID, ss.getLteRssnr()); } Loading Loading @@ -334,71 +334,71 @@ public class SignalStrengthTest { @Test public void testRssnrThresholds_rsrp_great() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-98, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-98, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-98, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-98, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-98, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-98, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GOOD, createSignalStrengthLteReportRssnr(-98, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-98, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GREAT, createSignalStrengthLteReportRssnr(-98, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-98, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_good() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-108, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-108, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-108, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-108, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-108, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-108, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GOOD, createSignalStrengthLteReportRssnr(-108, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-108, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GOOD, createSignalStrengthLteReportRssnr(-108, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-108, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_moderate() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-118, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-118, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-118, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-118, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-118, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-118, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-118, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-118, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-118, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-118, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_poor() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-128, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-128, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-128, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-128, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-128, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-128, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_unknown() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-138, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-138, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-138, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-138, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-138, 13).getLteLevel()); } } Loading
src/java/com/android/internal/telephony/CarrierServiceStateTracker.java +47 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ import android.telephony.CarrierConfigManager; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager.NetworkTypeBitMask; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.util.NotificationChannelController; Loading Loading @@ -205,8 +207,52 @@ public class CarrierServiceStateTracker extends Handler { Rlog.e(LOG_TAG, "Unable to get PREFERRED_NETWORK_MODE."); return true; } if (isNrSupported()) { return (preferredNetworkSetting == RILConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA); } else { return (preferredNetworkSetting == RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA); } } private boolean isNrSupported() { Context context = mPhone.getContext(); TelephonyManager tm = ((TelephonyManager) context.getSystemService( Context.TELEPHONY_SERVICE)).createForSubscriptionId(mPhone.getSubId()); boolean isCarrierConfigEnabled = isCarrierConfigEnableNr(context); boolean isRadioAccessFamilySupported = checkSupportedBitmask( tm.getSupportedRadioAccessFamily(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); boolean isNrNetworkTypeAllowed = checkSupportedBitmask( tm.getAllowedNetworkTypes(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); Rlog.i(LOG_TAG, "isNrSupported: " + " carrierConfigEnabled: " + isCarrierConfigEnabled + ", AccessFamilySupported: " + isRadioAccessFamilySupported + ", isNrNetworkTypeAllowed: " + isNrNetworkTypeAllowed); return (isCarrierConfigEnabled && isRadioAccessFamilySupported && isNrNetworkTypeAllowed); } private boolean isCarrierConfigEnableNr(Context context) { CarrierConfigManager carrierConfigManager = (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE); if (carrierConfigManager == null) { Rlog.e(LOG_TAG, "isCarrierConfigEnableNr: CarrierConfigManager is null"); return false; } PersistableBundle config = carrierConfigManager.getConfigForSubId(mPhone.getSubId()); if (config == null) { Rlog.e(LOG_TAG, "isCarrierConfigEnableNr: Cannot get config " + mPhone.getSubId()); return false; } return config.getBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL); } private boolean checkSupportedBitmask(@NetworkTypeBitMask long supportedBitmask, @NetworkTypeBitMask long targetBitmask) { return (targetBitmask & supportedBitmask) == targetBitmask; } private void handleConfigChanges() { for (Map.Entry<Integer, NotificationType> entry : mNotificationTypeMap.entrySet()) { Loading
src/java/com/android/internal/telephony/DeviceStateMonitor.java +5 −5 Original line number Diff line number Diff line Loading @@ -854,15 +854,15 @@ public class DeviceStateMonitor extends Handler { }; /** * List of default 10*dB RSSNR thresholds for EUTRAN {@link AccessNetworkType}. * List of default dB RSSNR thresholds for EUTRAN {@link AccessNetworkType}. * * These thresholds are taken from the LTE RSSNR defaults in {@link CarrierConfigManager}. */ public static final int[] EUTRAN_RSSNR = new int[] { -30, /* SIGNAL_STRENGTH_POOR */ 10, /* SIGNAL_STRENGTH_MODERATE */ 45, /* SIGNAL_STRENGTH_GOOD */ 130 /* SIGNAL_STRENGTH_GREAT */ -3, /* SIGNAL_STRENGTH_POOR */ 1, /* SIGNAL_STRENGTH_MODERATE */ 5, /* SIGNAL_STRENGTH_GOOD */ 13 /* SIGNAL_STRENGTH_GREAT */ }; /** Loading
src/java/com/android/internal/telephony/RadioIndication.java +26 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ import android.hardware.radio.V1_5.IRadioIndication; import android.os.AsyncResult; import android.sysprop.TelephonyProperties; import android.telephony.Annotation.RadioPowerState; import android.telephony.AnomalyReporter; import android.telephony.BarringInfo; import android.telephony.CellIdentity; import android.telephony.CellInfo; Loading @@ -100,6 +101,7 @@ import android.telephony.SmsMessage; import android.telephony.TelephonyManager; import android.telephony.data.DataCallResponse; import android.telephony.emergency.EmergencyNumber; import android.text.TextUtils; import com.android.internal.telephony.cdma.CdmaCallWaitingNotification; import com.android.internal.telephony.cdma.CdmaInformationRecords; Loading @@ -112,6 +114,7 @@ import com.android.internal.telephony.uicc.IccUtils; import java.util.ArrayList; import java.util.List; import java.util.UUID; public class RadioIndication extends IRadioIndication.Stub { RIL mRil; Loading Loading @@ -1007,6 +1010,20 @@ public class RadioIndication extends IRadioIndication.Stub { int causeCode, int additionalCauseCode) { mRil.processIndication(indicationType); if (cellIdentity == null || TextUtils.isEmpty(chosenPlmn) || (domain & NetworkRegistrationInfo.DOMAIN_CS_PS) == 0 || (domain & ~NetworkRegistrationInfo.DOMAIN_CS_PS) != 0 || causeCode < 0 || additionalCauseCode < 0 || (causeCode == Integer.MAX_VALUE && additionalCauseCode == Integer.MAX_VALUE)) { AnomalyReporter.reportAnomaly( UUID.fromString("f16e5703-6105-4341-9eb3-e68189156eb4"), "Invalid registrationFailed indication"); mRil.riljLoge("Invalid registrationFailed indication"); return; } CellIdentity ci = CellIdentity.create(cellIdentity); mRil.mRegistrationFailedRegistrant.notifyRegistrant( Loading @@ -1029,6 +1046,15 @@ public class RadioIndication extends IRadioIndication.Stub { ArrayList<android.hardware.radio.V1_5.BarringInfo> barringInfos) { mRil.processIndication(indicationType); if (cellIdentity == null || barringInfos == null) { AnomalyReporter.reportAnomaly( UUID.fromString("645b16bb-c930-4c1c-9c5d-568696542e05"), "Invalid barringInfoChanged indication"); mRil.riljLoge("Invalid barringInfoChanged indication"); return; } CellIdentity ci = CellIdentity.create(cellIdentity); BarringInfo cbi = BarringInfo.create(cellIdentity, barringInfos); Loading
src/java/com/android/internal/telephony/SubscriptionController.java +9 −3 Original line number Diff line number Diff line Loading @@ -1067,7 +1067,12 @@ public class SubscriptionController extends ISub.Stub { selection += " OR " + SubscriptionManager.IS_EMBEDDED + "=1"; } List<String> iccIds = getIccIdsOfInsertedSims(); // Available eSIM profiles are reported by EuiccManager. However for physical SIMs if // they are in inactive slot or programmatically disabled, they are still considered // available. In this case we get their iccid from slot info and include their // subscriptionInfos. List<String> iccIds = getIccIdsOfInsertedPhysicalSims(); if (!iccIds.isEmpty()) { selection += " OR (" + getSelectionForIccIdList(iccIds.toArray(new String[0])) + ")"; Loading @@ -1089,7 +1094,7 @@ public class SubscriptionController extends ISub.Stub { } } private List<String> getIccIdsOfInsertedSims() { private List<String> getIccIdsOfInsertedPhysicalSims() { List<String> ret = new ArrayList<>(); UiccSlot[] uiccSlots = UiccController.getInstance().getUiccSlots(); if (uiccSlots == null) return ret; Loading @@ -1097,8 +1102,9 @@ public class SubscriptionController extends ISub.Stub { for (UiccSlot uiccSlot : uiccSlots) { if (uiccSlot != null && uiccSlot.getCardState() != null && uiccSlot.getCardState().isCardPresent() && !uiccSlot.isEuicc() && !TextUtils.isEmpty(uiccSlot.getIccId())) { ret.add(uiccSlot.getIccId()); ret.add(IccUtils.stripTrailingFs(uiccSlot.getIccId())); } } Loading
tests/telephonytests/src/com/android/internal/telephony/SignalStrengthTest.java +39 −39 Original line number Diff line number Diff line Loading @@ -57,10 +57,10 @@ public class SignalStrengthTest { -12 }; // SIGNAL_STRENGTH_GREAT private static final int[] DEFAULT_LTE_RSSNR_THRESHOLDS = { -30, // SIGNAL_STRENGTH_POOR 10, // SIGNAL_STRENGTH_MODERATE 45, // SIGNAL_STRENGTH_GOOD 130 }; // SIGNAL_STRENGTH_GREAT -3, // SIGNAL_STRENGTH_POOR 1, // SIGNAL_STRENGTH_MODERATE 5, // SIGNAL_STRENGTH_GOOD 13 }; // SIGNAL_STRENGTH_GREAT private static final int[] DEFAULT_5G_NR_SSRSRP_THRESHOLDS = { -125, // SIGNAL_STRENGTH_POOR Loading Loading @@ -244,20 +244,20 @@ public class SignalStrengthTest { ss = createSignalStrengthLteReportRsrq(-60, -35); assertEquals(SignalStrength.INVALID, ss.getLteRsrq()); // Input value of RSSNR: 301[dB] ss = createSignalStrengthLteReportRssnr(-60, 301); // Input value of RSSNR: 31[dB] ss = createSignalStrengthLteReportRssnr(-60, 31); assertEquals(SignalStrength.INVALID, ss.getLteRssnr()); // Input value of RSSNR: 300[dB] ss = createSignalStrengthLteReportRssnr(-60, 300); assertEquals(300, ss.getLteRssnr()); // Input value of RSSNR: 30[dB] ss = createSignalStrengthLteReportRssnr(-60, 30); assertEquals(30, ss.getLteRssnr()); // Input value of RSSNR: -200[dB] ss = createSignalStrengthLteReportRssnr(60, -200); assertEquals(-200, ss.getLteRssnr()); // Input value of RSSNR: -20[dB] ss = createSignalStrengthLteReportRssnr(60, -20); assertEquals(-20, ss.getLteRssnr()); // Input value of RSSNR: -201[dB] ss = createSignalStrengthLteReportRssnr(60, -201); // Input value of RSSNR: -21[dB] ss = createSignalStrengthLteReportRssnr(60, -21); assertEquals(SignalStrength.INVALID, ss.getLteRssnr()); } Loading Loading @@ -334,71 +334,71 @@ public class SignalStrengthTest { @Test public void testRssnrThresholds_rsrp_great() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-98, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-98, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-98, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-98, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-98, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-98, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GOOD, createSignalStrengthLteReportRssnr(-98, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-98, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GREAT, createSignalStrengthLteReportRssnr(-98, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-98, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_good() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-108, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-108, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-108, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-108, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-108, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-108, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GOOD, createSignalStrengthLteReportRssnr(-108, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-108, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_GOOD, createSignalStrengthLteReportRssnr(-108, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-108, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_moderate() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-118, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-118, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-118, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-118, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-118, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-118, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-118, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-118, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_MODERATE, createSignalStrengthLteReportRssnr(-118, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-118, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_poor() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-128, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-128, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-128, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-128, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-128, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_POOR, createSignalStrengthLteReportRssnr(-128, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-128, 13).getLteLevel()); } @Test public void testRssnrThresholds_rsrp_unknown() throws Exception { assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, -200).getLteLevel()); createSignalStrengthLteReportRssnr(-138, -20).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, -30).getLteLevel()); createSignalStrengthLteReportRssnr(-138, -3).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, 10).getLteLevel()); createSignalStrengthLteReportRssnr(-138, 1).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, 45).getLteLevel()); createSignalStrengthLteReportRssnr(-138, 5).getLteLevel()); assertEquals(SignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, createSignalStrengthLteReportRssnr(-138, 130).getLteLevel()); createSignalStrengthLteReportRssnr(-138, 13).getLteLevel()); } }