Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34d8353a authored by Sarah Chin's avatar Sarah Chin
Browse files

Add getTimingAdvance API to NR signal strength

Test: atest CTS and unit tests
Bug: 141097448
Change-Id: I893bb7bff8582c23e5e0e7e9e3235e62eae5a94c
parent 2fdc3922
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
  }
+37 −4
Original line number Diff line number Diff line
@@ -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();
    }