From 3ba0fa9999fb8bfccf51242a87276cf52bfa4818 Mon Sep 17 00:00:00 2001 From: Anil Admal Date: Fri, 19 Apr 2019 17:43:00 -0700 Subject: Add separate hasCapabilityName() methods in GnssCapabilities Fixes: 130802613 Test: Verified on a Pixel device. Change-Id: I00418f12004b28de666ec2a73203611f73af3e18 --- .../java/android/location/GnssCapabilities.java | 208 ++++++++++++--------- 1 file changed, 123 insertions(+), 85 deletions(-) (limited to 'location/java/android') 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; } } -- cgit v1.2.3-59-g8ed1b