From 9772daf3989af2433dd1e9820d54dfdb9e1696f6 Mon Sep 17 00:00:00 2001 From: Nathan Harold Date: Tue, 2 Apr 2019 20:37:26 -0700 Subject: [PATCH] Fix getLevel for CellSignalStrengthTdscdma For backwards compatibility (and because it's the correct choice anyway), getLevel() should use RSCP as the default signal strength calculation. -Remove the unused RSSI level constants -Add RSCP level constants and update the calculation. Bug: 128369744 Test: atest CellSignalStrengthTdscdmaTest Merged-In: Ia388a872ee6a0c02b74046aef1f04b0b4cf59130 Change-Id: Ia388a872ee6a0c02b74046aef1f04b0b4cf59130 (cherry picked from commit c2b359a1a790065c004c5e4c793a9c4058c37d66) --- .../telephony/CellSignalStrengthTdscdma.java | 41 +++++++++++++++------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java index ddbd851bbce5..b562f3270fba 100644 --- a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java +++ b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java @@ -34,14 +34,14 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen private static final String LOG_TAG = "CellSignalStrengthTdscdma"; private static final boolean DBG = false; - private static final int TDSCDMA_RSSI_MAX = -51; - private static final int TDSCDMA_RSSI_GREAT = -77; - private static final int TDSCDMA_RSSI_GOOD = -87; - private static final int TDSCDMA_RSSI_MODERATE = -97; - private static final int TDSCDMA_RSSI_POOR = -107; - - private static final int TDSCDMA_RSCP_MIN = -120; + // These levels are arbitrary but carried over from SignalStrength.java for consistency. private static final int TDSCDMA_RSCP_MAX = -24; + private static final int TDSCDMA_RSCP_GREAT = -49; + private static final int TDSCDMA_RSCP_GOOD = -73; + private static final int TDSCDMA_RSCP_MODERATE = -97; + private static final int TDSCDMA_RSCP_POOR = -110; + private static final int TDSCDMA_RSCP_MIN = -120; + private int mRssi; // in dBm [-113, -51], CellInfo.UNAVAILABLE @@ -135,11 +135,11 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen /** @hide */ @Override public void updateLevel(PersistableBundle cc, ServiceState ss) { - if (mRssi > TDSCDMA_RSSI_MAX) mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; - else if (mRssi >= TDSCDMA_RSSI_GREAT) mLevel = SIGNAL_STRENGTH_GREAT; - else if (mRssi >= TDSCDMA_RSSI_GOOD) mLevel = SIGNAL_STRENGTH_GOOD; - else if (mRssi >= TDSCDMA_RSSI_MODERATE) mLevel = SIGNAL_STRENGTH_MODERATE; - else if (mRssi >= TDSCDMA_RSSI_POOR) mLevel = SIGNAL_STRENGTH_POOR; + if (mRscp > TDSCDMA_RSCP_MAX) mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; + else if (mRscp >= TDSCDMA_RSCP_GREAT) mLevel = SIGNAL_STRENGTH_GREAT; + else if (mRscp >= TDSCDMA_RSCP_GOOD) mLevel = SIGNAL_STRENGTH_GOOD; + else if (mRscp >= TDSCDMA_RSCP_MODERATE) mLevel = SIGNAL_STRENGTH_MODERATE; + else if (mRscp >= TDSCDMA_RSCP_POOR) mLevel = SIGNAL_STRENGTH_POOR; else mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; } @@ -159,6 +159,23 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen } /** + * Get the RSSI as dBm value -113..-51dBm or {@link CellInfo#UNAVAILABLE UNAVAILABLE}. + * + * @hide + */ + public int getRssi() { + return mRssi; + } + + /** + * Get the BER as an ASU value 0..7, 99, or {@link CellInfo#UNAVAILABLE UNAVAILABLE}. + * @hide + */ + public int getBitErrorRate() { + return mBitErrorRate; + } + + /** * Get the RSCP in ASU. * * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69 -- 2.11.0