summaryrefslogtreecommitdiffstats
path: root/ril
diff options
context:
space:
mode:
authorUtkarsh Gupta <utkarsh.eminem@gmail.com>2015-04-13 13:33:37 +0530
committerUtkarsh Gupta <utkarsh.eminem@gmail.com>2015-04-13 12:28:09 +0530
commit8a0d74087a42351f099cc5cc2a64e756aa9789ba (patch)
treef73f1a008e262ddaeaab9e398fd1eaa0409b606e /ril
parentd0b84165204885e86d9690abe6f543f33491e1c5 (diff)
downloadandroid_hardware_samsung-8a0d74087a42351f099cc5cc2a64e756aa9789ba.tar.gz
android_hardware_samsung-8a0d74087a42351f099cc5cc2a64e756aa9789ba.tar.bz2
android_hardware_samsung-8a0d74087a42351f099cc5cc2a64e756aa9789ba.zip
libril: Fix signal strength
Change-Id: I81ce6dbb99a04c62666823602d1b72bb3fc50a1c
Diffstat (limited to 'ril')
-rw-r--r--ril/libril/ril.cpp49
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,