summaryrefslogtreecommitdiff
path: root/location
diff options
context:
space:
mode:
author Yu-Han Yang <yuhany@google.com> 2023-01-30 17:18:13 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-01-30 17:18:13 +0000
commit62940e47a3bee8b0e91ccc8ae497ddd58d443e86 (patch)
treee2ec0deac050aa0757ed1083269390eb43a3741e /location
parentaa7d3f23e1ee75e829ffc003a326afcaedcf5230 (diff)
parent17d08b8f02ac43566ed8ea11b2f285c572f135d7 (diff)
Merge "Add isAccumulatedDeltaRangeCapabilityKnown for backward compatibility (frameworks/base)"
Diffstat (limited to 'location')
-rw-r--r--location/java/android/location/GnssCapabilities.java70
1 files changed, 54 insertions, 16 deletions
diff --git a/location/java/android/location/GnssCapabilities.java b/location/java/android/location/GnssCapabilities.java
index 11b5833e35b3..c6f32c2cd387 100644
--- a/location/java/android/location/GnssCapabilities.java
+++ b/location/java/android/location/GnssCapabilities.java
@@ -129,21 +129,26 @@ public final class GnssCapabilities implements Parcelable {
* @hide
*/
public static GnssCapabilities empty() {
- return new GnssCapabilities(0, 0, 0, Collections.emptyList());
+ return new GnssCapabilities(/*topFlags=*/ 0, /*isAdrCapabilityKnown=*/ false,
+ /*measurementCorrectionsFlags=*/ 0, /*powerFlags=*/ 0, /*gnssSignalTypes=*/
+ Collections.emptyList());
}
private final @TopHalCapabilityFlags int mTopFlags;
+ private final boolean mIsAdrCapabilityKnown;
private final @SubHalMeasurementCorrectionsCapabilityFlags int mMeasurementCorrectionsFlags;
private final @SubHalPowerCapabilityFlags int mPowerFlags;
private final @NonNull List<GnssSignalType> mGnssSignalTypes;
private GnssCapabilities(
@TopHalCapabilityFlags int topFlags,
+ boolean isAdrCapabilityKnown,
@SubHalMeasurementCorrectionsCapabilityFlags int measurementCorrectionsFlags,
@SubHalPowerCapabilityFlags int powerFlags,
@NonNull List<GnssSignalType> gnssSignalTypes) {
Objects.requireNonNull(gnssSignalTypes);
mTopFlags = topFlags;
+ mIsAdrCapabilityKnown = isAdrCapabilityKnown;
mMeasurementCorrectionsFlags = measurementCorrectionsFlags;
mPowerFlags = powerFlags;
mGnssSignalTypes = Collections.unmodifiableList(gnssSignalTypes);
@@ -154,12 +159,13 @@ public final class GnssCapabilities implements Parcelable {
*
* @hide
*/
- public GnssCapabilities withTopHalFlags(@TopHalCapabilityFlags int flags) {
- if (mTopFlags == flags) {
+ public GnssCapabilities withTopHalFlags(@TopHalCapabilityFlags int flags,
+ boolean isAdrCapabilityKnown) {
+ if (mTopFlags == flags && mIsAdrCapabilityKnown == isAdrCapabilityKnown) {
return this;
} else {
- return new GnssCapabilities(flags, mMeasurementCorrectionsFlags, mPowerFlags,
- mGnssSignalTypes);
+ return new GnssCapabilities(flags, isAdrCapabilityKnown,
+ mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes);
}
}
@@ -174,7 +180,7 @@ public final class GnssCapabilities implements Parcelable {
if (mMeasurementCorrectionsFlags == flags) {
return this;
} else {
- return new GnssCapabilities(mTopFlags, flags, mPowerFlags,
+ return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, flags, mPowerFlags,
mGnssSignalTypes);
}
}
@@ -189,8 +195,8 @@ public final class GnssCapabilities implements Parcelable {
if (mPowerFlags == flags) {
return this;
} else {
- return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, flags,
- mGnssSignalTypes);
+ return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown,
+ mMeasurementCorrectionsFlags, flags, mGnssSignalTypes);
}
}
@@ -204,8 +210,8 @@ public final class GnssCapabilities implements Parcelable {
if (mGnssSignalTypes.equals(gnssSignalTypes)) {
return this;
} else {
- return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags,
- new ArrayList<>(gnssSignalTypes));
+ return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown,
+ mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(gnssSignalTypes));
}
}
@@ -372,16 +378,30 @@ public final class GnssCapabilities implements Parcelable {
* Returns {@code true} if GNSS chipset supports accumulated delta range, {@code false}
* otherwise.
*
+ * <p>The value is only known if {@link #isAccumulatedDeltaRangeCapabilityKnown()} is
+ * true.
+ *
* <p>The accumulated delta range information can be queried in
* {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeState()},
* {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeMeters()}, and
* {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeUncertaintyMeters()}.
*/
public boolean hasAccumulatedDeltaRange() {
+ if (!mIsAdrCapabilityKnown) {
+ throw new IllegalStateException("Accumulated delta range capability is unknown.");
+ }
return (mTopFlags & TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE) != 0;
}
/**
+ * Returns {@code true} if {@link #hasAccumulatedDeltaRange()} is known, {@code false}
+ * otherwise.
+ */
+ public boolean isAccumulatedDeltaRangeCapabilityKnown() {
+ return mIsAdrCapabilityKnown;
+ }
+
+ /**
* Returns {@code true} if GNSS chipset supports line-of-sight satellite identification
* measurement corrections, {@code false} otherwise.
*/
@@ -488,6 +508,7 @@ public final class GnssCapabilities implements Parcelable {
GnssCapabilities that = (GnssCapabilities) o;
return mTopFlags == that.mTopFlags
+ && mIsAdrCapabilityKnown == that.mIsAdrCapabilityKnown
&& mMeasurementCorrectionsFlags == that.mMeasurementCorrectionsFlags
&& mPowerFlags == that.mPowerFlags
&& mGnssSignalTypes.equals(that.mGnssSignalTypes);
@@ -495,15 +516,16 @@ public final class GnssCapabilities implements Parcelable {
@Override
public int hashCode() {
- return Objects.hash(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes);
+ return Objects.hash(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags,
+ mPowerFlags, mGnssSignalTypes);
}
public static final @NonNull Creator<GnssCapabilities> CREATOR =
new Creator<GnssCapabilities>() {
@Override
public GnssCapabilities createFromParcel(Parcel in) {
- return new GnssCapabilities(in.readInt(), in.readInt(), in.readInt(),
- in.createTypedArrayList(GnssSignalType.CREATOR));
+ return new GnssCapabilities(in.readInt(), in.readBoolean(), in.readInt(),
+ in.readInt(), in.createTypedArrayList(GnssSignalType.CREATOR));
}
@Override
@@ -520,6 +542,7 @@ public final class GnssCapabilities implements Parcelable {
@Override
public void writeToParcel(@NonNull Parcel parcel, int flags) {
parcel.writeInt(mTopFlags);
+ parcel.writeBoolean(mIsAdrCapabilityKnown);
parcel.writeInt(mMeasurementCorrectionsFlags);
parcel.writeInt(mPowerFlags);
parcel.writeTypedList(mGnssSignalTypes);
@@ -574,8 +597,10 @@ public final class GnssCapabilities implements Parcelable {
if (hasMeasurementCorrectionsForDriving()) {
builder.append("MEASUREMENT_CORRECTIONS_FOR_DRIVING ");
}
- if (hasAccumulatedDeltaRange()) {
+ if (mIsAdrCapabilityKnown && hasAccumulatedDeltaRange()) {
builder.append("ACCUMULATED_DELTA_RANGE ");
+ } else if (!mIsAdrCapabilityKnown) {
+ builder.append("ACCUMULATED_DELTA_RANGE(unknown) ");
}
if (hasMeasurementCorrectionsLosSats()) {
builder.append("LOS_SATS ");
@@ -622,12 +647,14 @@ public final class GnssCapabilities implements Parcelable {
public static final class Builder {
private @TopHalCapabilityFlags int mTopFlags;
+ private boolean mIsAdrCapabilityKnown;
private @SubHalMeasurementCorrectionsCapabilityFlags int mMeasurementCorrectionsFlags;
private @SubHalPowerCapabilityFlags int mPowerFlags;
private @NonNull List<GnssSignalType> mGnssSignalTypes;
public Builder() {
mTopFlags = 0;
+ mIsAdrCapabilityKnown = false;
mMeasurementCorrectionsFlags = 0;
mPowerFlags = 0;
mGnssSignalTypes = Collections.emptyList();
@@ -635,6 +662,7 @@ public final class GnssCapabilities implements Parcelable {
public Builder(@NonNull GnssCapabilities capabilities) {
mTopFlags = capabilities.mTopFlags;
+ mIsAdrCapabilityKnown = capabilities.mIsAdrCapabilityKnown;
mMeasurementCorrectionsFlags = capabilities.mMeasurementCorrectionsFlags;
mPowerFlags = capabilities.mPowerFlags;
mGnssSignalTypes = capabilities.mGnssSignalTypes;
@@ -768,12 +796,22 @@ public final class GnssCapabilities implements Parcelable {
* Sets accumulated delta range capability.
*/
public @NonNull Builder setHasAccumulatedDeltaRange(boolean capable) {
+ mIsAdrCapabilityKnown = true;
mTopFlags = setFlag(mTopFlags, TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE,
capable);
return this;
}
/**
+ * Clears accumulated delta range capability and sets it as unknown.
+ */
+ public @NonNull Builder clearIsAccumulatedDeltaRangeCapabilityKnown() {
+ mIsAdrCapabilityKnown = false;
+ mTopFlags = setFlag(mTopFlags, TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE, false);
+ return this;
+ }
+
+ /**
* Sets measurement corrections line-of-sight satellites capability.
*/
public @NonNull Builder setHasMeasurementCorrectionsLosSats(boolean capable) {
@@ -864,8 +902,8 @@ public final class GnssCapabilities implements Parcelable {
* Builds a new GnssCapabilities.
*/
public @NonNull GnssCapabilities build() {
- return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags,
- new ArrayList<>(mGnssSignalTypes));
+ return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown,
+ mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(mGnssSignalTypes));
}
private static int setFlag(int value, int flag, boolean set) {