From 105fe9349abe7849ff5050bf6d808519d141b2b0 Mon Sep 17 00:00:00 2001 From: Rambo Wang Date: Thu, 26 Mar 2020 12:35:38 -0700 Subject: [PATCH 1/2] NR is lower priority than all other signal strengths aosp/891956 introduced signal strengths support for NR. In the method SignalStrength.getPrimary, NR is the lowest priority. This is against the policy which is in the comment, saying "prioritizing newer faster RATs". Bug: 148634820 Test: atest com.android.internal.telephony.SignalStrengthTest Change-Id: Ia9055c9e8cd8d09cdd3f101750c9f9cea983a9f8 Merged-In: Ia9055c9e8cd8d09cdd3f101750c9f9cea983a9f8 (cherry picked from commit 8e56e11eab594435d492be54ddf4bff401c218b2) --- telephony/java/android/telephony/SignalStrength.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java index 16fbd07f9495c..ad6439c154ca0 100644 --- a/telephony/java/android/telephony/SignalStrength.java +++ b/telephony/java/android/telephony/SignalStrength.java @@ -190,12 +190,12 @@ public class SignalStrength implements Parcelable { private CellSignalStrength getPrimary() { // This behavior is intended to replicate the legacy behavior of getLevel() by prioritizing // newer faster RATs for default/for display purposes. + if (mNr.isValid()) return mNr; if (mLte.isValid()) return mLte; if (mCdma.isValid()) return mCdma; if (mTdscdma.isValid()) return mTdscdma; if (mWcdma.isValid()) return mWcdma; if (mGsm.isValid()) return mGsm; - if (mNr.isValid()) return mNr; return mLte; } From 8893662fd5216f46b8f0641ccd60b809026bd696 Mon Sep 17 00:00:00 2001 From: SongFerngWang Date: Mon, 13 Apr 2020 18:13:04 +0800 Subject: [PATCH 2/2] For NR (non-standalone), use LTE signal strength as primary rule There are two signal strengths, NR and LTE signal strength, during NR (non-standalone). A lot of carriers' requirement define UE show LTE signal strength on status bar during NR (non-standalone). Add a carrier config whether to use LTE signal strength as primary during NR (non-standalone) Bug: 152864241 Test: make pass. Change-Id: Ib13d73719dace2d80aee5669181f4f934316ffd1 Merged-In: Ib13d73719dace2d80aee5669181f4f934316ffd1 (cherry picked from commit 68c58a57b01728a517150e09877400d85520a1df) --- .../java/android/telephony/CarrierConfigManager.java | 11 +++++++++++ telephony/java/android/telephony/SignalStrength.java | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 726d250c49d0c..86e9fd2476fbc 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -2511,6 +2511,16 @@ public class CarrierConfigManager { public static final String KEY_PARAMETERS_USE_FOR_5G_NR_SIGNAL_BAR_INT = "parameters_use_for_5g_nr_signal_bar_int"; + /** + * There are two signal strengths, NR and LTE signal strength, during NR (non-standalone). + * Boolean indicating whether to use LTE signal strength as primary during NR (non-standalone). + * By default this value is true. + * + * @hide + */ + public static final String KEY_SIGNAL_STRENGTH_NR_NSA_USE_LTE_AS_PRIMARY_BOOL = + "signal_strength_nr_nsa_use_lte_as_primary_bool"; + /** * String array of default bandwidth values per network type. * The entries should be of form "network_name:downstream,upstream", with values in Kbps. @@ -4024,6 +4034,7 @@ public class CarrierConfigManager { }); sDefaults.putInt(KEY_PARAMETERS_USE_FOR_5G_NR_SIGNAL_BAR_INT, CellSignalStrengthNr.USE_SSRSRP); + sDefaults.putBoolean(KEY_SIGNAL_STRENGTH_NR_NSA_USE_LTE_AS_PRIMARY_BOOL, true); sDefaults.putStringArray(KEY_BANDWIDTH_STRING_ARRAY, new String[]{ "GPRS:24,24", "EDGE:70,18", "UMTS:115,115", "CDMA-IS95A:14,14", "CDMA-IS95B:14,14", "1xRTT:30,30", "EvDo-rev.0:750,48", "EvDo-rev.A:950,550", "HSDPA:4300,620", diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java index ad6439c154ca0..5f09ca203dd92 100644 --- a/telephony/java/android/telephony/SignalStrength.java +++ b/telephony/java/android/telephony/SignalStrength.java @@ -83,6 +83,8 @@ public class SignalStrength implements Parcelable { // Effectively final. Timestamp is set during construction of SignalStrength private long mTimestampMillis; + private boolean mLteAsPrimaryInNrNsa = true; + CellSignalStrengthCdma mCdma; CellSignalStrengthGsm mGsm; CellSignalStrengthWcdma mWcdma; @@ -190,6 +192,10 @@ public class SignalStrength implements Parcelable { private CellSignalStrength getPrimary() { // This behavior is intended to replicate the legacy behavior of getLevel() by prioritizing // newer faster RATs for default/for display purposes. + + if (mLteAsPrimaryInNrNsa) { + if (mLte.isValid()) return mLte; + } if (mNr.isValid()) return mNr; if (mLte.isValid()) return mLte; if (mCdma.isValid()) return mCdma; @@ -270,6 +276,10 @@ public class SignalStrength implements Parcelable { /** @hide */ public void updateLevel(PersistableBundle cc, ServiceState ss) { + if (cc != null) { + mLteAsPrimaryInNrNsa = cc.getBoolean( + CarrierConfigManager.KEY_SIGNAL_STRENGTH_NR_NSA_USE_LTE_AS_PRIMARY_BOOL, true); + } mCdma.updateLevel(cc, ss); mGsm.updateLevel(cc, ss); mWcdma.updateLevel(cc, ss);