summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nathan Harold <nharold@google.com> 2019-01-25 11:12:18 -0800
committer Nathan Harold <nharold@google.com> 2019-01-28 18:54:08 -0800
commit18f18aaeb80849a0ec23dcf2886051c6aadbc498 (patch)
treeef8dd3bd2cc2af11474f38af2cc2f26c46a06819
parent38a641d29f40e23c416b758e845e0a1117abc7e9 (diff)
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
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthGsm.java4
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthTdscdma.java8
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthWcdma.java12
3 files changed, 22 insertions, 2 deletions
diff --git a/telephony/java/android/telephony/CellSignalStrengthGsm.java b/telephony/java/android/telephony/CellSignalStrengthGsm.java
index 30e641d61143..a4207c99ce4d 100644
--- a/telephony/java/android/telephony/CellSignalStrengthGsm.java
+++ b/telephony/java/android/telephony/CellSignalStrengthGsm.java
@@ -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 */
diff --git a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
index 6f52b853d23b..5ae89b0f8b3d 100644
--- a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
@@ -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 */
diff --git a/telephony/java/android/telephony/CellSignalStrengthWcdma.java b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
index 0760407171ae..efa3647f0e9b 100644
--- a/telephony/java/android/telephony/CellSignalStrengthWcdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
@@ -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 */