From dbf09ffed27b35cf310e3c53402edf0f56f5e7d1 Mon Sep 17 00:00:00 2001 From: Jaime Lopez Date: Tue, 1 Oct 2013 12:47:29 -0700 Subject: Telephony: Read signal strength values as expected Telephony framework expects Lte rsrp and rsrq, as well as dbm and ecio values for cdma and evdoe to be negative. RIL Interface provides positive values. Fix that by changing the constructor from Parcel to also multiply by -1 Writing to parcel also modified for consistency Bug: 10440827 Change-Id: I6a8112a5b343c5e6c6dc12332a6e9a489b093cc1 --- .../android/telephony/CellSignalStrengthCdma.java | 21 +++++++++++++-------- .../android/telephony/CellSignalStrengthLte.java | 12 ++++++++---- 2 files changed, 21 insertions(+), 12 deletions(-) (limited to 'telephony/java/android') diff --git a/telephony/java/android/telephony/CellSignalStrengthCdma.java b/telephony/java/android/telephony/CellSignalStrengthCdma.java index 190fea2..c945094 100644 --- a/telephony/java/android/telephony/CellSignalStrengthCdma.java +++ b/telephony/java/android/telephony/CellSignalStrengthCdma.java @@ -331,10 +331,12 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements @Override public void writeToParcel(Parcel dest, int flags) { if (DBG) log("writeToParcel(Parcel, int): " + toString()); - dest.writeInt(mCdmaDbm); - dest.writeInt(mCdmaEcio); - dest.writeInt(mEvdoDbm); - dest.writeInt(mEvdoEcio); + // Need to multiply CdmaDbm, CdmaEcio, EvdoDbm and EvdoEcio by -1 + // to ensure consistency when reading values written here + dest.writeInt(mCdmaDbm * -1); + dest.writeInt(mCdmaEcio * -1); + dest.writeInt(mEvdoDbm * -1); + dest.writeInt(mEvdoEcio * -1); dest.writeInt(mEvdoSnr); } @@ -343,10 +345,13 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements * where the TYPE_LTE token is already been processed. */ private CellSignalStrengthCdma(Parcel in) { - mCdmaDbm = in.readInt(); - mCdmaEcio = in.readInt(); - mEvdoDbm = in.readInt(); - mEvdoEcio = in.readInt(); + // CdmaDbm, CdmaEcio, EvdoDbm and EvdoEcio are written into + // the parcel as positive values. + // Need to convert into negative values + mCdmaDbm = in.readInt() * -1; + mCdmaEcio = in.readInt() * -1; + mEvdoDbm = in.readInt() * -1; + mEvdoEcio = in.readInt() * -1; mEvdoSnr = in.readInt(); if (DBG) log("CellSignalStrengthCdma(Parcel): " + toString()); } diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java index b456bb3..5a1559a 100644 --- a/telephony/java/android/telephony/CellSignalStrengthLte.java +++ b/telephony/java/android/telephony/CellSignalStrengthLte.java @@ -247,8 +247,10 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P public void writeToParcel(Parcel dest, int flags) { if (DBG) log("writeToParcel(Parcel, int): " + toString()); dest.writeInt(mSignalStrength); - dest.writeInt(mRsrp); - dest.writeInt(mRsrq); + // Need to multiply rsrp and rsrq by -1 + // to ensure consistency when reading values written here + dest.writeInt(mRsrp * -1); + dest.writeInt(mRsrq * -1); dest.writeInt(mRssnr); dest.writeInt(mCqi); dest.writeInt(mTimingAdvance); @@ -260,8 +262,10 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P */ private CellSignalStrengthLte(Parcel in) { mSignalStrength = in.readInt(); - mRsrp = in.readInt(); - mRsrq = in.readInt(); + // rsrp and rsrq are written into the parcel as positive values. + // Need to convert into negative values + mRsrp = in.readInt() * -1; + mRsrq = in.readInt() * -1; mRssnr = in.readInt(); mCqi = in.readInt(); mTimingAdvance = in.readInt(); -- cgit v1.1