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

Commit 96f2747d authored by Yong Zhang's avatar Yong Zhang Committed by Wink Saville
Browse files

Fix wrong Singal Strength interpretation.

The issue this change fixes is that phone status bar shows full
signal strength bar even when phone is in bad signal area. The
root cause is that the signal strenth  is incorrectly interpreted.
parent 206b7b17
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -926,17 +926,16 @@ public class StatusBarPolicy {
            // Use Evdo icon
            evdoIconList = this.sSignalImages_evdo;

            int evdoEcio = mSignalStrength.getEvdoEcio();
            int evdoDbm = mSignalStrength.getEvdoDbm();
            int evdoSnr = mSignalStrength.getEvdoSnr();
            int levelEvdoEcio = 0;
            int levelEvdoDbm = 0;
            int levelEvdoSnr = 0;

            // Ec/Io are in dB*10
            if (evdoEcio >= -650) levelEvdoEcio = 4;
            else if (evdoEcio >= -750) levelEvdoEcio = 3;
            else if (evdoEcio >= -900) levelEvdoEcio = 2;
            else if (evdoEcio >= -1050) levelEvdoEcio = 1;
            else levelEvdoEcio = 0;
            if (evdoDbm >= -65) levelEvdoDbm = 4;
            else if (evdoDbm >= -75) levelEvdoDbm = 3;
            else if (evdoDbm >= -90) levelEvdoDbm = 2;
            else if (evdoDbm >= -105) levelEvdoDbm = 1;
            else levelEvdoDbm = 0;

            if (evdoSnr > 7) levelEvdoSnr = 4;
            else if (evdoSnr > 5) levelEvdoSnr = 3;
@@ -944,7 +943,7 @@ public class StatusBarPolicy {
            else if (evdoSnr > 1) levelEvdoSnr = 1;
            else levelEvdoSnr = 0;

            evdoIconLevel = (levelEvdoEcio < levelEvdoSnr) ? levelEvdoEcio : levelEvdoSnr;
            evdoIconLevel = (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr;

            mPhoneEvdoData.iconId = evdoIconList[evdoIconLevel];
            mService.updateIcon(mPhoneEvdoIcon, mPhoneEvdoData, null);
+4 −4
Original line number Diff line number Diff line
@@ -1074,7 +1074,7 @@ final class CdmaServiceStateTracker extends ServiceStateTracker {

    /**
     *  send signal-strength-changed notification if changed
     *  Called both for solicited and unsolicited signal stength updates
     *  Called both for solicited and unsolicited signal strength updates
     */
    private void
    onSignalStrengthResult(AsyncResult ar) {
@@ -1087,15 +1087,15 @@ final class CdmaServiceStateTracker extends ServiceStateTracker {
            int[] ints = (int[])ar.result;
            int offset = 2;

            int cdmaDbm = (ints[offset] > 0) ? -ints[offset] : -1;
            int cdmaEcio = (ints[offset+1] > 0) ? -ints[offset+1] : -1;
            int cdmaDbm = (ints[offset] > 0) ? -ints[offset] : -120;
            int cdmaEcio = (ints[offset+1] > 0) ? -ints[offset+1] : -160;

            int evdoRssi = -1;
            int evdoEcio = -1;
            int evdoSnr = -1;
            if ((networkType == ServiceState.RADIO_TECHNOLOGY_EVDO_0)
                    || (networkType == ServiceState.RADIO_TECHNOLOGY_EVDO_A)) {
                evdoRssi = (ints[offset+2] > 0) ? -ints[offset+2] : -1;
                evdoRssi = (ints[offset+2] > 0) ? -ints[offset+2] : -120;
                evdoEcio = (ints[offset+3] > 0) ? -ints[offset+3] : -1;
                evdoSnr  = ((ints[offset+4] > 0) && (ints[offset+4] <= 8)) ? ints[offset+4] : -1;
            }