Merge "Customize the WCDMA signal strength based on RSCP"

This commit is contained in:
Jordan Liu
2018-03-06 18:54:56 +00:00
committed by Gerrit Code Review
2 changed files with 294 additions and 12 deletions

View File

@@ -1841,6 +1841,33 @@ public class CarrierConfigManager {
public static final String KEY_CARRIER_NETWORK_SERVICE_WWAN_PACKAGE_OVERRIDE_STRING
= "carrier_network_service_wwan_package_override_string";
/**
* A list of 4 LTE RSCP thresholds above which a signal level is considered POOR,
* MODERATE, GOOD, or EXCELLENT, to be used in SignalStrength reporting.
*
* Note that the min and max thresholds are fixed at -120 and -24, as set in 3GPP TS 27.007
* section 8.69.
* <p>
* See SignalStrength#MAX_WCDMA_RSCP and SignalStrength#MIN_WDCMA_RSCP. Any signal level outside
* these boundaries is considered invalid.
* @hide
*/
public static final String KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY =
"wcdma_rscp_thresholds_int_array";
/**
* The default measurement to use for signal strength reporting. If this is not specified, the
* RSSI is used.
* <p>
* e.g.) To use RSCP by default, set the value to "rscp". The signal strength level will
* then be determined by #KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY
* <p>
* Currently this only supports the value "rscp"
* @hide
*/
public static final String KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING =
"wcdma_default_signal_strength_measurement_string";
/** The default value for every variable. */
private final static PersistableBundle sDefaults;
@@ -2143,6 +2170,14 @@ public class CarrierConfigManager {
-108, /* SIGNAL_STRENGTH_GOOD */
-98, /* SIGNAL_STRENGTH_GREAT */
});
sDefaults.putIntArray(KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY,
new int[] {
-115, /* SIGNAL_STRENGTH_POOR */
-105, /* SIGNAL_STRENGTH_MODERATE */
-95, /* SIGNAL_STRENGTH_GOOD */
-85 /* SIGNAL_STRENGTH_GREAT */
});
sDefaults.putString(KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING, "");
}
/**

View File

@@ -25,6 +25,7 @@ import android.content.res.Resources;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
/**
* Contains phone signal strength related information.
@@ -61,6 +62,13 @@ public class SignalStrength implements Parcelable {
private static final int MAX_LTE_RSRP = -44;
private static final int MIN_LTE_RSRP = -140;
private static final int WCDMA_RSCP_THRESHOLDS_NUM = 4;
private static final int MAX_WCDMA_RSCP = -24;
private static final int MIN_WCDMA_RSCP = -120;
/* The type of signal measurement */
private static final String MEASUMENT_TYPE_RSCP = "rscp";
/** Parameters reported by the Radio */
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
@@ -75,6 +83,9 @@ public class SignalStrength implements Parcelable {
private int mLteRssnr;
private int mLteCqi;
private int mTdScdmaRscp;
private int mWcdmaSignalStrength;
private int mWcdmaRscpAsu; // the WCDMA RSCP in ASU as reported from the HAL
private int mWcdmaRscp; // the WCDMA RSCP in dBm
/** Parameters from the framework */
private int mLteRsrpBoost; // offset to be reduced from the rsrp threshold while calculating
@@ -87,6 +98,13 @@ public class SignalStrength implements Parcelable {
// min and max are fixed at MIN_LTE_RSRP (-140) and MAX_LTE_RSRP (-44).
private int mLteRsrpThresholds[] = new int[LTE_RSRP_THRESHOLDS_NUM];
// The type of default measurement for determining the display level of WCDMA signal bar.
private String mWcdmaDefaultSignalMeasurement;
// The threshold of WCDMA RSCP for determining the display level of WCDMA signal bar. Note that
// the min and max are fixed at MIN_WCDMA_RSCP (-120) and MAX_WCDMA_RSCP (-24).
private int mWcdmaRscpThresholds[] = new int[WCDMA_RSCP_THRESHOLDS_NUM];
/**
* Create a new SignalStrength from a intent notifier Bundle
*
@@ -136,10 +154,14 @@ public class SignalStrength implements Parcelable {
mLteRssnr = INVALID;
mLteCqi = INVALID;
mTdScdmaRscp = INVALID;
mWcdmaSignalStrength = 99;
mWcdmaRscp = INVALID;
mLteRsrpBoost = 0;
mIsGsm = gsmFlag;
mUseOnlyRsrpForLteLevel = false;
mWcdmaDefaultSignalMeasurement = "";
setLteRsrpThresholds(getDefaultLteRsrpThresholds());
setWcdmaRscpThresholds(getDefaultWcdmaRscpThresholds());
}
/**
@@ -152,9 +174,10 @@ public class SignalStrength implements Parcelable {
int cdmaDbm, int cdmaEcio,
int evdoDbm, int evdoEcio, int evdoSnr,
int lteSignalStrength, int lteRsrp, int lteRsrq, int lteRssnr, int lteCqi,
int tdScdmaRscp,
int tdScdmaRscp, int wcdmaSignalStrength, int wcdmaRscpAsu,
// values Added by config
int lteRsrpBoost, boolean gsmFlag, boolean lteLevelBaseOnRsrp) {
int lteRsrpBoost, boolean gsmFlag, boolean lteLevelBaseOnRsrp,
String wcdmaDefaultMeasurement) {
mGsmSignalStrength = gsmSignalStrength;
mGsmBitErrorRate = gsmBitErrorRate;
mCdmaDbm = cdmaDbm;
@@ -168,15 +191,20 @@ public class SignalStrength implements Parcelable {
mLteRssnr = lteRssnr;
mLteCqi = lteCqi;
mTdScdmaRscp = INVALID;
mWcdmaSignalStrength = wcdmaSignalStrength;
mWcdmaRscpAsu = wcdmaRscpAsu;
mWcdmaRscp = wcdmaRscpAsu - 120;
mLteRsrpBoost = lteRsrpBoost;
mIsGsm = gsmFlag;
mUseOnlyRsrpForLteLevel = lteLevelBaseOnRsrp;
mWcdmaDefaultSignalMeasurement = wcdmaDefaultMeasurement;
setLteRsrpThresholds(getDefaultLteRsrpThresholds());
setWcdmaRscpThresholds(getDefaultWcdmaRscpThresholds());
if (DBG) log("initialize: " + toString());
}
/**
* Constructor for only values provided by Radio HAL
* Constructor for only values provided by Radio HAL V1.0
*
* @hide
*/
@@ -187,7 +215,23 @@ public class SignalStrength implements Parcelable {
int tdScdmaRscp) {
this(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio,
evdoDbm, evdoEcio, evdoSnr, lteSignalStrength, lteRsrp,
lteRsrq, lteRssnr, lteCqi, tdScdmaRscp, 0, true, false);
lteRsrq, lteRssnr, lteCqi, tdScdmaRscp, 99, INVALID, 0, true, false, "");
}
/**
* Constructor for only values provided by Radio HAL V1.2
*
* @hide
*/
public SignalStrength(int gsmSignalStrength, int gsmBitErrorRate,
int cdmaDbm, int cdmaEcio,
int evdoDbm, int evdoEcio, int evdoSnr,
int lteSignalStrength, int lteRsrp, int lteRsrq, int lteRssnr, int lteCqi,
int tdScdmaRscp, int wcdmaSignalStrength, int wcdmaRscp) {
this(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio,
evdoDbm, evdoEcio, evdoSnr, lteSignalStrength, lteRsrp,
lteRsrq, lteRssnr, lteCqi, tdScdmaRscp, wcdmaSignalStrength, wcdmaRscp, 0, true,
false, "");
}
/**
@@ -218,10 +262,15 @@ public class SignalStrength implements Parcelable {
mLteRssnr = s.mLteRssnr;
mLteCqi = s.mLteCqi;
mTdScdmaRscp = s.mTdScdmaRscp;
mWcdmaSignalStrength = s.mWcdmaSignalStrength;
mWcdmaRscpAsu = s.mWcdmaRscpAsu;
mWcdmaRscp = s.mWcdmaRscp;
mLteRsrpBoost = s.mLteRsrpBoost;
mIsGsm = s.mIsGsm;
mUseOnlyRsrpForLteLevel = s.mUseOnlyRsrpForLteLevel;
mWcdmaDefaultSignalMeasurement = s.mWcdmaDefaultSignalMeasurement;
setLteRsrpThresholds(s.mLteRsrpThresholds);
setWcdmaRscpThresholds(s.mWcdmaRscpThresholds);
}
/**
@@ -245,10 +294,15 @@ public class SignalStrength implements Parcelable {
mLteRssnr = in.readInt();
mLteCqi = in.readInt();
mTdScdmaRscp = in.readInt();
mWcdmaSignalStrength = in.readInt();
mWcdmaRscpAsu = in.readInt();
mWcdmaRscp = in.readInt();
mLteRsrpBoost = in.readInt();
mIsGsm = in.readBoolean();
mUseOnlyRsrpForLteLevel = in.readBoolean();
mWcdmaDefaultSignalMeasurement = in.readString();
in.readIntArray(mLteRsrpThresholds);
in.readIntArray(mWcdmaRscpThresholds);
}
/**
@@ -268,10 +322,15 @@ public class SignalStrength implements Parcelable {
out.writeInt(mLteRssnr);
out.writeInt(mLteCqi);
out.writeInt(mTdScdmaRscp);
out.writeInt(mWcdmaSignalStrength);
out.writeInt(mWcdmaRscpAsu);
out.writeInt(mWcdmaRscp);
out.writeInt(mLteRsrpBoost);
out.writeBoolean(mIsGsm);
out.writeBoolean(mUseOnlyRsrpForLteLevel);
out.writeString(mWcdmaDefaultSignalMeasurement);
out.writeIntArray(mLteRsrpThresholds);
out.writeIntArray(mWcdmaRscpThresholds);
}
/**
@@ -311,8 +370,18 @@ public class SignalStrength implements Parcelable {
if (DBG) log("Signal before validate=" + this);
// TS 27.007 8.5
mGsmSignalStrength = mGsmSignalStrength >= 0 ? mGsmSignalStrength : 99;
mWcdmaSignalStrength = (mWcdmaSignalStrength >= 0) ? mWcdmaSignalStrength : 99;
mLteSignalStrength = (mLteSignalStrength >= 0) ? mLteSignalStrength : 99;
// BER no change;
// WCDMA RSCP valid values are -120 through -24 as defined in TS 27.007 8.69
// but are reported in ASU which is 0 through 96, so we do the conversion here
mWcdmaRscpAsu =
((mWcdmaRscpAsu - 120 >= MIN_WCDMA_RSCP) && (mWcdmaRscpAsu - 120 <= MAX_WCDMA_RSCP))
? mWcdmaRscpAsu : INVALID;
mWcdmaRscp = ((mWcdmaRscp >= MIN_WCDMA_RSCP) && (mWcdmaRscp <= MAX_WCDMA_RSCP))
? mWcdmaRscp : INVALID;
mCdmaDbm = mCdmaDbm > 0 ? -mCdmaDbm : -120;
mCdmaEcio = (mCdmaEcio >= 0) ? -mCdmaEcio : -160;
@@ -321,7 +390,6 @@ public class SignalStrength implements Parcelable {
mEvdoSnr = ((mEvdoSnr >= 0) && (mEvdoSnr <= 8)) ? mEvdoSnr : -1;
// TS 36.214 Physical Layer Section 5.1.3, TS 36.331 RRC
mLteSignalStrength = (mLteSignalStrength >= 0) ? mLteSignalStrength : 99;
mLteRsrp = ((-mLteRsrp >= MIN_LTE_RSRP) && (-mLteRsrp <= MAX_LTE_RSRP)) ? -mLteRsrp
: SignalStrength.INVALID;
mLteRsrq = ((mLteRsrq >= 3) && (mLteRsrq <= 20)) ? -mLteRsrq : SignalStrength.INVALID;
@@ -366,6 +434,16 @@ public class SignalStrength implements Parcelable {
mUseOnlyRsrpForLteLevel = useOnlyRsrpForLteLevel;
}
/**
* @param defaultMeasurement sets the type of WCDMA default signal measurement
*
* Used by phone to determine default measurement type for calculation WCDMA signal level.
* @hide
*/
public void setWcdmaDefaultSignalMeasurement(String defaultMeasurement) {
mWcdmaDefaultSignalMeasurement = defaultMeasurement;
}
/**
* @param lteRsrpBoost - signal strength offset
*
@@ -409,6 +487,23 @@ public class SignalStrength implements Parcelable {
return this.mGsmBitErrorRate;
}
/**
* Sets the threshold array for determining the display level of WCDMA signal bar.
*
* @param wcdmaRscpThresholds int array for determining the display level.
*
* @hide
*/
public void setWcdmaRscpThresholds(int[] wcdmaRscpThresholds) {
if ((wcdmaRscpThresholds == null)
|| (wcdmaRscpThresholds.length != WCDMA_RSCP_THRESHOLDS_NUM)) {
Log.wtf(LOG_TAG, "setWcdmaRscpThresholds - wcdmaRscpThresholds is invalid.");
return;
}
System.arraycopy(wcdmaRscpThresholds, 0, mWcdmaRscpThresholds, 0,
WCDMA_RSCP_THRESHOLDS_NUM);
}
/**
* Get the CDMA RSSI value in dBm
*/
@@ -500,6 +595,8 @@ public class SignalStrength implements Parcelable {
asuLevel = getLteAsuLevel();
} else if (mTdScdmaRscp != SignalStrength.INVALID) {
asuLevel = getTdScdmaAsuLevel();
} else if (mWcdmaRscp != SignalStrength.INVALID) {
asuLevel = getWcdmaAsuLevel();
} else {
asuLevel = getGsmAsuLevel();
}
@@ -533,7 +630,11 @@ public class SignalStrength implements Parcelable {
dBm = getLteDbm();
if (dBm == INVALID) {
if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
dBm = getGsmDbm();
if (getWcdmaDbm() == INVALID) {
dBm = getGsmDbm();
} else {
dBm = getWcdmaDbm();
}
} else {
dBm = getTdScdmaDbm();
}
@@ -805,17 +906,21 @@ public class SignalStrength implements Parcelable {
if (rsrpIconLevel != -1) return rsrpIconLevel;
/* Valid values are (0-63, 99) as defined in TS 36.331 */
// TODO the range here is probably supposed to be (0..31, 99). It's unclear if anyone relies
// on the current incorrect range check, so this will be fixed in a future release with more
// soak time
if (mLteSignalStrength > 63) rssiIconLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
else if (mLteSignalStrength >= 12) rssiIconLevel = SIGNAL_STRENGTH_GREAT;
else if (mLteSignalStrength >= 8) rssiIconLevel = SIGNAL_STRENGTH_GOOD;
else if (mLteSignalStrength >= 5) rssiIconLevel = SIGNAL_STRENGTH_MODERATE;
else if (mLteSignalStrength >= 0) rssiIconLevel = SIGNAL_STRENGTH_POOR;
if (DBG) log("getLTELevel - rssi:" + mLteSignalStrength + " rssiIconLevel:"
if (DBG) log("getLteLevel - rssi:" + mLteSignalStrength + " rssiIconLevel:"
+ rssiIconLevel);
return rssiIconLevel;
}
/**
* Get the LTE signal level as an asu value between 0..97, 99 is unknown
* Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
@@ -908,6 +1013,105 @@ public class SignalStrength implements Parcelable {
return tdScdmaAsuLevel;
}
/**
* Gets WCDMA RSCP as a dbm value between -120 and -24, as defined in TS 27.007 8.69.
*
* @hide
*/
public int getWcdmaRscp() {
return mWcdmaRscp;
}
/**
* Get the WCDMA signal level as an ASU value between 0-96, 255 is unknown
*
* @hide
*/
public int getWcdmaAsuLevel() {
/*
* 3GPP 27.007 (Ver 10.3.0) Sec 8.69
* 0 -120 dBm or less
* 1 -119 dBm
* 2...95 -118... -25 dBm
* 96 -24 dBm or greater
* 255 not known or not detectable
*/
final int wcdmaDbm = getWcdmaDbm();
int wcdmaAsuLevel = 255;
// validateInput will always give a valid range between -120 to -24 as per ril.h. so RSCP
// outside range is already set to INVALID
if (wcdmaDbm == SignalStrength.INVALID) wcdmaAsuLevel = 255;
else wcdmaAsuLevel = wcdmaDbm + 120;
if (DBG) log("Wcdma Asu level: " + wcdmaAsuLevel);
return wcdmaAsuLevel;
}
/**
* Gets WCDMA signal strength as a dbm value between -120 and -24, as defined in TS 27.007 8.69.
*
* @hide
*/
public int getWcdmaDbm() {
return mWcdmaRscp;
}
/**
* Get WCDMA as level 0..4
*
* @hide
*/
public int getWcdmaLevel() {
int level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
if (mWcdmaDefaultSignalMeasurement == null) {
Log.wtf(LOG_TAG, "getWcdmaLevel - WCDMA default signal measurement is invalid.");
return level;
}
switch (mWcdmaDefaultSignalMeasurement) {
case MEASUMENT_TYPE_RSCP:
// RSCP valid values are (-120 through -24) as defined in TS 27.007 8.69
if (mWcdmaRscp < MIN_WCDMA_RSCP || mWcdmaRscp > MAX_WCDMA_RSCP) {
if (mWcdmaRscp != INVALID) {
Log.wtf(LOG_TAG, "getWcdmaLevel - invalid WCDMA RSCP: mWcdmaRscp="
+ mWcdmaRscp);
}
} else if (mWcdmaRscp >= mWcdmaRscpThresholds[3]) {
level = SIGNAL_STRENGTH_GREAT;
} else if (mWcdmaRscp >= mWcdmaRscpThresholds[2]) {
level = SIGNAL_STRENGTH_GOOD;
} else if (mWcdmaRscp >= mWcdmaRscpThresholds[1]) {
level = SIGNAL_STRENGTH_MODERATE;
} else if (mWcdmaRscp >= mWcdmaRscpThresholds[0]) {
level = SIGNAL_STRENGTH_POOR;
}
if (DBG) log("getWcdmaLevel=" + level + " WcdmaRscp=" + mWcdmaRscp);
break;
default:
// RSSI valid values are (0..31) as defined in TS 27.007 8.5
if (mWcdmaSignalStrength < 0 || mWcdmaSignalStrength > 31) {
if (mWcdmaSignalStrength != 99) {
Log.wtf(LOG_TAG, "getWcdmaLevel - invalid WCDMA RSSI: mWcdmaSignalStrength="
+ mWcdmaSignalStrength);
}
} else if (mWcdmaSignalStrength >= 18) {
level = SIGNAL_STRENGTH_GREAT;
} else if (mWcdmaSignalStrength >= 13) {
level = SIGNAL_STRENGTH_GOOD;
} else if (mWcdmaSignalStrength >= 8) {
level = SIGNAL_STRENGTH_MODERATE;
} else if (mWcdmaSignalStrength >= 3) {
level = SIGNAL_STRENGTH_POOR;
}
if (DBG) log("getWcdmaLevel=" + level + " WcdmaSignalStrength=" +
mWcdmaSignalStrength);
break;
}
return level;
}
/**
* @return hash code
*/
@@ -920,8 +1124,11 @@ public class SignalStrength implements Parcelable {
+ (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum)
+ (mLteSignalStrength * primeNum) + (mLteRsrp * primeNum)
+ (mLteRsrq * primeNum) + (mLteRssnr * primeNum) + (mLteCqi * primeNum)
+ (mLteRsrpBoost * primeNum) + (mTdScdmaRscp * primeNum) + (mIsGsm ? 1 : 0)
+ (mUseOnlyRsrpForLteLevel ? 1 : 0) + (Arrays.hashCode(mLteRsrpThresholds)));
+ (mLteRsrpBoost * primeNum) + (mTdScdmaRscp * primeNum)
+ (mWcdmaSignalStrength * primeNum) + (mWcdmaRscpAsu * primeNum)
+ (mWcdmaRscp * primeNum) + (mIsGsm ? 1 : 0) + (mUseOnlyRsrpForLteLevel ? 1 : 0)
+ (Objects.hashCode(mWcdmaDefaultSignalMeasurement))
+ (Arrays.hashCode(mLteRsrpThresholds)) + (Arrays.hashCode(mWcdmaRscpThresholds)));
}
/**
@@ -955,9 +1162,14 @@ public class SignalStrength implements Parcelable {
&& mLteCqi == s.mLteCqi
&& mLteRsrpBoost == s.mLteRsrpBoost
&& mTdScdmaRscp == s.mTdScdmaRscp
&& mWcdmaSignalStrength == s.mWcdmaSignalStrength
&& mWcdmaRscpAsu == s.mWcdmaRscpAsu
&& mWcdmaRscp == s.mWcdmaRscp
&& mIsGsm == s.mIsGsm
&& mUseOnlyRsrpForLteLevel == s.mUseOnlyRsrpForLteLevel
&& Arrays.equals(mLteRsrpThresholds, s.mLteRsrpThresholds));
&& Objects.equals(mWcdmaDefaultSignalMeasurement, s.mWcdmaDefaultSignalMeasurement)
&& Arrays.equals(mLteRsrpThresholds, s.mLteRsrpThresholds)
&& Arrays.equals(mWcdmaRscpThresholds, s.mWcdmaRscpThresholds));
}
/**
@@ -980,10 +1192,15 @@ public class SignalStrength implements Parcelable {
+ " " + mLteCqi
+ " " + mLteRsrpBoost
+ " " + mTdScdmaRscp
+ " " + mWcdmaSignalStrength
+ " " + mWcdmaRscpAsu
+ " " + mWcdmaRscp
+ " " + (mIsGsm ? "gsm|lte" : "cdma")
+ " " + (mUseOnlyRsrpForLteLevel ? "use_only_rsrp_for_lte_level" :
"use_rsrp_and_rssnr_for_lte_level")
+ " " + (Arrays.toString(mLteRsrpThresholds)));
+ " " + mWcdmaDefaultSignalMeasurement
+ " " + (Arrays.toString(mLteRsrpThresholds))
+ " " + (Arrays.toString(mWcdmaRscpThresholds)));
}
/** Returns the signal strength related to GSM. */
@@ -992,7 +1209,10 @@ public class SignalStrength implements Parcelable {
if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
level = getTdScdmaLevel();
if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
level = getGsmLevel();
level = getWcdmaLevel();
if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
level = getGsmLevel();
}
}
}
return level;
@@ -1037,12 +1257,20 @@ public class SignalStrength implements Parcelable {
mLteCqi = m.getInt("LteCqi");
mLteRsrpBoost = m.getInt("LteRsrpBoost");
mTdScdmaRscp = m.getInt("TdScdma");
mWcdmaSignalStrength = m.getInt("WcdmaSignalStrength");
mWcdmaRscpAsu = m.getInt("WcdmaRscpAsu");
mWcdmaRscp = m.getInt("WcdmaRscp");
mIsGsm = m.getBoolean("IsGsm");
mUseOnlyRsrpForLteLevel = m.getBoolean("UseOnlyRsrpForLteLevel");
mWcdmaDefaultSignalMeasurement = m.getString("WcdmaDefaultSignalMeasurement");
ArrayList<Integer> lteRsrpThresholds = m.getIntegerArrayList("lteRsrpThresholds");
for (int i = 0; i < lteRsrpThresholds.size(); i++) {
mLteRsrpThresholds[i] = lteRsrpThresholds.get(i);
}
ArrayList<Integer> wcdmaRscpThresholds = m.getIntegerArrayList("wcdmaRscpThresholds");
for (int i = 0; i < wcdmaRscpThresholds.size(); i++) {
mWcdmaRscpThresholds[i] = wcdmaRscpThresholds.get(i);
}
}
/**
@@ -1066,13 +1294,22 @@ public class SignalStrength implements Parcelable {
m.putInt("LteCqi", mLteCqi);
m.putInt("LteRsrpBoost", mLteRsrpBoost);
m.putInt("TdScdma", mTdScdmaRscp);
m.putInt("WcdmaSignalStrength", mWcdmaSignalStrength);
m.putInt("WcdmaRscpAsu", mWcdmaRscpAsu);
m.putInt("WcdmaRscp", mWcdmaRscp);
m.putBoolean("IsGsm", mIsGsm);
m.putBoolean("UseOnlyRsrpForLteLevel", mUseOnlyRsrpForLteLevel);
m.putString("WcdmaDefaultSignalMeasurement", mWcdmaDefaultSignalMeasurement);
ArrayList<Integer> lteRsrpThresholds = new ArrayList<Integer>();
for (int value : mLteRsrpThresholds) {
lteRsrpThresholds.add(value);
}
m.putIntegerArrayList("lteRsrpThresholds", lteRsrpThresholds);
ArrayList<Integer> wcdmaRscpThresholds = new ArrayList<Integer>();
for (int value : mWcdmaRscpThresholds) {
wcdmaRscpThresholds.add(value);
}
m.putIntegerArrayList("wcdmaRscpThresholds", wcdmaRscpThresholds);
}
/**
@@ -1085,6 +1322,16 @@ public class SignalStrength implements Parcelable {
CarrierConfigManager.KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY);
}
/**
* Gets the default threshold array for determining the display level of WCDMA signal bar.
*
* @return int array for determining the display level.
*/
private int[] getDefaultWcdmaRscpThresholds() {
return CarrierConfigManager.getDefaultConfig().getIntArray(
CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY);
}
/**
* log
*/