summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-05-25 11:24:09 +0200
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-05-25 11:52:44 +0200
commit0df8e7bc896630eacc432fcf17642d571ea3a9e6 (patch)
tree0e9948ee7af60cc1499c2396c1053f4c87d4c73f
parent2804f22d312e54079a5a9e3c33b7355dbe4d377e (diff)
downloaddevice_samsung_galaxys2-common-0df8e7bc896630eacc432fcf17642d571ea3a9e6.zip
device_samsung_galaxys2-common-0df8e7bc896630eacc432fcf17642d571ea3a9e6.tar.gz
device_samsung_galaxys2-common-0df8e7bc896630eacc432fcf17642d571ea3a9e6.tar.bz2
galaxys2: libril: add a fallback to handle signalstrength for older modems
Change-Id: I66c253dbd8bf0db38b7e723cd43357752d2d9949
-rwxr-xr-xlibril/ril.cpp50
1 files changed, 19 insertions, 31 deletions
diff --git a/libril/ril.cpp b/libril/ril.cpp
index ba5d43c..1fb338d 100755
--- a/libril/ril.cpp
+++ b/libril/ril.cpp
@@ -1880,8 +1880,6 @@ static int responseRilSignalStrength(Parcel &p,
void *response, size_t responselen) {
int gsmSignalStrength;
- int cdmaDbm;
- int evdoDbm;
if (response == NULL && responselen != 0) {
ALOGE("invalid response: NULL");
@@ -1896,42 +1894,32 @@ static int responseRilSignalStrength(Parcel &p,
/* gsmSignalStrength */
ALOGD("gsmSignalStrength (raw)=%d", p_cur->GW_SignalStrength.signalStrength);
gsmSignalStrength = p_cur->GW_SignalStrength.signalStrength & 0xFF;
- if (gsmSignalStrength < 0) {
- gsmSignalStrength = 99;
- } else if (gsmSignalStrength > 31 && gsmSignalStrength != 99) {
- gsmSignalStrength = 31;
- }
ALOGD("gsmSignalStrength (corrected)=%d", gsmSignalStrength);
+
+ /*
+ * if gsmSignalStrength isn't a valid value, use cdmaDbm as fallback.
+ * This is needed for old modem firmwares.
+ */
+ if (gsmSignalStrength < 0 || (gsmSignalStrength > 31 && p_cur->GW_SignalStrength.signalStrength != 99)) {
+ ALOGD("gsmSignalStrength-fallback (raw)=%d", p_cur->CDMA_SignalStrength.dbm);
+ gsmSignalStrength = p_cur->CDMA_SignalStrength.dbm;
+ if (gsmSignalStrength < 0) {
+ gsmSignalStrength = 99;
+ } else if (gsmSignalStrength > 31 && gsmSignalStrength != 99) {
+ gsmSignalStrength = 31;
+ }
+ ALOGD("gsmSignalStrength-fallback (corrected)=%d", gsmSignalStrength);
+ }
p.writeInt32(gsmSignalStrength);
/* gsmBitErrorRate */
p.writeInt32(p_cur->GW_SignalStrength.bitErrorRate);
-
/* cdmaDbm */
- //ALOGD("cdmaDbm (raw)=%d", p_cur->CDMA_SignalStrength.dbm);
- cdmaDbm = p_cur->CDMA_SignalStrength.dbm & 0xFF;
- if (cdmaDbm < 0) {
- cdmaDbm = 99;
- } else if (cdmaDbm > 31 && cdmaDbm != 99) {
- cdmaDbm = 31;
- }
- //ALOGD("cdmaDbm (corrected)=%d", cdmaDbm);
- p.writeInt32(cdmaDbm);
-
+ p.writeInt32(p_cur->CDMA_SignalStrength.dbm);
/* cdmaEcio */
p.writeInt32(p_cur->CDMA_SignalStrength.ecio);
-
/* evdoDbm */
- //ALOGD("evdoDbm (raw)=%d", p_cur->EVDO_SignalStrength.dbm);
- evdoDbm = p_cur->EVDO_SignalStrength.dbm & 0xFF;
- if (evdoDbm < 0) {
- evdoDbm = 99;
- } else if (evdoDbm > 31 && evdoDbm != 99) {
- evdoDbm = 31;
- }
- //ALOGD("evdoDbm (corrected)=%d", evdoDbm);
- p.writeInt32(evdoDbm);
-
+ p.writeInt32(p_cur->EVDO_SignalStrength.dbm);
/* evdoEcio */
p.writeInt32(p_cur->EVDO_SignalStrength.ecio);
/* evdoSnr */
@@ -1972,9 +1960,9 @@ static int responseRilSignalStrength(Parcel &p,
printBuf,
gsmSignalStrength,
p_cur->GW_SignalStrength.bitErrorRate,
- cdmaDbm,
+ p_cur->CDMA_SignalStrength.dbm,
p_cur->CDMA_SignalStrength.ecio,
- evdoDbm,
+ p_cur->EVDO_SignalStrength.dbm,
p_cur->EVDO_SignalStrength.ecio,
p_cur->EVDO_SignalStrength.signalNoiseRatio,
p_cur->LTE_SignalStrength.signalStrength,