Merge "Make getRssi() API for LTE Received Signal Strength Indication (RSSI)"
am: f4a1945d87
Change-Id: I92ad2362188f91ae5ee81b5c9967c9ae380cffe9
This commit is contained in:
@@ -42276,6 +42276,7 @@ package android.telephony {
|
||||
method public int getLevel();
|
||||
method public int getRsrp();
|
||||
method public int getRsrq();
|
||||
method public int getRssi();
|
||||
method public int getRssnr();
|
||||
method public int getTimingAdvance();
|
||||
method public void writeToParcel(android.os.Parcel, int);
|
||||
|
||||
@@ -31,8 +31,27 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
private static final String LOG_TAG = "CellSignalStrengthLte";
|
||||
private static final boolean DBG = false;
|
||||
|
||||
/**
|
||||
* Indicates the unknown or undetectable RSSI value in ASU.
|
||||
*
|
||||
* Reference: TS 27.007 8.5 - Signal quality +CSQ
|
||||
*/
|
||||
private static final int SIGNAL_STRENGTH_LTE_RSSI_ASU_UNKNOWN = 99;
|
||||
/**
|
||||
* Indicates the maximum valid RSSI value in ASU.
|
||||
*
|
||||
* Reference: TS 27.007 8.5 - Signal quality +CSQ
|
||||
*/
|
||||
private static final int SIGNAL_STRENGTH_LTE_RSSI_VALID_ASU_MAX_VALUE = 31;
|
||||
/**
|
||||
* Indicates the minimum valid RSSI value in ASU.
|
||||
*
|
||||
* Reference: TS 27.007 8.5 - Signal quality +CSQ
|
||||
*/
|
||||
private static final int SIGNAL_STRENGTH_LTE_RSSI_VALID_ASU_MIN_VALUE = 0;
|
||||
|
||||
@UnsupportedAppUsage
|
||||
private int mSignalStrength;
|
||||
private int mRssi;
|
||||
@UnsupportedAppUsage
|
||||
private int mRsrp;
|
||||
@UnsupportedAppUsage
|
||||
@@ -51,9 +70,9 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public CellSignalStrengthLte(int signalStrength, int rsrp, int rsrq, int rssnr, int cqi,
|
||||
public CellSignalStrengthLte(int rssi, int rsrp, int rsrq, int rssnr, int cqi,
|
||||
int timingAdvance) {
|
||||
mSignalStrength = signalStrength;
|
||||
mRssi = convertRssiAsuToDBm(rssi);
|
||||
mRsrp = rsrp;
|
||||
mRsrq = rsrq;
|
||||
mRssnr = rssnr;
|
||||
@@ -68,7 +87,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
|
||||
/** @hide */
|
||||
protected void copyFrom(CellSignalStrengthLte s) {
|
||||
mSignalStrength = s.mSignalStrength;
|
||||
mRssi = s.mRssi;
|
||||
mRsrp = s.mRsrp;
|
||||
mRsrq = s.mRsrq;
|
||||
mRssnr = s.mRssnr;
|
||||
@@ -85,7 +104,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
/** @hide */
|
||||
@Override
|
||||
public void setDefaultValues() {
|
||||
mSignalStrength = CellInfo.UNAVAILABLE;
|
||||
mRssi = CellInfo.UNAVAILABLE;
|
||||
mRsrp = CellInfo.UNAVAILABLE;
|
||||
mRsrq = CellInfo.UNAVAILABLE;
|
||||
mRssnr = CellInfo.UNAVAILABLE;
|
||||
@@ -141,6 +160,19 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
return mRsrq;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Received Signal Strength Indication (RSSI) in dBm
|
||||
*
|
||||
* The value range is [-113, -51] inclusively or {@link CellInfo#UNAVAILABLE} if unavailable.
|
||||
*
|
||||
* Reference: TS 27.007 8.5 Signal quality +CSQ
|
||||
*
|
||||
* @return the RSSI if available or {@link CellInfo#UNAVAILABLE} if unavailable.
|
||||
*/
|
||||
public int getRssi() {
|
||||
return mRssi;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get reference signal signal-to-noise ratio
|
||||
*
|
||||
@@ -210,7 +242,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mSignalStrength, mRsrp, mRsrq, mRssnr, mCqi, mTimingAdvance);
|
||||
return Objects.hash(mRssi, mRsrp, mRsrq, mRssnr, mCqi, mTimingAdvance);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -227,7 +259,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
return false;
|
||||
}
|
||||
|
||||
return mSignalStrength == s.mSignalStrength
|
||||
return mRssi == s.mRssi
|
||||
&& mRsrp == s.mRsrp
|
||||
&& mRsrq == s.mRsrq
|
||||
&& mRssnr == s.mRssnr
|
||||
@@ -241,7 +273,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CellSignalStrengthLte:"
|
||||
+ " ss=" + mSignalStrength
|
||||
+ " rssi(dBm)=" + mRssi
|
||||
+ " rsrp=" + mRsrp
|
||||
+ " rsrq=" + mRsrq
|
||||
+ " rssnr=" + mRssnr
|
||||
@@ -253,7 +285,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
if (DBG) log("writeToParcel(Parcel, int): " + toString());
|
||||
dest.writeInt(mSignalStrength);
|
||||
dest.writeInt(mRssi);
|
||||
// Need to multiply rsrp and rsrq by -1
|
||||
// to ensure consistency when reading values written here
|
||||
// unless the values are invalid
|
||||
@@ -269,7 +301,7 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
* where the token is already been processed.
|
||||
*/
|
||||
private CellSignalStrengthLte(Parcel in) {
|
||||
mSignalStrength = in.readInt();
|
||||
mRssi = convertRssiAsuToDBm(in.readInt());
|
||||
// rsrp and rsrq are written into the parcel as positive values.
|
||||
// Need to convert into negative values unless the values are invalid
|
||||
mRsrp = in.readInt();
|
||||
@@ -309,4 +341,17 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
|
||||
private static void log(String s) {
|
||||
Rlog.w(LOG_TAG, s);
|
||||
}
|
||||
|
||||
private static int convertRssiAsuToDBm(int rssiAsu) {
|
||||
if (rssiAsu != SIGNAL_STRENGTH_LTE_RSSI_ASU_UNKNOWN
|
||||
&& (rssiAsu < SIGNAL_STRENGTH_LTE_RSSI_VALID_ASU_MIN_VALUE
|
||||
|| rssiAsu > SIGNAL_STRENGTH_LTE_RSSI_VALID_ASU_MAX_VALUE)) {
|
||||
Rlog.e(LOG_TAG, "convertRssiAsuToDBm: invalid RSSI in ASU=" + rssiAsu);
|
||||
return CellInfo.UNAVAILABLE;
|
||||
}
|
||||
if (rssiAsu == SIGNAL_STRENGTH_LTE_RSSI_ASU_UNKNOWN) {
|
||||
return CellInfo.UNAVAILABLE;
|
||||
}
|
||||
return -113 + (2 * rssiAsu);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user