Merge "Use LTE SNR and RSRP to set signal level bar." into ics-mr1
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
Reference in New Issue
Block a user