To prepare for enabling MissingNullability Metalava check this CL works on adding missing nullability issues that metalava flags if we tell it to flag new things since API 29. This is not a complete CL, mostly addresses public api and toString/equals for @SystemApi Exempt-From-Owner-Approval: Large scale nullability clean up Bug: 124515653 Test: make -j checkapi Merged-In: I109260842cfc25f06e40694997fcbb4afa02c867 Change-Id: I109260842cfc25f06e40694997fcbb4afa02c867
193 lines
6.2 KiB
Java
193 lines
6.2 KiB
Java
/*
|
|
* Copyright (C) 2019 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.location;
|
|
|
|
import android.annotation.NonNull;
|
|
import android.annotation.SystemApi;
|
|
|
|
/**
|
|
* A container of supported GNSS chipset capabilities.
|
|
*
|
|
* @hide
|
|
*/
|
|
@SystemApi
|
|
public final class GnssCapabilities {
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports low power mode.
|
|
* @hide
|
|
*/
|
|
public static final long LOW_POWER_MODE = 1L << 0;
|
|
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports blacklisting satellites.
|
|
* @hide
|
|
*/
|
|
public static final long SATELLITE_BLACKLIST = 1L << 1;
|
|
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports geofencing.
|
|
* @hide
|
|
*/
|
|
public static final long GEOFENCING = 1L << 2;
|
|
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports measurements.
|
|
* @hide
|
|
*/
|
|
public static final long MEASUREMENTS = 1L << 3;
|
|
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports navigation messages.
|
|
* @hide
|
|
*/
|
|
public static final long NAV_MESSAGES = 1L << 4;
|
|
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports measurement corrections.
|
|
* @hide
|
|
*/
|
|
public static final long MEASUREMENT_CORRECTIONS = 1L << 5;
|
|
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports line-of-sight satellite identification
|
|
* measurement corrections.
|
|
* @hide
|
|
*/
|
|
public static final long MEASUREMENT_CORRECTIONS_LOS_SATS = 1L << 6;
|
|
|
|
/**
|
|
* 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;
|
|
|
|
/**
|
|
* Bit mask indicating GNSS chipset supports reflecting planes measurement corrections.
|
|
* @hide
|
|
*/
|
|
public static final long MEASUREMENT_CORRECTIONS_REFLECTING_PLANE = 1L << 8;
|
|
|
|
/** @hide */
|
|
public static final long INVALID_CAPABILITIES = -1;
|
|
|
|
/** A bitmask of supported GNSS capabilities. */
|
|
private final long mGnssCapabilities;
|
|
|
|
/** @hide */
|
|
public static GnssCapabilities of(long gnssCapabilities) {
|
|
return new GnssCapabilities(gnssCapabilities);
|
|
}
|
|
|
|
private GnssCapabilities(long gnssCapabilities) {
|
|
mGnssCapabilities = gnssCapabilities;
|
|
}
|
|
|
|
/**
|
|
* 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 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);
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public String toString() {
|
|
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 hasCapability(long capability) {
|
|
return (mGnssCapabilities & capability) == capability;
|
|
}
|
|
}
|