Merge changes from topic "tdscdma-rscp"

* changes:
  Fix getLevel for CellSignalStrengthTdscdma
  Rename LevelCalculationMethod Constant
This commit is contained in:
Nathan Harold
2019-04-08 22:42:35 +00:00
committed by Gerrit Code Review
2 changed files with 33 additions and 16 deletions

View File

@@ -34,14 +34,14 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
private static final String LOG_TAG = "CellSignalStrengthTdscdma"; private static final String LOG_TAG = "CellSignalStrengthTdscdma";
private static final boolean DBG = false; private static final boolean DBG = false;
private static final int TDSCDMA_RSSI_MAX = -51; // These levels are arbitrary but carried over from SignalStrength.java for consistency.
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;
private static final int TDSCDMA_RSCP_MAX = -24; 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 private int mRssi; // in dBm [-113, -51], CellInfo.UNAVAILABLE
@@ -135,11 +135,11 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
/** @hide */ /** @hide */
@Override @Override
public void updateLevel(PersistableBundle cc, ServiceState ss) { public void updateLevel(PersistableBundle cc, ServiceState ss) {
if (mRssi > TDSCDMA_RSSI_MAX) mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; if (mRscp > TDSCDMA_RSCP_MAX) mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
else if (mRssi >= TDSCDMA_RSSI_GREAT) mLevel = SIGNAL_STRENGTH_GREAT; else if (mRscp >= TDSCDMA_RSCP_GREAT) mLevel = SIGNAL_STRENGTH_GREAT;
else if (mRssi >= TDSCDMA_RSSI_GOOD) mLevel = SIGNAL_STRENGTH_GOOD; else if (mRscp >= TDSCDMA_RSCP_GOOD) mLevel = SIGNAL_STRENGTH_GOOD;
else if (mRssi >= TDSCDMA_RSSI_MODERATE) mLevel = SIGNAL_STRENGTH_MODERATE; else if (mRscp >= TDSCDMA_RSCP_MODERATE) mLevel = SIGNAL_STRENGTH_MODERATE;
else if (mRssi >= TDSCDMA_RSSI_POOR) mLevel = SIGNAL_STRENGTH_POOR; else if (mRscp >= TDSCDMA_RSCP_POOR) mLevel = SIGNAL_STRENGTH_POOR;
else mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN; else mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
} }
@@ -158,6 +158,23 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
return mRscp; return mRscp;
} }
/**
* 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. * Get the RSCP in ASU.
* *

View File

@@ -66,7 +66,7 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
public static final String LEVEL_CALCULATION_METHOD_RSCP = "rscp"; public static final String LEVEL_CALCULATION_METHOD_RSCP = "rscp";
// Default to RSSI for backwards compatibility with older devices // Default to RSSI for backwards compatibility with older devices
private static final String sLevelCalculationMethod = LEVEL_CALCULATION_METHOD_RSSI; private static final String DEFAULT_LEVEL_CALCULATION_METHOD = LEVEL_CALCULATION_METHOD_RSSI;
private int mRssi; // in dBm [-113, 51] or CellInfo.UNAVAILABLE if unknown private int mRssi; // in dBm [-113, 51] or CellInfo.UNAVAILABLE if unknown
private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 or private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 or
@@ -161,14 +161,14 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
int[] rscpThresholds; int[] rscpThresholds;
if (cc == null) { if (cc == null) {
calcMethod = sLevelCalculationMethod; calcMethod = DEFAULT_LEVEL_CALCULATION_METHOD;
rscpThresholds = sRscpThresholds; rscpThresholds = sRscpThresholds;
} else { } else {
// TODO: abstract this entire thing into a series of functions // TODO: abstract this entire thing into a series of functions
calcMethod = cc.getString( calcMethod = cc.getString(
CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING, CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING,
sLevelCalculationMethod); DEFAULT_LEVEL_CALCULATION_METHOD);
if (TextUtils.isEmpty(calcMethod)) calcMethod = sLevelCalculationMethod; if (TextUtils.isEmpty(calcMethod)) calcMethod = DEFAULT_LEVEL_CALCULATION_METHOD;
rscpThresholds = cc.getIntArray( rscpThresholds = cc.getIntArray(
CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY); CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY);
if (rscpThresholds == null || rscpThresholds.length != NUM_SIGNAL_STRENGTH_THRESHOLDS) { if (rscpThresholds == null || rscpThresholds.length != NUM_SIGNAL_STRENGTH_THRESHOLDS) {