summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/current.txt1
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthNr.java41
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();
}