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 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;
}
@@ -158,6 +158,23 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
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.
*

View File

@@ -66,7 +66,7 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
public static final String LEVEL_CALCULATION_METHOD_RSCP = "rscp";
// 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 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;
if (cc == null) {
calcMethod = sLevelCalculationMethod;
calcMethod = DEFAULT_LEVEL_CALCULATION_METHOD;
rscpThresholds = sRscpThresholds;
} else {
// TODO: abstract this entire thing into a series of functions
calcMethod = cc.getString(
CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING,
sLevelCalculationMethod);
if (TextUtils.isEmpty(calcMethod)) calcMethod = sLevelCalculationMethod;
DEFAULT_LEVEL_CALCULATION_METHOD);
if (TextUtils.isEmpty(calcMethod)) calcMethod = DEFAULT_LEVEL_CALCULATION_METHOD;
rscpThresholds = cc.getIntArray(
CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY);
if (rscpThresholds == null || rscpThresholds.length != NUM_SIGNAL_STRENGTH_THRESHOLDS) {