Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7cc1db83 authored by athurh's avatar athurh
Browse files

SamsungExynos4RIL: fix signal strength

Doesn't work with Gingerbread radios!

Since ICS, the modem sends the signal strength in the first 8 bits
and the number of bars as from bit 9.
For old radios the first 8 bits are always 99.

Change-Id: I67b31baf18cbce2dfa7e6f8b096caaae74cd7cd8
parent 3be8945b
Loading
Loading
Loading
Loading
+4 −11
Original line number Diff line number Diff line
@@ -854,21 +854,14 @@ public class SamsungExynos4RIL extends RIL implements CommandsInterface {
        */

        int mGsmSignalStrength = response[0]; // Valid values are (0-31, 99) as defined in TS 27.007 8.5
        int mCdmaDbm = response[2];

        Log.d(LOG_TAG, "responseSignalStength (unmodified): gsmSignalStrength=" + mGsmSignalStrength);
        Log.d(LOG_TAG, "responseSignalStrength (unmodified): gsmSignalStrength=" + mGsmSignalStrength);

        if (mCdmaDbm < 0) {
            mGsmSignalStrength = 99;
        } else if (mCdmaDbm > 31) {
            mGsmSignalStrength = 31;
        } else {
            mGsmSignalStrength = mCdmaDbm;
        }
        mGsmSignalStrength = mGsmSignalStrength & 0xff; // Get the first 8 bits

        Log.d(LOG_TAG, "responseSignalStength (corrected): gsmSignalStrength=" + mGsmSignalStrength);
        Log.d(LOG_TAG, "responseSignalStrength (corrected): gsmSignalStrength=" + mGsmSignalStrength);

        SignalStrength signalStrength = new SignalStrength(mGsmSignalStrength, response[1], mCdmaDbm,
        SignalStrength signalStrength = new SignalStrength(mGsmSignalStrength, response[1], response[2],
                response[3], response[4], response[5], response[6], isGsm);

        return signalStrength;