Add getTimingAdvance API to NR signal strength

Test: atest CTS and unit tests
Bug: 141097448
Change-Id: I893bb7bff8582c23e5e0e7e9e3235e62eae5a94c
This commit is contained in:
Sarah Chin
2022-11-17 12:34:17 -08:00
parent 2fdc392282
commit 34d8353a69
2 changed files with 38 additions and 4 deletions

View File

@@ -42813,6 +42813,7 @@ package android.telephony {
method public int getSsRsrp();
method public int getSsRsrq();
method public int getSsSinr();
method @IntRange(from=0, to=1282) public int getTimingAdvanceMicros();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthNr> CREATOR;
}

View File

@@ -155,6 +155,16 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
*/
private int mParametersUseForLevel;
/**
* Timing advance value for a one way trip from cell to device in microseconds.
* Approximate distance is calculated using 300m/us * timingAdvance.
*
* Reference: 3GPP TS 36.213 section 4.2.3.
*
* Range: [0, 1282]
*/
private int mTimingAdvance;
/** @hide */
public CellSignalStrengthNr() {
setDefaultValues();
@@ -169,10 +179,11 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
* @param ssRsrp SS reference signal received power.
* @param ssRsrq SS reference signal received quality.
* @param ssSinr SS signal-to-noise and interference ratio.
* @param timingAdvance Timing advance.
* @hide
*/
public CellSignalStrengthNr(int csiRsrp, int csiRsrq, int csiSinr, int csiCqiTableIndex,
List<Byte> csiCqiReport, int ssRsrp, int ssRsrq, int ssSinr) {
List<Byte> csiCqiReport, int ssRsrp, int ssRsrq, int ssSinr, int timingAdvance) {
mCsiRsrp = inRangeOrUnavailable(csiRsrp, -156, -31);
mCsiRsrq = inRangeOrUnavailable(csiRsrq, -20, -3);
mCsiSinr = inRangeOrUnavailable(csiSinr, -23, 23);
@@ -183,6 +194,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
mSsRsrp = inRangeOrUnavailable(ssRsrp, -156, -31);
mSsRsrq = inRangeOrUnavailable(ssRsrq, -43, 20);
mSsSinr = inRangeOrUnavailable(ssSinr, -23, 40);
mTimingAdvance = inRangeOrUnavailable(timingAdvance, 0, 1282);
updateLevel(null, null);
}
@@ -198,7 +210,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
public CellSignalStrengthNr(
int csiRsrp, int csiRsrq, int csiSinr, int ssRsrp, int ssRsrq, int ssSinr) {
this(csiRsrp, csiRsrq, csiSinr, CellInfo.UNAVAILABLE, Collections.emptyList(),
ssRsrp, ssRsrq, ssSinr);
ssRsrp, ssRsrq, ssSinr, CellInfo.UNAVAILABLE);
}
/**
@@ -302,6 +314,22 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
return mCsiCqiReport;
}
/**
* Get the timing advance value for a one way trip from cell to device for NR in microseconds.
* {@link android.telephony.CellInfo#UNAVAILABLE} is reported when there is no
* active RRC connection.
*
* Reference: 3GPP TS 36.213 section 4.2.3.
* Range: 0 us to 1282 us.
*
* @return the NR timing advance if available or
* {@link android.telephony.CellInfo#UNAVAILABLE} if unavailable.
*/
@IntRange(from = 0, to = 1282)
public int getTimingAdvanceMicros() {
return mTimingAdvance;
}
@Override
public int describeContents() {
return 0;
@@ -319,6 +347,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
dest.writeInt(mSsRsrq);
dest.writeInt(mSsSinr);
dest.writeInt(mLevel);
dest.writeInt(mTimingAdvance);
}
private CellSignalStrengthNr(Parcel in) {
@@ -331,6 +360,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
mSsRsrq = in.readInt();
mSsSinr = in.readInt();
mLevel = in.readInt();
mTimingAdvance = in.readInt();
}
/** @hide */
@@ -346,6 +376,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
mSsSinr = CellInfo.UNAVAILABLE;
mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
mParametersUseForLevel = USE_SSRSRP;
mTimingAdvance = CellInfo.UNAVAILABLE;
}
/** {@inheritDoc} */
@@ -495,6 +526,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
mSsSinr = s.mSsSinr;
mLevel = s.mLevel;
mParametersUseForLevel = s.mParametersUseForLevel;
mTimingAdvance = s.mTimingAdvance;
}
/** @hide */
@@ -506,7 +538,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
@Override
public int hashCode() {
return Objects.hash(mCsiRsrp, mCsiRsrq, mCsiSinr, mCsiCqiTableIndex,
mCsiCqiReport, mSsRsrp, mSsRsrq, mSsSinr, mLevel);
mCsiCqiReport, mSsRsrp, mSsRsrq, mSsSinr, mLevel, mTimingAdvance);
}
private static final CellSignalStrengthNr sInvalid = new CellSignalStrengthNr();
@@ -525,7 +557,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
&& mCsiCqiTableIndex == o.mCsiCqiTableIndex
&& mCsiCqiReport.equals(o.mCsiCqiReport)
&& mSsRsrp == o.mSsRsrp && mSsRsrq == o.mSsRsrq && mSsSinr == o.mSsSinr
&& mLevel == o.mLevel;
&& mLevel == o.mLevel && mTimingAdvance == o.mTimingAdvance;
}
return false;
}
@@ -543,6 +575,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
.append(" ssSinr = " + mSsSinr)
.append(" level = " + mLevel)
.append(" parametersUseForLevel = " + mParametersUseForLevel)
.append(" timingAdvance = " + mTimingAdvance)
.append(" }")
.toString();
}