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

Commit 792d83c5 authored by Justin Ho's avatar Justin Ho Committed by Android (Google) Code Review
Browse files

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

parents 34260ad7 5e395193
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) {