summaryrefslogtreecommitdiff
path: root/location/java/android
diff options
context:
space:
mode:
author Anil Admal <aadmal@google.com> 2019-04-19 17:43:00 -0700
committer Anil Admal <aadmal@google.com> 2019-04-19 18:26:46 -0700
commit3ba0fa9999fb8bfccf51242a87276cf52bfa4818 (patch)
treea5079b8a4e9b64f3aafd2af8cdf3f304592ab075 /location/java/android
parent4d39c6216906a6c653b08597924c5778921fe850 (diff)
Add separate hasCapabilityName() methods in GnssCapabilities
Fixes: 130802613 Test: Verified on a Pixel device. Change-Id: I00418f12004b28de666ec2a73203611f73af3e18
Diffstat (limited to 'location/java/android')
-rw-r--r--location/java/android/location/GnssCapabilities.java208
1 files changed, 123 insertions, 85 deletions
diff --git a/location/java/android/location/GnssCapabilities.java b/location/java/android/location/GnssCapabilities.java
index badffd171720..36fe8dab5dea 100644
--- a/location/java/android/location/GnssCapabilities.java
+++ b/location/java/android/location/GnssCapabilities.java
@@ -16,12 +16,8 @@
package android.location;
-import android.annotation.IntDef;
import android.annotation.SystemApi;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
/**
* A container of supported GNSS chipset capabilities.
*
@@ -29,53 +25,61 @@ import java.lang.annotation.RetentionPolicy;
*/
@SystemApi
public final class GnssCapabilities {
- /** The GNSS chipset supports low power mode. */
- public static final int LOW_POWER_MODE = 0;
-
- /** The GNSS chipset supports blacklisting satellites. */
- public static final int SATELLITE_BLACKLIST = 1;
-
- /** The GNSS chipset supports geofencing. */
- public static final int GEOFENCING = 2;
+ /**
+ * Bit mask indicating GNSS chipset supports low power mode.
+ * @hide
+ */
+ public static final long LOW_POWER_MODE = 1L << 0;
- /** The GNSS chipset supports measurements.*/
- public static final int MEASUREMENTS = 3;
+ /**
+ * Bit mask indicating GNSS chipset supports blacklisting satellites.
+ * @hide
+ */
+ public static final long SATELLITE_BLACKLIST = 1L << 1;
- /** The GNSS chipset supports navigation messages. */
- public static final int NAV_MESSAGES = 4;
+ /**
+ * Bit mask indicating GNSS chipset supports geofencing.
+ * @hide
+ */
+ public static final long GEOFENCING = 1L << 2;
- /** The GNSS chipset supports measurement corrections. */
- public static final int MEASUREMENT_CORRECTIONS = 5;
+ /**
+ * Bit mask indicating GNSS chipset supports measurements.
+ * @hide
+ */
+ public static final long MEASUREMENTS = 1L << 3;
- /** The GNSS chipset supports line-of-sight satellite identification measurement corrections. */
- public static final int MEASUREMENT_CORRECTIONS_LOS_SATS = 6;
+ /**
+ * Bit mask indicating GNSS chipset supports navigation messages.
+ * @hide
+ */
+ public static final long NAV_MESSAGES = 1L << 4;
- /** The GNSS chipset supports per satellite excess-path-length measurement corrections. */
- public static final int MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH = 7;
+ /**
+ * Bit mask indicating GNSS chipset supports measurement corrections.
+ * @hide
+ */
+ public static final long MEASUREMENT_CORRECTIONS = 1L << 5;
- /** The GNSS chipset supports reflecting planes measurement corrections. */
- public static final int MEASUREMENT_CORRECTIONS_REFLECTING_PLANE = 8;
+ /**
+ * Bit mask indicating GNSS chipset supports line-of-sight satellite identification
+ * measurement corrections.
+ * @hide
+ */
+ public static final long MEASUREMENT_CORRECTIONS_LOS_SATS = 1L << 6;
- private static final int MIN_CAPABILITY = 0;
- private static final int MAX_CAPABILITY = MEASUREMENT_CORRECTIONS_REFLECTING_PLANE;
+ /**
+ * Bit mask indicating GNSS chipset supports per satellite excess-path-length
+ * measurement corrections.
+ * @hide
+ */
+ public static final long MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH = 1L << 7;
/**
- * GNSS capability.
+ * Bit mask indicating GNSS chipset supports reflecting planes measurement corrections.
* @hide
*/
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({
- LOW_POWER_MODE,
- SATELLITE_BLACKLIST,
- GEOFENCING,
- MEASUREMENTS,
- NAV_MESSAGES,
- MEASUREMENT_CORRECTIONS,
- MEASUREMENT_CORRECTIONS_LOS_SATS,
- MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH,
- MEASUREMENT_CORRECTIONS_REFLECTING_PLANE
- })
- public @interface Capability {}
+ public static final long MEASUREMENT_CORRECTIONS_REFLECTING_PLANE = 1L << 8;
/** @hide */
public static final long INVALID_CAPABILITIES = -1;
@@ -93,60 +97,94 @@ public final class GnssCapabilities {
}
/**
- * Returns {@code true} if the {@code capability} is supported by the GNSS implementation.
+ * Returns {@code true} if GNSS chipset supports low power mode, {@code false} otherwise.
+ */
+ public boolean hasLowPowerMode() {
+ return hasCapability(LOW_POWER_MODE);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports blacklisting satellites, {@code false}
+ * otherwise.
*/
- public boolean hasCapability(@Capability int capability) {
- return isValidCapability(capability) && (mGnssCapabilities & (1 << capability)) != 0;
+ public boolean hasSatelliteBlacklist() {
+ return hasCapability(SATELLITE_BLACKLIST);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports geofencing, {@code false} otherwise.
+ */
+ public boolean hasGeofencing() {
+ return hasCapability(GEOFENCING);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports measurements, {@code false} otherwise.
+ */
+ public boolean hasMeasurements() {
+ return hasCapability(MEASUREMENTS);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports navigation messages, {@code false} otherwise.
+ */
+ public boolean hasNavMessages() {
+ return hasCapability(NAV_MESSAGES);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports measurement corrections, {@code false}
+ * otherwise.
+ */
+ public boolean hasMeasurementCorrections() {
+ return hasCapability(MEASUREMENT_CORRECTIONS);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports line-of-sight satellite identification
+ * measurement corrections, {@code false} otherwise.
+ */
+ public boolean hasMeasurementCorrectionsLosSats() {
+ return hasCapability(MEASUREMENT_CORRECTIONS_LOS_SATS);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports per satellite excess-path-length measurement
+ * corrections, {@code false} otherwise.
+ */
+ public boolean hasMeasurementCorrectionsExcessPathLength() {
+ return hasCapability(MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH);
+ }
+
+ /**
+ * Returns {@code true} if GNSS chipset supports reflecting planes measurement corrections,
+ * {@code false} otherwise.
+ */
+ public boolean hasMeasurementCorrectionsReflectingPane() {
+ return hasCapability(MEASUREMENT_CORRECTIONS_REFLECTING_PLANE);
}
@Override
public String toString() {
- StringBuilder sb = new StringBuilder("GnssCapabilities: (");
- int capability = 0;
- boolean addSeparator = false;
- long gnssCapabilities = mGnssCapabilities;
- while (gnssCapabilities != 0) {
- if ((gnssCapabilities & 1) != 0) {
- if (addSeparator) {
- sb.append(' ');
- } else {
- addSeparator = true;
- }
- sb.append(toStringCapability(capability));
- }
- gnssCapabilities >>= 1;
- ++capability;
+ StringBuilder sb = new StringBuilder("GnssCapabilities: ( ");
+ if (hasLowPowerMode()) sb.append("LOW_POWER_MODE ");
+ if (hasSatelliteBlacklist()) sb.append("SATELLITE_BLACKLIST ");
+ if (hasGeofencing()) sb.append("GEOFENCING ");
+ if (hasMeasurements()) sb.append("MEASUREMENTS ");
+ if (hasNavMessages()) sb.append("NAV_MESSAGES ");
+ if (hasMeasurementCorrections()) sb.append("MEASUREMENT_CORRECTIONS ");
+ if (hasMeasurementCorrectionsLosSats()) sb.append("MEASUREMENT_CORRECTIONS_LOS_SATS ");
+ if (hasMeasurementCorrectionsExcessPathLength()) {
+ sb.append("MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH ");
+ }
+ if (hasMeasurementCorrectionsReflectingPane()) {
+ sb.append("MEASUREMENT_CORRECTIONS_REFLECTING_PLANE ");
}
sb.append(")");
return sb.toString();
}
- private boolean isValidCapability(@Capability int capability) {
- return capability >= MIN_CAPABILITY && capability <= MAX_CAPABILITY;
- }
-
- private static String toStringCapability(@Capability int capability) {
- switch (capability) {
- case LOW_POWER_MODE:
- return "LOW_POWER_MODE";
- case SATELLITE_BLACKLIST:
- return "SATELLITE_BLACKLIST";
- case GEOFENCING:
- return "GEOFENCING";
- case MEASUREMENTS:
- return "MEASUREMENTS";
- case NAV_MESSAGES:
- return "NAV_MESSAGES";
- case MEASUREMENT_CORRECTIONS:
- return "MEASUREMENT_CORRECTIONS";
- case MEASUREMENT_CORRECTIONS_LOS_SATS:
- return "MEASUREMENT_CORRECTIONS_LOS_SATS";
- case MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH:
- return "MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH";
- case MEASUREMENT_CORRECTIONS_REFLECTING_PLANE:
- return "MEASUREMENT_CORRECTIONS_REFLECTING_PLANE";
- default:
- return "Unknown(" + capability + ")";
- }
+ private boolean hasCapability(long capability) {
+ return (mGnssCapabilities & capability) == capability;
}
}