Telephony: Add TD-SCDMA SignalStrength
Bug: 22639018 Change-Id: I0381e18fb65807c88290df1f2333b2636f0b0c18
This commit is contained in:
committed by
Amit Mahajan
parent
144c4ff08a
commit
369808638b
@@ -731,6 +731,9 @@ public class ServiceState implements Parcelable {
|
||||
case RIL_RADIO_TECHNOLOGY_IWLAN:
|
||||
rtString = "IWLAN";
|
||||
break;
|
||||
case RIL_RADIO_TECHNOLOGY_TD_SCDMA:
|
||||
rtString = "TD-SCDMA";
|
||||
break;
|
||||
default:
|
||||
rtString = "Unexpected";
|
||||
Rlog.w(LOG_TAG, "Unexpected radioTechnology=" + rt);
|
||||
@@ -1068,6 +1071,8 @@ public class ServiceState implements Parcelable {
|
||||
return TelephonyManager.NETWORK_TYPE_HSPAP;
|
||||
case ServiceState.RIL_RADIO_TECHNOLOGY_GSM:
|
||||
return TelephonyManager.NETWORK_TYPE_GSM;
|
||||
case ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA:
|
||||
return TelephonyManager.NETWORK_TYPE_TD_SCDMA;
|
||||
case ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN:
|
||||
return TelephonyManager.NETWORK_TYPE_IWLAN;
|
||||
default:
|
||||
|
||||
@@ -68,6 +68,7 @@ public class SignalStrength implements Parcelable {
|
||||
private int mLteRsrq;
|
||||
private int mLteRssnr;
|
||||
private int mLteCqi;
|
||||
private int mTdScdmaRscp;
|
||||
|
||||
private boolean isGsm; // This value is set by the ServiceStateTracker onSignalStrengthResult
|
||||
|
||||
@@ -107,6 +108,7 @@ public class SignalStrength implements Parcelable {
|
||||
mLteRsrq = INVALID;
|
||||
mLteRssnr = INVALID;
|
||||
mLteCqi = INVALID;
|
||||
mTdScdmaRscp = INVALID;
|
||||
isGsm = true;
|
||||
}
|
||||
|
||||
@@ -131,9 +133,26 @@ public class SignalStrength implements Parcelable {
|
||||
mLteRsrq = INVALID;
|
||||
mLteRssnr = INVALID;
|
||||
mLteCqi = INVALID;
|
||||
mTdScdmaRscp = INVALID;
|
||||
isGsm = gsmFlag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @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, boolean gsmFlag) {
|
||||
initialize(gsmSignalStrength, gsmBitErrorRate, cdmaDbm, cdmaEcio,
|
||||
evdoDbm, evdoEcio, evdoSnr, lteSignalStrength, lteRsrp,
|
||||
lteRsrq, lteRssnr, lteCqi, gsmFlag);
|
||||
mTdScdmaRscp = tdScdmaRscp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
@@ -233,6 +252,7 @@ public class SignalStrength implements Parcelable {
|
||||
mLteRsrq = lteRsrq;
|
||||
mLteRssnr = lteRssnr;
|
||||
mLteCqi = lteCqi;
|
||||
mTdScdmaRscp = INVALID;
|
||||
isGsm = gsm;
|
||||
if (DBG) log("initialize: " + toString());
|
||||
}
|
||||
@@ -253,6 +273,7 @@ public class SignalStrength implements Parcelable {
|
||||
mLteRsrq = s.mLteRsrq;
|
||||
mLteRssnr = s.mLteRssnr;
|
||||
mLteCqi = s.mLteCqi;
|
||||
mTdScdmaRscp = s.mTdScdmaRscp;
|
||||
isGsm = s.isGsm;
|
||||
}
|
||||
|
||||
@@ -276,6 +297,7 @@ public class SignalStrength implements Parcelable {
|
||||
mLteRsrq = in.readInt();
|
||||
mLteRssnr = in.readInt();
|
||||
mLteCqi = in.readInt();
|
||||
mTdScdmaRscp = in.readInt();
|
||||
isGsm = (in.readInt() != 0);
|
||||
}
|
||||
|
||||
@@ -302,7 +324,7 @@ public class SignalStrength implements Parcelable {
|
||||
ss.mLteRsrq = in.readInt();
|
||||
ss.mLteRssnr = in.readInt();
|
||||
ss.mLteCqi = in.readInt();
|
||||
|
||||
ss.mTdScdmaRscp = in.readInt();
|
||||
return ss;
|
||||
}
|
||||
|
||||
@@ -322,6 +344,7 @@ public class SignalStrength implements Parcelable {
|
||||
out.writeInt(mLteRsrq);
|
||||
out.writeInt(mLteRssnr);
|
||||
out.writeInt(mLteCqi);
|
||||
out.writeInt(mTdScdmaRscp);
|
||||
out.writeInt(isGsm ? 1 : 0);
|
||||
}
|
||||
|
||||
@@ -377,6 +400,9 @@ public class SignalStrength implements Parcelable {
|
||||
mLteRsrq = ((mLteRsrq >= 3) && (mLteRsrq <= 20)) ? -mLteRsrq : SignalStrength.INVALID;
|
||||
mLteRssnr = ((mLteRssnr >= -200) && (mLteRssnr <= 300)) ? mLteRssnr
|
||||
: SignalStrength.INVALID;
|
||||
|
||||
mTdScdmaRscp = ((mTdScdmaRscp >= 25) && (mTdScdmaRscp <= 120))
|
||||
? -mTdScdmaRscp : SignalStrength.INVALID;
|
||||
// Cqi no change
|
||||
if (DBG) log("Signal after validate=" + this);
|
||||
}
|
||||
@@ -477,12 +503,15 @@ public class SignalStrength implements Parcelable {
|
||||
* while 4 represents a very strong signal strength.
|
||||
*/
|
||||
public int getLevel() {
|
||||
int level;
|
||||
int level = 0;
|
||||
|
||||
if (isGsm) {
|
||||
level = getLteLevel();
|
||||
if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
|
||||
level = getGsmLevel();
|
||||
level = getTdScdmaLevel();
|
||||
if (level == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
|
||||
level = getGsmLevel();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int cdmaLevel = getCdmaLevel();
|
||||
@@ -508,10 +537,14 @@ public class SignalStrength implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public int getAsuLevel() {
|
||||
int asuLevel;
|
||||
int asuLevel = 0;
|
||||
if (isGsm) {
|
||||
if (getLteLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
|
||||
asuLevel = getGsmAsuLevel();
|
||||
if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
|
||||
asuLevel = getGsmAsuLevel();
|
||||
} else {
|
||||
asuLevel = getTdScdmaAsuLevel();
|
||||
}
|
||||
} else {
|
||||
asuLevel = getLteAsuLevel();
|
||||
}
|
||||
@@ -539,12 +572,16 @@ public class SignalStrength implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public int getDbm() {
|
||||
int dBm;
|
||||
int dBm = INVALID;
|
||||
|
||||
if(isGsm()) {
|
||||
dBm = getLteDbm();
|
||||
if (dBm == INVALID) {
|
||||
dBm = getGsmDbm();
|
||||
if (getTdScdmaLevel() == SIGNAL_STRENGTH_NONE_OR_UNKNOWN) {
|
||||
dBm = getGsmDbm();
|
||||
} else {
|
||||
dBm = getTdScdmaDbm();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int cdmaDbm = getCdmaDbm();
|
||||
@@ -849,6 +886,54 @@ public class SignalStrength implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return get TD_SCDMA dbm
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public int getTdScdmaDbm() {
|
||||
return this.mTdScdmaRscp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get TD-SCDMA as level 0..4
|
||||
* Range : 25 to 120
|
||||
* INT_MAX: 0x7FFFFFFF denotes invalid value
|
||||
* Reference: 3GPP TS 25.123, section 9.1.1.1
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public int getTdScdmaLevel() {
|
||||
final int tdScdmaDbm = getTdScdmaDbm();
|
||||
int level;
|
||||
|
||||
if ((tdScdmaDbm > -25) || (tdScdmaDbm == SignalStrength.INVALID))
|
||||
level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
|
||||
else if (tdScdmaDbm >= -49) level = SIGNAL_STRENGTH_GREAT;
|
||||
else if (tdScdmaDbm >= -73) level = SIGNAL_STRENGTH_GOOD;
|
||||
else if (tdScdmaDbm >= -97) level = SIGNAL_STRENGTH_MODERATE;
|
||||
else if (tdScdmaDbm >= -120) level = SIGNAL_STRENGTH_POOR;
|
||||
else level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
|
||||
|
||||
if (DBG) log("getTdScdmaLevel = " + level);
|
||||
return level;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the TD-SCDMA signal level as an asu value.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public int getTdScdmaAsuLevel() {
|
||||
final int tdScdmaDbm = getTdScdmaDbm();
|
||||
int tdScdmaAsuLevel;
|
||||
|
||||
if (tdScdmaDbm == INVALID) tdScdmaAsuLevel = 255;
|
||||
else tdScdmaAsuLevel = tdScdmaDbm + 120;
|
||||
if (DBG) log("TD-SCDMA Asu level: " + tdScdmaAsuLevel);
|
||||
return tdScdmaAsuLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return hash code
|
||||
*/
|
||||
@Override
|
||||
@@ -860,7 +945,7 @@ public class SignalStrength implements Parcelable {
|
||||
+ (mEvdoDbm * primeNum) + (mEvdoEcio * primeNum) + (mEvdoSnr * primeNum)
|
||||
+ (mLteSignalStrength * primeNum) + (mLteRsrp * primeNum)
|
||||
+ (mLteRsrq * primeNum) + (mLteRssnr * primeNum) + (mLteCqi * primeNum)
|
||||
+ (isGsm ? 1 : 0));
|
||||
+ (mTdScdmaRscp * primeNum) + (isGsm ? 1 : 0));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -892,6 +977,7 @@ public class SignalStrength implements Parcelable {
|
||||
&& mLteRsrq == s.mLteRsrq
|
||||
&& mLteRssnr == s.mLteRssnr
|
||||
&& mLteCqi == s.mLteCqi
|
||||
&& mTdScdmaRscp == s.mTdScdmaRscp
|
||||
&& isGsm == s.isGsm);
|
||||
}
|
||||
|
||||
@@ -913,6 +999,7 @@ public class SignalStrength implements Parcelable {
|
||||
+ " " + mLteRsrq
|
||||
+ " " + mLteRssnr
|
||||
+ " " + mLteCqi
|
||||
+ " " + mTdScdmaRscp
|
||||
+ " " + (isGsm ? "gsm|lte" : "cdma"));
|
||||
}
|
||||
|
||||
@@ -935,6 +1022,7 @@ public class SignalStrength implements Parcelable {
|
||||
mLteRsrq = m.getInt("LteRsrq");
|
||||
mLteRssnr = m.getInt("LteRssnr");
|
||||
mLteCqi = m.getInt("LteCqi");
|
||||
mTdScdmaRscp = m.getInt("TdScdma");
|
||||
isGsm = m.getBoolean("isGsm");
|
||||
}
|
||||
|
||||
@@ -957,6 +1045,7 @@ public class SignalStrength implements Parcelable {
|
||||
m.putInt("LteRsrq", mLteRsrq);
|
||||
m.putInt("LteRssnr", mLteRssnr);
|
||||
m.putInt("LteCqi", mLteCqi);
|
||||
m.putInt("TdScdma", mTdScdmaRscp);
|
||||
m.putBoolean("isGsm", Boolean.valueOf(isGsm));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user