From 5a18072fed95ae41f2367e6d1c24975d303cf73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mats=202=2C=20=C3=85kesson?= Date: Fri, 26 Feb 2016 14:39:02 +0800 Subject: [PATCH] Customization of LTE Signal Bars Make LTE signal bar thresholds customizable to any values. Some operators require values which are not supported by current 2 level configurations. Test: manual Bug: 28122517 Change-Id: Ib7f492d8b4fc5ba8a71bc2e978ae6572f2485e8f --- core/res/res/values-mcc204-mnc04/config.xml | 15 ++++++---- core/res/res/values-mcc311-mnc480/config.xml | 15 ++++++---- core/res/res/values/config.xml | 15 ++++++---- core/res/res/values/symbols.xml | 2 +- .../android/telephony/SignalStrength.java | 30 ++++++++----------- 5 files changed, 40 insertions(+), 37 deletions(-) diff --git a/core/res/res/values-mcc204-mnc04/config.xml b/core/res/res/values-mcc204-mnc04/config.xml index ddf0e9fa9a684..81e7a6f9a83f2 100755 --- a/core/res/res/values-mcc204-mnc04/config.xml +++ b/core/res/res/values-mcc204-mnc04/config.xml @@ -25,12 +25,15 @@ --> 1358 - - 0 + + + -140 + -115 + -105 + -95 + -85 + -44 + true;BAE0000000000000 diff --git a/core/res/res/values-mcc311-mnc480/config.xml b/core/res/res/values-mcc311-mnc480/config.xml index 8d7fd6177500a..378dee636b36b 100755 --- a/core/res/res/values-mcc311-mnc480/config.xml +++ b/core/res/res/values-mcc311-mnc480/config.xml @@ -53,12 +53,15 @@ false - - 0 + + + -140 + -115 + -105 + -95 + -85 + -44 + true diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 587bc556a4ef1..202bf831914c1 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2256,12 +2256,15 @@ false - - 1 + + + -140 + -128 + -118 + -108 + -98 + -44 + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 687762435e3ac..54d8912f90fb8 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2258,7 +2258,7 @@ - + diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java index e87cba1374838..c484fd31c4671 100644 --- a/telephony/java/android/telephony/SignalStrength.java +++ b/telephony/java/android/telephony/SignalStrength.java @@ -20,6 +20,7 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.telephony.Rlog; +import android.util.Log; import android.content.res.Resources; /** @@ -51,11 +52,6 @@ public class SignalStrength implements Parcelable { //Use int max, as -1 is a valid value in signal strength public static final int INVALID = 0x7FFFFFFF; - private static final int RSRP_THRESH_TYPE_STRICT = 0; - private static final int[] RSRP_THRESH_STRICT = new int[] {-140, -115, -105, -95, -85, -44}; - private static final int[] RSRP_THRESH_LENIENT = new int[] {-140, -128, -118, -108, -98, -44}; - - private int mGsmSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5 private int mGsmBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 private int mCdmaDbm; // This value is the RSSI value @@ -791,22 +787,20 @@ public class SignalStrength implements Parcelable { */ int rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, rsrpIconLevel = -1, snrIconLevel = -1; - int rsrpThreshType = Resources.getSystem().getInteger(com.android.internal.R.integer. - config_LTE_RSRP_threshold_type); - int[] threshRsrp; - if (rsrpThreshType == RSRP_THRESH_TYPE_STRICT) { - threshRsrp = RSRP_THRESH_STRICT; + int[] threshRsrp = Resources.getSystem().getIntArray( + com.android.internal.R.array.config_lteDbmThresholds); + if (threshRsrp.length != 6) { + Log.wtf(LOG_TAG, "getLteLevel - config_lteDbmThresholds has invalid num of elements." + + " Cannot evaluate RSRP signal."); } else { - threshRsrp = RSRP_THRESH_LENIENT; + if (mLteRsrp > threshRsrp[5]) rsrpIconLevel = -1; + else if (mLteRsrp >= threshRsrp[4]) rsrpIconLevel = SIGNAL_STRENGTH_GREAT; + else if (mLteRsrp >= threshRsrp[3]) rsrpIconLevel = SIGNAL_STRENGTH_GOOD; + else if (mLteRsrp >= threshRsrp[2]) rsrpIconLevel = SIGNAL_STRENGTH_MODERATE; + else if (mLteRsrp >= threshRsrp[1]) rsrpIconLevel = SIGNAL_STRENGTH_POOR; + else if (mLteRsrp >= threshRsrp[0]) rsrpIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; } - if (mLteRsrp > threshRsrp[5]) rsrpIconLevel = -1; - else if (mLteRsrp >= threshRsrp[4]) rsrpIconLevel = SIGNAL_STRENGTH_GREAT; - else if (mLteRsrp >= threshRsrp[3]) rsrpIconLevel = SIGNAL_STRENGTH_GOOD; - else if (mLteRsrp >= threshRsrp[2]) rsrpIconLevel = SIGNAL_STRENGTH_MODERATE; - else if (mLteRsrp >= threshRsrp[1]) rsrpIconLevel = SIGNAL_STRENGTH_POOR; - else if (mLteRsrp >= threshRsrp[0]) rsrpIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; - /* * Values are -200 dB to +300 (SNR*10dB) RS_SNR >= 13.0 dB =>4 bars 4.5 * dB <= RS_SNR < 13.0 dB => 3 bars 1.0 dB <= RS_SNR < 4.5 dB => 2 bars