Coerce Unreported BER from ASU=99 to UNAVAILABLE
Modems inconsistently use 99 or UNAVAILABLE to report that BER measurements are unavailable; this causes the new strict logic in SignalStrength to conclude that a SignalStrength type has been reported when in fact it's just the modem choosing the ASU out-of-range value instead of the Android "unreported" value. We can't force older modems to change, so this patch simply coerces 99's to INT_MAX. It means that the ASU 99 will never be returned on older HALs, which should have no practical implication. Bug: 123088652 Test: cts - atest SignalStrengthTest Change-Id: I4c8610356a81e2190e475d789138b2d2c344fa36
This commit is contained in:
@@ -63,6 +63,10 @@ public final class CellSignalStrengthGsm extends CellSignalStrength implements P
|
||||
public CellSignalStrengthGsm(android.hardware.radio.V1_0.GsmSignalStrength gsm) {
|
||||
// Convert from HAL values as part of construction.
|
||||
this(getRssiDbmFromAsu(gsm.signalStrength), gsm.bitErrorRate, gsm.timingAdvance);
|
||||
|
||||
if (mRssi == CellInfo.UNAVAILABLE) {
|
||||
setDefaultValues();
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
||||
@@ -72,6 +72,10 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
|
||||
// Convert from HAL values as part of construction.
|
||||
this(CellInfo.UNAVAILABLE, CellInfo.UNAVAILABLE,
|
||||
tdscdma.rscp != CellInfo.UNAVAILABLE ? -tdscdma.rscp : tdscdma.rscp);
|
||||
|
||||
if (mRssi == CellInfo.UNAVAILABLE && mRscp == CellInfo.UNAVAILABLE) {
|
||||
setDefaultValues();
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@@ -79,6 +83,10 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
|
||||
// Convert from HAL values as part of construction.
|
||||
this(getRssiDbmFromAsu(tdscdma.signalStrength),
|
||||
tdscdma.bitErrorRate, getRscpDbmFromAsu(tdscdma.rscp));
|
||||
|
||||
if (mRssi == CellInfo.UNAVAILABLE && mRscp == CellInfo.UNAVAILABLE) {
|
||||
setDefaultValues();
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
||||
@@ -92,8 +92,12 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
|
||||
/** @hide */
|
||||
public CellSignalStrengthWcdma(android.hardware.radio.V1_0.WcdmaSignalStrength wcdma) {
|
||||
// Convert from HAL values as part of construction.
|
||||
this(getRssiDbmFromAsu(wcdma.signalStrength),
|
||||
wcdma.bitErrorRate, CellInfo.UNAVAILABLE, CellInfo.UNAVAILABLE);
|
||||
this(getRssiDbmFromAsu(wcdma.signalStrength), wcdma.bitErrorRate,
|
||||
CellInfo.UNAVAILABLE, CellInfo.UNAVAILABLE);
|
||||
|
||||
if (mRssi == CellInfo.UNAVAILABLE && mRscp == CellInfo.UNAVAILABLE) {
|
||||
setDefaultValues();
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@@ -103,6 +107,10 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
|
||||
wcdma.base.bitErrorRate,
|
||||
getRscpDbmFromAsu(wcdma.rscp),
|
||||
getEcNoDbFromAsu(wcdma.ecno));
|
||||
|
||||
if (mRssi == CellInfo.UNAVAILABLE && mRscp == CellInfo.UNAVAILABLE) {
|
||||
setDefaultValues();
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
||||
Reference in New Issue
Block a user