Workaround for LTE RSRP -ve values in Signal
Ril version 6 and below sends negative values
for lte rsrp in signalstrength.
Workaround to maintain backward compatibility
and convert this to positive
values in compliance with ril.h
Support for processing all fields in
SignalStrength in reference-ril
Change-Id: I4d480aa2f607cd617b18681f722de246a7894348
diff --git a/libril/ril.cpp b/libril/ril.cpp
index b8aba01..e3f7e41 100644
--- a/libril/ril.cpp
+++ b/libril/ril.cpp
@@ -1995,6 +1995,15 @@
p.writeInt32(p_cur->EVDO_SignalStrength.signalNoiseRatio);
if (responselen >= sizeof (RIL_SignalStrength_v6)) {
p.writeInt32(p_cur->LTE_SignalStrength.signalStrength);
+
+ /*
+ * ril version <=6 receives negative values for rsrp
+ * workaround for backward compatibility
+ */
+ p_cur->LTE_SignalStrength.rsrp =
+ ((s_callbacks.version <= 6) && (p_cur->LTE_SignalStrength.rsrp < 0 )) ?
+ -(p_cur->LTE_SignalStrength.rsrp) : p_cur->LTE_SignalStrength.rsrp;
+
p.writeInt32(p_cur->LTE_SignalStrength.rsrp);
p.writeInt32(p_cur->LTE_SignalStrength.rsrq);
p.writeInt32(p_cur->LTE_SignalStrength.rssnr);