diff options
| -rw-r--r-- | core/api/current.txt | 1 | ||||
| -rw-r--r-- | telephony/java/android/telephony/CellSignalStrengthNr.java | 41 |
2 files changed, 38 insertions, 4 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 2a958933713c..84b635ae78c0 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -42834,6 +42834,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; } diff --git a/telephony/java/android/telephony/CellSignalStrengthNr.java b/telephony/java/android/telephony/CellSignalStrengthNr.java index 297940e9c8c6..03519a364a36 100644 --- a/telephony/java/android/telephony/CellSignalStrengthNr.java +++ b/telephony/java/android/telephony/CellSignalStrengthNr.java @@ -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(); } |