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

Commit c8583c1b authored by Justin Ho's avatar Justin Ho Committed by Android Git Automerger
Browse files

am 792d83c5: Merge "Use LTE SNR and RSRP to set signal level bar." into ics-mr1

* commit '792d83c5':
  Use LTE SNR and RSRP to set signal level bar.
parents fe82ef58 792d83c5
Loading
Loading
Loading
Loading
+27 −7
Original line number Diff line number Diff line
@@ -47,6 +47,9 @@ public class SignalStrength implements Parcelable {
        "none", "poor", "moderate", "good", "great"
    };

    /** @hide */
    public static final int INVALID_SNR = 0x7FFFFFFF;

    private int mGsmSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5
    private int mGsmBitErrorRate;   // bit error rate (0-7, 99) as defined in TS 27.007 8.5
    private int mCdmaDbm;   // This value is the RSSI value
@@ -96,7 +99,7 @@ public class SignalStrength implements Parcelable {
        mLteSignalStrength = -1;
        mLteRsrp = -1;
        mLteRsrq = -1;
        mLteRssnr = -1;
        mLteRssnr = INVALID_SNR;
        mLteCqi = -1;
        isGsm = true;
    }
@@ -136,7 +139,8 @@ public class SignalStrength implements Parcelable {
            int evdoDbm, int evdoEcio, int evdoSnr,
            boolean gsm) {
        this(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio,
                evdoDbm, evdoEcio, evdoSnr, -1, -1, -1, -1, -1, gsm);
                evdoDbm, evdoEcio, evdoSnr, -1, -1,
                -1, INVALID_SNR, -1, gsm);
    }

    /**
@@ -292,7 +296,7 @@ public class SignalStrength implements Parcelable {
            if ((mLteSignalStrength == -1)
                    && (mLteRsrp == -1)
                    && (mLteRsrq == -1)
                    && (mLteRssnr == -1)
                    && (mLteRssnr == INVALID_SNR)
                    && (mLteCqi == -1)) {
                level = getGsmLevel();
            } else {
@@ -327,7 +331,7 @@ public class SignalStrength implements Parcelable {
            if ((mLteSignalStrength == -1)
                    && (mLteRsrp == -1)
                    && (mLteRsrq == -1)
                    && (mLteRssnr == -1)
                    && (mLteRssnr == INVALID_SNR)
                    && (mLteCqi == -1)) {
                asuLevel = getGsmAsuLevel();
            } else {
@@ -363,7 +367,7 @@ public class SignalStrength implements Parcelable {
            if ((mLteSignalStrength == -1)
                    && (mLteRsrp == -1)
                    && (mLteRsrq == -1)
                    && (mLteRssnr == -1)
                    && (mLteRssnr == INVALID_SNR)
                    && (mLteCqi == -1)) {
                dBm = getGsmDbm();
            } else {
@@ -566,6 +570,7 @@ public class SignalStrength implements Parcelable {
     */
    public int getLteLevel() {
        int levelLteRsrp = 0;
        int levelLteRssnr = 0;

        if (mLteRsrp == -1) levelLteRsrp = 0;
        else if (mLteRsrp >= -95) levelLteRsrp = SIGNAL_STRENGTH_GREAT;
@@ -573,8 +578,23 @@ public class SignalStrength implements Parcelable {
        else if (mLteRsrp >= -115) levelLteRsrp = SIGNAL_STRENGTH_MODERATE;
        else levelLteRsrp = SIGNAL_STRENGTH_POOR;

        if (DBG) log("Lte level: "+levelLteRsrp);
        return levelLteRsrp;
        if (mLteRssnr == INVALID_SNR) levelLteRssnr = 0;
        else if (mLteRssnr >= 45) levelLteRssnr = SIGNAL_STRENGTH_GREAT;
        else if (mLteRssnr >= 10) levelLteRssnr = SIGNAL_STRENGTH_GOOD;
        else if (mLteRssnr >= -30) levelLteRssnr = SIGNAL_STRENGTH_MODERATE;
        else levelLteRssnr = SIGNAL_STRENGTH_POOR;

        int level;
        if (mLteRsrp == -1)
            level = levelLteRssnr;
        else if (mLteRssnr == INVALID_SNR)
            level = levelLteRsrp;
        else
            level = (levelLteRssnr < levelLteRsrp) ? levelLteRssnr : levelLteRsrp;

        if (DBG) log("Lte rsrp level: "+levelLteRsrp
                + " snr level: " + levelLteRssnr + " level: " + level);
        return level;
    }

    /**
+17 −7
Original line number Diff line number Diff line
@@ -147,7 +147,9 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {

    @Override
    protected void setSignalStrengthDefaultValues() {
        mSignalStrength = new SignalStrength(99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, false);
        // TODO Make a constructor only has boolean gsm as parameter
        mSignalStrength = new SignalStrength(99, -1, -1, -1, -1, -1, -1,
                -1, -1, -1, SignalStrength.INVALID_SNR, -1, false);
    }

    @Override
@@ -452,8 +454,13 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
            setSignalStrengthDefaultValues();
        } else {
            int[] ints = (int[])ar.result;
            int lteCqi = 99, lteRsrp = -1;
            int lteRssi = 99;

            int lteRssi = -1;
            int lteRsrp = -1;
            int lteRsrq = -1;
            int lteRssnr = SignalStrength.INVALID_SNR;
            int lteCqi = -1;

            int offset = 2;
            int cdmaDbm = (ints[offset] > 0) ? -ints[offset] : -120;
            int cdmaEcio = (ints[offset + 1] > 0) ? -ints[offset + 1] : -160;
@@ -461,10 +468,13 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
            int evdoEcio = (ints[offset + 3] > 0) ? -ints[offset + 3] : -1;
            int evdoSnr = ((ints[offset + 4] > 0) && (ints[offset + 4] <= 8)) ? ints[offset + 4]
                    : -1;

            if (networkType == ServiceState.RADIO_TECHNOLOGY_LTE) {
                lteRssi = (ints[offset + 5] >= 0) ? ints[offset + 5] : 99;
                lteRsrp = (ints[offset + 6] < 0) ? ints[offset + 6] : -1;
                lteCqi = (ints[offset + 7] >= 0) ? ints[offset + 7] : 99;
                lteRssi = ints[offset+5];
                lteRsrp = ints[offset+6];
                lteRsrq = ints[offset+7];
                lteRssnr = ints[offset+8];
                lteCqi = ints[offset+9];
            }

            if (networkType != ServiceState.RADIO_TECHNOLOGY_LTE) {
@@ -472,7 +482,7 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker {
                        evdoSnr, false);
            } else {
                mSignalStrength = new SignalStrength(99, -1, cdmaDbm, cdmaEcio, evdoRssi, evdoEcio,
                        evdoSnr, lteRssi, lteRsrp, -1, -1, lteCqi, true);
                        evdoSnr, lteRssi, lteRsrp, lteRsrq, lteRssnr, lteCqi, true);
            }
        }

+4 −2
Original line number Diff line number Diff line
@@ -671,7 +671,9 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
    }

    private void setSignalStrengthDefaultValues() {
        mSignalStrength = new SignalStrength(99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, true);
        // TODO Make a constructor only has boolean gsm as parameter
        mSignalStrength = new SignalStrength(99, -1, -1, -1, -1, -1, -1,
                -1, -1, -1, SignalStrength.INVALID_SNR, -1, true);
    }

    /**
@@ -1023,7 +1025,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
        int lteSignalStrength = -1;
        int lteRsrp = -1;
        int lteRsrq = -1;
        int lteRssnr = -1;
        int lteRssnr = SignalStrength.INVALID_SNR;
        int lteCqi = -1;

        if (ar.exception != null) {