diff options
| -rw-r--r-- | core/api/current.txt | 2 | ||||
| -rw-r--r-- | location/java/android/location/GnssMeasurementsEvent.java | 50 |
2 files changed, 48 insertions, 4 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index c8241066b258..2b17e437df8c 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -19674,6 +19674,7 @@ package android.location { method public int describeContents(); method @NonNull public android.location.GnssClock getClock(); method @NonNull public java.util.Collection<android.location.GnssAutomaticGainControl> getGnssAutomaticGainControls(); + method public boolean getIsFullTracking(); method @NonNull public java.util.Collection<android.location.GnssMeasurement> getMeasurements(); method public void writeToParcel(android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurementsEvent> CREATOR; @@ -19685,6 +19686,7 @@ package android.location { method @NonNull public android.location.GnssMeasurementsEvent build(); method @NonNull public android.location.GnssMeasurementsEvent.Builder setClock(@NonNull android.location.GnssClock); method @NonNull public android.location.GnssMeasurementsEvent.Builder setGnssAutomaticGainControls(@NonNull java.util.Collection<android.location.GnssAutomaticGainControl>); + method @NonNull public android.location.GnssMeasurementsEvent.Builder setIsFullTracking(boolean); method @NonNull public android.location.GnssMeasurementsEvent.Builder setMeasurements(@NonNull java.util.Collection<android.location.GnssMeasurement>); } diff --git a/location/java/android/location/GnssMeasurementsEvent.java b/location/java/android/location/GnssMeasurementsEvent.java index 0397740d104e..a8b0dc235b43 100644 --- a/location/java/android/location/GnssMeasurementsEvent.java +++ b/location/java/android/location/GnssMeasurementsEvent.java @@ -40,6 +40,7 @@ public final class GnssMeasurementsEvent implements Parcelable { private final GnssClock mClock; private final List<GnssMeasurement> mMeasurements; private final List<GnssAutomaticGainControl> mGnssAgcs; + private final boolean mIsFullTracking; /** * Used for receiving GNSS satellite measurements from the GNSS engine. @@ -124,10 +125,12 @@ public final class GnssMeasurementsEvent implements Parcelable { */ private GnssMeasurementsEvent(@NonNull GnssClock clock, @NonNull List<GnssMeasurement> measurements, - @NonNull List<GnssAutomaticGainControl> agcs) { + @NonNull List<GnssAutomaticGainControl> agcs, + boolean isFullTracking) { mMeasurements = measurements; mGnssAgcs = agcs; mClock = clock; + mIsFullTracking = isFullTracking; } /** @@ -156,15 +159,31 @@ public final class GnssMeasurementsEvent implements Parcelable { return mGnssAgcs; } + /** + * True indicates that this event was produced while the chipset was in full tracking mode, ie, + * the GNSS chipset switched off duty cycling. In this mode, no clock discontinuities are + * expected and, when supported, carrier phase should be continuous in good signal conditions. + * All non-blocklisted, healthy constellations, satellites and frequency bands must be tracked + * and reported in this mode. + * + * False indicates that the GNSS chipset may optimize power via duty cycling, constellations and + * frequency limits, etc. + */ + public boolean getIsFullTracking() { + return mIsFullTracking; + } + public static final @android.annotation.NonNull Creator<GnssMeasurementsEvent> CREATOR = new Creator<GnssMeasurementsEvent>() { @Override public GnssMeasurementsEvent createFromParcel(Parcel in) { - GnssClock clock = in.readParcelable(getClass().getClassLoader(), android.location.GnssClock.class); + GnssClock clock = in.readParcelable(getClass().getClassLoader(), + android.location.GnssClock.class); List<GnssMeasurement> measurements = in.createTypedArrayList(GnssMeasurement.CREATOR); List<GnssAutomaticGainControl> agcs = in.createTypedArrayList( GnssAutomaticGainControl.CREATOR); - return new GnssMeasurementsEvent(clock, measurements, agcs); + boolean isFullTracking = in.readBoolean(); + return new GnssMeasurementsEvent(clock, measurements, agcs, isFullTracking); } @Override @@ -183,6 +202,7 @@ public final class GnssMeasurementsEvent implements Parcelable { parcel.writeParcelable(mClock, flags); parcel.writeTypedList(mMeasurements); parcel.writeTypedList(mGnssAgcs); + parcel.writeBoolean(mIsFullTracking); } @Override @@ -191,6 +211,7 @@ public final class GnssMeasurementsEvent implements Parcelable { builder.append(mClock); builder.append(' ').append(mMeasurements.toString()); builder.append(' ').append(mGnssAgcs.toString()); + builder.append(" isFullTracking=").append(mIsFullTracking); builder.append("]"); return builder.toString(); } @@ -200,6 +221,7 @@ public final class GnssMeasurementsEvent implements Parcelable { private GnssClock mClock; private List<GnssMeasurement> mMeasurements; private List<GnssAutomaticGainControl> mGnssAgcs; + private boolean mIsFullTracking; /** * Constructs a {@link GnssMeasurementsEvent.Builder} instance. @@ -218,6 +240,7 @@ public final class GnssMeasurementsEvent implements Parcelable { mClock = event.getClock(); mMeasurements = (List<GnssMeasurement>) event.getMeasurements(); mGnssAgcs = (List<GnssAutomaticGainControl>) event.getGnssAutomaticGainControls(); + mIsFullTracking = event.getIsFullTracking(); } /** @@ -276,10 +299,29 @@ public final class GnssMeasurementsEvent implements Parcelable { return this; } + /** + * Sets whether the GNSS chipset was in the full tracking mode at the time this event was + * produced. + * + * True indicates that this event was produced while the chipset was in full tracking + * mode, ie, the GNSS chipset switched off duty cycling. In this mode, no clock + * discontinuities are expected and, when supported, carrier phase should be continuous in + * good signal conditions. All non-blocklisted, healthy constellations, satellites and + * frequency bands must be tracked and reported in this mode. + * + * False indicates that the GNSS chipset may optimize power via duty cycling, constellations + * and frequency limits, etc. + */ + @NonNull + public Builder setIsFullTracking(boolean isFullTracking) { + mIsFullTracking = isFullTracking; + return this; + } + /** Builds a {@link GnssMeasurementsEvent} instance as specified by this builder. */ @NonNull public GnssMeasurementsEvent build() { - return new GnssMeasurementsEvent(mClock, mMeasurements, mGnssAgcs); + return new GnssMeasurementsEvent(mClock, mMeasurements, mGnssAgcs, mIsFullTracking); } } } |