summaryrefslogtreecommitdiff
path: root/location/java
diff options
context:
space:
mode:
author Yu-Han Yang <yuhany@google.com> 2022-11-22 18:58:23 +0000
committer Yu-Han Yang <yuhany@google.com> 2022-12-22 00:06:12 +0000
commitdcb79a624f2ca07b70928bed9a0cdb9256492746 (patch)
tree72be8aaec22f35411e5e26a42f1dcc72c0922e72 /location/java
parentc85432c4bff78af1808e382c05929195c5bfe222 (diff)
Add hasFullTracking for backward compatibility
Also add plumbing for isFullTracking in JNI Bug: 257549183 Test: atest GnssMeasurementRegistrationTest Change-Id: I2d41b7aaaceb225c29cf282a2733ab9dfdd9d6c0
Diffstat (limited to 'location/java')
-rw-r--r--location/java/android/location/GnssMeasurementsEvent.java45
1 files changed, 38 insertions, 7 deletions
diff --git a/location/java/android/location/GnssMeasurementsEvent.java b/location/java/android/location/GnssMeasurementsEvent.java
index a8b0dc235b43..8b96974f4d2e 100644
--- a/location/java/android/location/GnssMeasurementsEvent.java
+++ b/location/java/android/location/GnssMeasurementsEvent.java
@@ -37,11 +37,14 @@ import java.util.List;
* Events are delivered to registered instances of {@link Callback}.
*/
public final class GnssMeasurementsEvent implements Parcelable {
+ private final int mFlag;
private final GnssClock mClock;
private final List<GnssMeasurement> mMeasurements;
private final List<GnssAutomaticGainControl> mGnssAgcs;
private final boolean mIsFullTracking;
+ private static final int HAS_FULL_TRACKING = 1;
+
/**
* Used for receiving GNSS satellite measurements from the GNSS engine.
* Each measurement contains raw and computed data identifying a satellite.
@@ -123,10 +126,12 @@ public final class GnssMeasurementsEvent implements Parcelable {
/**
* Create a {@link GnssMeasurementsEvent} instance with a full list of parameters.
*/
- private GnssMeasurementsEvent(@NonNull GnssClock clock,
+ private GnssMeasurementsEvent(int flag,
+ @NonNull GnssClock clock,
@NonNull List<GnssMeasurement> measurements,
@NonNull List<GnssAutomaticGainControl> agcs,
boolean isFullTracking) {
+ mFlag = flag;
mMeasurements = measurements;
mGnssAgcs = agcs;
mClock = clock;
@@ -168,22 +173,32 @@ public final class GnssMeasurementsEvent implements Parcelable {
*
* False indicates that the GNSS chipset may optimize power via duty cycling, constellations and
* frequency limits, etc.
+ *
+ * <p>The value is only available if {@link #hasFullTracking()} is {@code true}.
*/
- public boolean getIsFullTracking() {
+ public boolean isFullTracking() {
return mIsFullTracking;
}
+ /**
+ * Return {@code true} if {@link #isFullTracking()} is available, {@code false} otherwise.
+ */
+ public boolean hasFullTracking() {
+ return (mFlag & HAS_FULL_TRACKING) == HAS_FULL_TRACKING;
+ }
+
public static final @android.annotation.NonNull Creator<GnssMeasurementsEvent> CREATOR =
new Creator<GnssMeasurementsEvent>() {
@Override
public GnssMeasurementsEvent createFromParcel(Parcel in) {
+ int flag = in.readInt();
GnssClock clock = in.readParcelable(getClass().getClassLoader(),
android.location.GnssClock.class);
List<GnssMeasurement> measurements = in.createTypedArrayList(GnssMeasurement.CREATOR);
List<GnssAutomaticGainControl> agcs = in.createTypedArrayList(
GnssAutomaticGainControl.CREATOR);
boolean isFullTracking = in.readBoolean();
- return new GnssMeasurementsEvent(clock, measurements, agcs, isFullTracking);
+ return new GnssMeasurementsEvent(flag, clock, measurements, agcs, isFullTracking);
}
@Override
@@ -199,6 +214,7 @@ public final class GnssMeasurementsEvent implements Parcelable {
@Override
public void writeToParcel(Parcel parcel, int flags) {
+ parcel.writeInt(mFlag);
parcel.writeParcelable(mClock, flags);
parcel.writeTypedList(mMeasurements);
parcel.writeTypedList(mGnssAgcs);
@@ -211,13 +227,16 @@ public final class GnssMeasurementsEvent implements Parcelable {
builder.append(mClock);
builder.append(' ').append(mMeasurements.toString());
builder.append(' ').append(mGnssAgcs.toString());
- builder.append(" isFullTracking=").append(mIsFullTracking);
+ if (hasFullTracking()) {
+ builder.append(" isFullTracking=").append(mIsFullTracking);
+ }
builder.append("]");
return builder.toString();
}
/** Builder for {@link GnssMeasurementsEvent} */
public static final class Builder {
+ private int mFlag;
private GnssClock mClock;
private List<GnssMeasurement> mMeasurements;
private List<GnssAutomaticGainControl> mGnssAgcs;
@@ -237,10 +256,11 @@ public final class GnssMeasurementsEvent implements Parcelable {
* {@link GnssMeasurementsEvent}.
*/
public Builder(@NonNull GnssMeasurementsEvent event) {
+ mFlag = event.mFlag;
mClock = event.getClock();
mMeasurements = (List<GnssMeasurement>) event.getMeasurements();
mGnssAgcs = (List<GnssAutomaticGainControl>) event.getGnssAutomaticGainControls();
- mIsFullTracking = event.getIsFullTracking();
+ mIsFullTracking = event.isFullTracking();
}
/**
@@ -313,15 +333,26 @@ public final class GnssMeasurementsEvent implements Parcelable {
* and frequency limits, etc.
*/
@NonNull
- public Builder setIsFullTracking(boolean isFullTracking) {
+ public Builder setFullTracking(boolean isFullTracking) {
+ mFlag |= HAS_FULL_TRACKING;
mIsFullTracking = isFullTracking;
return this;
}
+ /**
+ * Clears the full tracking mode indicator.
+ */
+ @NonNull
+ public Builder clearFullTracking() {
+ mFlag &= ~HAS_FULL_TRACKING;
+ return this;
+ }
+
/** Builds a {@link GnssMeasurementsEvent} instance as specified by this builder. */
@NonNull
public GnssMeasurementsEvent build() {
- return new GnssMeasurementsEvent(mClock, mMeasurements, mGnssAgcs, mIsFullTracking);
+ return new GnssMeasurementsEvent(mFlag, mClock, mMeasurements, mGnssAgcs,
+ mIsFullTracking);
}
}
}