diff options
author | Utkarsh Gupta <utkarsh.eminem@gmail.com> | 2015-04-13 13:33:37 +0530 |
---|---|---|
committer | Utkarsh Gupta <utkarsh.eminem@gmail.com> | 2015-04-13 12:28:09 +0530 |
commit | 8a0d74087a42351f099cc5cc2a64e756aa9789ba (patch) | |
tree | f73f1a008e262ddaeaab9e398fd1eaa0409b606e | |
parent | d0b84165204885e86d9690abe6f543f33491e1c5 (diff) | |
download | android_hardware_samsung-8a0d74087a42351f099cc5cc2a64e756aa9789ba.tar.gz android_hardware_samsung-8a0d74087a42351f099cc5cc2a64e756aa9789ba.tar.bz2 android_hardware_samsung-8a0d74087a42351f099cc5cc2a64e756aa9789ba.zip |
libril: Fix signal strength
Change-Id: I81ce6dbb99a04c62666823602d1b72bb3fc50a1c
-rw-r--r-- | ril/libril/ril.cpp | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/ril/libril/ril.cpp b/ril/libril/ril.cpp index 97e40b1..07aaa58 100644 --- a/ril/libril/ril.cpp +++ b/ril/libril/ril.cpp @@ -2967,6 +2967,10 @@ static int responseCdmaInformationRecords(Parcel &p, static int responseRilSignalStrength(Parcel &p, void *response, size_t responselen) { + int gsmSignalStrength; + int cdmaDbm; + int evdoDbm; + if (response == NULL && responselen != 0) { RLOGE("invalid response: NULL"); return RIL_ERRNO_INVALID_RESPONSE; @@ -2975,11 +2979,44 @@ static int responseRilSignalStrength(Parcel &p, if (responselen >= sizeof (RIL_SignalStrength_v5)) { RIL_SignalStrength_v10 *p_cur = ((RIL_SignalStrength_v10 *) response); - p.writeInt32(p_cur->GW_SignalStrength.signalStrength); +#if defined(MODEM_TYPE_XMM6262) || defined(MODEM_TYPE_XMM7260) + gsmSignalStrength = p_cur->GW_SignalStrength.signalStrength & 0xFF; + if (gsmSignalStrength < 0) { + gsmSignalStrength = 99; + } else if (gsmSignalStrength > 31 && gsmSignalStrength != 99) { + gsmSignalStrength = 31; + } +#else + gsmSignalStrength = p_cur->GW_SignalStrength.signalStrength; +#endif + p.writeInt32(gsmSignalStrength); + p.writeInt32(p_cur->GW_SignalStrength.bitErrorRate); - p.writeInt32(p_cur->CDMA_SignalStrength.dbm); + +#if defined(MODEM_TYPE_XMM6262) || defined(MODEM_TYPE_XMM7260) + cdmaDbm = p_cur->CDMA_SignalStrength.dbm & 0xFF; + if (cdmaDbm < 0) { + cdmaDbm = 99; + } else if (cdmaDbm > 31 && cdmaDbm != 99) { + cdmaDbm = 31; + } +#else + cdmaDbm = p_cur->CDMA_SignalStrength.dbm +#endif + p.writeInt32(cdmaDbm); p.writeInt32(p_cur->CDMA_SignalStrength.ecio); - p.writeInt32(p_cur->EVDO_SignalStrength.dbm); + +#if defined(MODEM_TYPE_XMM6262) || defined(MODEM_TYPE_XMM7260) + evdoDbm = p_cur->EVDO_SignalStrength.dbm & 0xFF; + if (evdoDbm < 0) { + evdoDbm = 99; + } else if (evdoDbm > 31 && evdoDbm != 99) { + evdoDbm = 31; + } +#else + evdoDbm = p_cur->EVDO_SignalStrength.dbm; +#endif + p.writeInt32(evdoDbm); p.writeInt32(p_cur->EVDO_SignalStrength.ecio); p.writeInt32(p_cur->EVDO_SignalStrength.signalNoiseRatio); if (responselen >= sizeof (RIL_SignalStrength_v6)) { @@ -3036,11 +3073,11 @@ static int responseRilSignalStrength(Parcel &p, LTE_SS.signalStrength=%d,LTE_SS.rsrp=%d,LTE_SS.rsrq=%d,\ LTE_SS.rssnr=%d,LTE_SS.cqi=%d,TDSCDMA_SS.rscp=%d]", printBuf, - p_cur->GW_SignalStrength.signalStrength, + gsmSignalStrength, p_cur->GW_SignalStrength.bitErrorRate, - p_cur->CDMA_SignalStrength.dbm, + cdmaDbm, p_cur->CDMA_SignalStrength.ecio, - p_cur->EVDO_SignalStrength.dbm, + evdoDbm, p_cur->EVDO_SignalStrength.ecio, p_cur->EVDO_SignalStrength.signalNoiseRatio, p_cur->LTE_SignalStrength.signalStrength, |