Skip to content

Commit 7f8ab4b

Browse files
Justin HoAndroid Git Automerger
authored andcommitted
am 66146c4: am 792d83c: Merge "Use LTE SNR and RSRP to set signal level bar." into ics-mr1
* commit '66146c4f5b3930f7f5f08b845fb30f2bc24f8c3d': Use LTE SNR and RSRP to set signal level bar.
2 parents ae43561 + 66146c4 commit 7f8ab4b

File tree

3 files changed

+48
-16
lines changed

3 files changed

+48
-16
lines changed

telephony/java/android/telephony/SignalStrength.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ public class SignalStrength implements Parcelable {
4747
"none", "poor", "moderate", "good", "great"
4848
};
4949

50+
/** @hide */
51+
public static final int INVALID_SNR = 0x7FFFFFFF;
52+
5053
private int mGsmSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5
5154
private int mGsmBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5
5255
private int mCdmaDbm; // This value is the RSSI value
@@ -96,7 +99,7 @@ public SignalStrength() {
9699
mLteSignalStrength = -1;
97100
mLteRsrp = -1;
98101
mLteRsrq = -1;
99-
mLteRssnr = -1;
102+
mLteRssnr = INVALID_SNR;
100103
mLteCqi = -1;
101104
isGsm = true;
102105
}
@@ -136,7 +139,8 @@ public SignalStrength(int gsmSignalStrength, int gsmBitErrorRate,
136139
int evdoDbm, int evdoEcio, int evdoSnr,
137140
boolean gsm) {
138141
this(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio,
139-
evdoDbm, evdoEcio, evdoSnr, -1, -1, -1, -1, -1, gsm);
142+
evdoDbm, evdoEcio, evdoSnr, -1, -1,
143+
-1, INVALID_SNR, -1, gsm);
140144
}
141145

142146
/**
@@ -292,7 +296,7 @@ public int getLevel() {
292296
if ((mLteSignalStrength == -1)
293297
&& (mLteRsrp == -1)
294298
&& (mLteRsrq == -1)
295-
&& (mLteRssnr == -1)
299+
&& (mLteRssnr == INVALID_SNR)
296300
&& (mLteCqi == -1)) {
297301
level = getGsmLevel();
298302
} else {
@@ -327,7 +331,7 @@ public int getAsuLevel() {
327331
if ((mLteSignalStrength == -1)
328332
&& (mLteRsrp == -1)
329333
&& (mLteRsrq == -1)
330-
&& (mLteRssnr == -1)
334+
&& (mLteRssnr == INVALID_SNR)
331335
&& (mLteCqi == -1)) {
332336
asuLevel = getGsmAsuLevel();
333337
} else {
@@ -363,7 +367,7 @@ public int getDbm() {
363367
if ((mLteSignalStrength == -1)
364368
&& (mLteRsrp == -1)
365369
&& (mLteRsrq == -1)
366-
&& (mLteRssnr == -1)
370+
&& (mLteRssnr == INVALID_SNR)
367371
&& (mLteCqi == -1)) {
368372
dBm = getGsmDbm();
369373
} else {
@@ -566,15 +570,31 @@ public int getLteDbm() {
566570
*/
567571
public int getLteLevel() {
568572
int levelLteRsrp = 0;
573+
int levelLteRssnr = 0;
569574

570575
if (mLteRsrp == -1) levelLteRsrp = 0;
571576
else if (mLteRsrp >= -95) levelLteRsrp = SIGNAL_STRENGTH_GREAT;
572577
else if (mLteRsrp >= -105) levelLteRsrp = SIGNAL_STRENGTH_GOOD;
573578
else if (mLteRsrp >= -115) levelLteRsrp = SIGNAL_STRENGTH_MODERATE;
574579
else levelLteRsrp = SIGNAL_STRENGTH_POOR;
575580

576-
if (DBG) log("Lte level: "+levelLteRsrp);
577-
return levelLteRsrp;
581+
if (mLteRssnr == INVALID_SNR) levelLteRssnr = 0;
582+
else if (mLteRssnr >= 45) levelLteRssnr = SIGNAL_STRENGTH_GREAT;
583+
else if (mLteRssnr >= 10) levelLteRssnr = SIGNAL_STRENGTH_GOOD;
584+
else if (mLteRssnr >= -30) levelLteRssnr = SIGNAL_STRENGTH_MODERATE;
585+
else levelLteRssnr = SIGNAL_STRENGTH_POOR;
586+
587+
int level;
588+
if (mLteRsrp == -1)
589+
level = levelLteRssnr;
590+
else if (mLteRssnr == INVALID_SNR)
591+
level = levelLteRsrp;
592+
else
593+
level = (levelLteRssnr < levelLteRsrp) ? levelLteRssnr : levelLteRsrp;
594+
595+
if (DBG) log("Lte rsrp level: "+levelLteRsrp
596+
+ " snr level: " + levelLteRssnr + " level: " + level);
597+
return level;
578598
}
579599

580600
/**

telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,9 @@ protected void handlePollStateResultMessage(int what, AsyncResult ar) {
124124

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

130132
@Override
@@ -429,27 +431,35 @@ protected void onSignalStrengthResult(AsyncResult ar) {
429431
setSignalStrengthDefaultValues();
430432
} else {
431433
int[] ints = (int[])ar.result;
432-
int lteCqi = 99, lteRsrp = -1;
433-
int lteRssi = 99;
434+
435+
int lteRssi = -1;
436+
int lteRsrp = -1;
437+
int lteRsrq = -1;
438+
int lteRssnr = SignalStrength.INVALID_SNR;
439+
int lteCqi = -1;
440+
434441
int offset = 2;
435442
int cdmaDbm = (ints[offset] > 0) ? -ints[offset] : -120;
436443
int cdmaEcio = (ints[offset + 1] > 0) ? -ints[offset + 1] : -160;
437444
int evdoRssi = (ints[offset + 2] > 0) ? -ints[offset + 2] : -120;
438445
int evdoEcio = (ints[offset + 3] > 0) ? -ints[offset + 3] : -1;
439446
int evdoSnr = ((ints[offset + 4] > 0) && (ints[offset + 4] <= 8)) ? ints[offset + 4]
440447
: -1;
448+
441449
if (networkType == ServiceState.RADIO_TECHNOLOGY_LTE) {
442-
lteRssi = (ints[offset + 5] >= 0) ? ints[offset + 5] : 99;
443-
lteRsrp = (ints[offset + 6] < 0) ? ints[offset + 6] : -1;
444-
lteCqi = (ints[offset + 7] >= 0) ? ints[offset + 7] : 99;
450+
lteRssi = ints[offset+5];
451+
lteRsrp = ints[offset+6];
452+
lteRsrq = ints[offset+7];
453+
lteRssnr = ints[offset+8];
454+
lteCqi = ints[offset+9];
445455
}
446456

447457
if (networkType != ServiceState.RADIO_TECHNOLOGY_LTE) {
448458
mSignalStrength = new SignalStrength(99, -1, cdmaDbm, cdmaEcio, evdoRssi, evdoEcio,
449459
evdoSnr, false);
450460
} else {
451461
mSignalStrength = new SignalStrength(99, -1, cdmaDbm, cdmaEcio, evdoRssi, evdoEcio,
452-
evdoSnr, lteRssi, lteRsrp, -1, -1, lteCqi, true);
462+
evdoSnr, lteRssi, lteRsrp, lteRsrq, lteRssnr, lteCqi, true);
453463
}
454464
}
455465

telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,9 @@ protected void handlePollStateResult (int what, AsyncResult ar) {
675675
}
676676

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

681683
/**
@@ -1013,7 +1015,7 @@ private void onSignalStrengthResult(AsyncResult ar) {
10131015
int lteSignalStrength = -1;
10141016
int lteRsrp = -1;
10151017
int lteRsrq = -1;
1016-
int lteRssnr = -1;
1018+
int lteRssnr = SignalStrength.INVALID_SNR;
10171019
int lteCqi = -1;
10181020

10191021
if (ar.exception != null) {

0 commit comments

Comments
 (0)