summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author SongFerngWang <songferngwang@google.com> 2020-04-13 18:13:04 +0800
committer SongFerngWang <songferngwang@google.com> 2020-04-14 11:16:47 +0800
commit68c58a57b01728a517150e09877400d85520a1df (patch)
treedc27ebd17bb7441264132aaca301daf7d213d4e6
parentec38d551e392fc1825bbaab527890095aebf2f66 (diff)
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
-rwxr-xr-xtelephony/java/android/telephony/CarrierConfigManager.java11
-rw-r--r--telephony/java/android/telephony/SignalStrength.java10
2 files changed, 21 insertions, 0 deletions
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 7f6e123ce69e..545c8a35058f 100755
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -2529,6 +2529,16 @@ public class CarrierConfigManager {
"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.
* @hide
@@ -4095,6 +4105,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 2bb4eb1538bd..1376cddbc41f 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -82,6 +82,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;
@@ -188,6 +190,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;
@@ -268,6 +274,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);