Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 213bb709 authored by Sasha Kuznetsov's avatar Sasha Kuznetsov
Browse files

Fixes to GnssAntennaInfo API

Bug: 148284818
Test: End to end test: run "atest GnssAntennaInfoRegistrationTest" on cuttlefish and watch "adb logcat | grep -i GnssAntennaInfo". Other tests:  atest GnssAntennaInfoTest, atest GnssAntennaInfoProviderTest, atest GnssManagerServiceTest, atest VtsHalGnssV2_1TargetTest, atest LocationManagerFineTest.
Change-Id: I3714ccaed632634c52b882479563593b0bde16fd
parent 8fa96073
Loading
Loading
Loading
Loading
+35 −46
Original line number Diff line number Diff line
@@ -23479,66 +23479,54 @@ package android.location {
  }
  public final class GnssAntennaInfo implements android.os.Parcelable {
    ctor public GnssAntennaInfo(double, @NonNull android.location.GnssAntennaInfo.PhaseCenterOffsetCoordinates, @Nullable android.location.GnssAntennaInfo.PhaseCenterVariationCorrections, @Nullable android.location.GnssAntennaInfo.SignalGainCorrections);
    method public int describeContents();
    method public double getCarrierFrequencyMHz();
    method @NonNull public android.location.GnssAntennaInfo.PhaseCenterOffsetCoordinates getPhaseCenterOffsetCoordinates();
    method @Nullable public android.location.GnssAntennaInfo.PhaseCenterVariationCorrections getPhaseCenterVariationCorrections();
    method @Nullable public android.location.GnssAntennaInfo.SignalGainCorrections getSignalGainCorrections();
    method @FloatRange(from=0.0f) public double getCarrierFrequencyMHz();
    method @NonNull public android.location.GnssAntennaInfo.PhaseCenterOffset getPhaseCenterOffset();
    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getPhaseCenterVariationCorrections();
    method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getSignalGainCorrections();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo> CREATOR;
  }
  public abstract static class GnssAntennaInfo.Callback {
    ctor public GnssAntennaInfo.Callback();
  public static class GnssAntennaInfo.Builder {
    ctor public GnssAntennaInfo.Builder();
    method @NonNull public android.location.GnssAntennaInfo build();
    method @NonNull public android.location.GnssAntennaInfo.Builder setCarrierFrequencyMHz(@FloatRange(from=0.0f) double);
    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterOffset(@NonNull android.location.GnssAntennaInfo.PhaseCenterOffset);
    method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterVariationCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
    method @NonNull public android.location.GnssAntennaInfo.Builder setSignalGainCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections);
  }
  public static interface GnssAntennaInfo.Listener {
    method public void onGnssAntennaInfoReceived(@NonNull java.util.List<android.location.GnssAntennaInfo>);
    method public void onStatusChanged(int);
    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
    field public static final int STATUS_READY = 1; // 0x1
  }
  public static final class GnssAntennaInfo.PhaseCenterOffsetCoordinates implements android.os.Parcelable {
    ctor public GnssAntennaInfo.PhaseCenterOffsetCoordinates(double, double, double, double, double, double);
  public static final class GnssAntennaInfo.PhaseCenterOffset implements android.os.Parcelable {
    ctor public GnssAntennaInfo.PhaseCenterOffset(double, double, double, double, double, double);
    method public int describeContents();
    method public double getXCoordMillimeters();
    method public double getXCoordUncertaintyMillimeters();
    method public double getYCoordMillimeters();
    method public double getYCoordUncertaintyMillimeters();
    method public double getZCoordMillimeters();
    method public double getZCoordUncertaintyMillimeters();
    method @FloatRange public double getXOffsetMm();
    method @FloatRange public double getXOffsetUncertaintyMm();
    method @FloatRange public double getYOffsetMm();
    method @FloatRange public double getYOffsetUncertaintyMm();
    method @FloatRange public double getZOffsetMm();
    method @FloatRange public double getZOffsetUncertaintyMm();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterOffsetCoordinates> CREATOR;
    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterOffset> CREATOR;
  }
  public static final class GnssAntennaInfo.PhaseCenterVariationCorrections implements android.os.Parcelable {
    ctor public GnssAntennaInfo.PhaseCenterVariationCorrections(@NonNull double[][], @NonNull double[][]);
  public static final class GnssAntennaInfo.SphericalCorrections implements android.os.Parcelable {
    ctor public GnssAntennaInfo.SphericalCorrections(@NonNull double[][], @NonNull double[][]);
    method public int describeContents();
    method public double getDeltaPhi();
    method public double getDeltaTheta();
    method public int getNumColumns();
    method public int getNumRows();
    method public double getPhaseCenterVariationCorrectionMillimetersAt(int, int);
    method public double getPhaseCenterVariationCorrectionUncertaintyMillimetersAt(int, int);
    method @NonNull public double[][] getRawCorrectionUncertaintiesArray();
    method @NonNull public double[][] getRawCorrectionsArray();
    method @NonNull public double[][] getCorrectionUncertaintiesArray();
    method @NonNull public double[][] getCorrectionsArray();
    method @FloatRange(from=0.0f, to=180.0f) public double getDeltaPhi();
    method @FloatRange(from=0.0f, to=360.0f) public double getDeltaTheta();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterVariationCorrections> CREATOR;
    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.SphericalCorrections> CREATOR;
  }
  public static final class GnssAntennaInfo.SignalGainCorrections implements android.os.Parcelable {
    ctor public GnssAntennaInfo.SignalGainCorrections(@NonNull double[][], @NonNull double[][]);
    method public int describeContents();
    method public double getDeltaPhi();
    method public double getDeltaTheta();
    method public int getNumColumns();
    method public int getNumRows();
    method @NonNull public double[][] getRawCorrectionUncertaintiesArray();
    method @NonNull public double[][] getRawCorrectionsArray();
    method public double getSignalGainCorrectionDbiAt(int, int);
    method public double getSignalGainCorrectionUncertaintyDbiAt(int, int);
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.SignalGainCorrections> CREATOR;
  public final class GnssCapabilities {
    method public boolean hasGnssAntennaInfo();
  }
  public final class GnssClock implements android.os.Parcelable {
@@ -23849,6 +23837,7 @@ package android.location {
    method @NonNull public java.util.List<java.lang.String> getAllProviders();
    method @Nullable public String getBestProvider(@NonNull android.location.Criteria, boolean);
    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull String, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
    method @NonNull public android.location.GnssCapabilities getGnssCapabilities();
    method @Nullable public String getGnssHardwareModelName();
    method public int getGnssYearOfHardware();
    method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(@Nullable android.location.GpsStatus);
@@ -23858,7 +23847,7 @@ package android.location {
    method @NonNull public java.util.List<java.lang.String> getProviders(@NonNull android.location.Criteria, boolean);
    method public boolean isLocationEnabled();
    method public boolean isProviderEnabled(@NonNull String);
    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerAntennaInfoCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssAntennaInfo.Callback);
    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerAntennaInfoListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssAntennaInfo.Listener);
    method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback, @Nullable android.os.Handler);
    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
@@ -23890,7 +23879,7 @@ package android.location {
    method public void setTestProviderEnabled(@NonNull String, boolean);
    method public void setTestProviderLocation(@NonNull String, @NonNull android.location.Location);
    method @Deprecated public void setTestProviderStatus(@NonNull String, int, @Nullable android.os.Bundle, long);
    method public void unregisterAntennaInfoCallback(@NonNull android.location.GnssAntennaInfo.Callback);
    method public void unregisterAntennaInfoListener(@NonNull android.location.GnssAntennaInfo.Listener);
    method public void unregisterGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
    method public void unregisterGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
    method public void unregisterGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
+0 −2
Original line number Diff line number Diff line
@@ -3806,7 +3806,6 @@ package android.location {
  public final class GnssCapabilities {
    method public boolean hasGeofencing();
    method public boolean hasGnssAntennaInfo();
    method public boolean hasLowPowerMode();
    method public boolean hasMeasurementCorrections();
    method public boolean hasMeasurementCorrectionsExcessPathLength();
@@ -4146,7 +4145,6 @@ package android.location {
    method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
    method @Nullable public String getExtraLocationControllerPackage();
    method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public int getGnssBatchSize();
    method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GnssCapabilities getGnssCapabilities();
    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections);
    method public boolean isExtraLocationControllerPackageEnabled();
    method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
+220 −407

File changed.

Preview size limit exceeded, changes collapsed.

+27 −26
Original line number Diff line number Diff line
@@ -16,15 +16,11 @@

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.
@@ -105,7 +101,10 @@ public final class GnssCapabilities {

    /**
     * Returns {@code true} if GNSS chipset supports low power mode, {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasLowPowerMode() {
        return hasCapability(LOW_POWER_MODE);
    }
@@ -113,28 +112,40 @@ public final class GnssCapabilities {
    /**
     * Returns {@code true} if GNSS chipset supports blacklisting satellites, {@code false}
     * otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasSatelliteBlacklist() {
        return hasCapability(SATELLITE_BLACKLIST);
    }

    /**
     * Returns {@code true} if GNSS chipset supports geofencing, {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasGeofencing() {
        return hasCapability(GEOFENCING);
    }

    /**
     * Returns {@code true} if GNSS chipset supports measurements, {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasMeasurements() {
        return hasCapability(MEASUREMENTS);
    }

    /**
     * Returns {@code true} if GNSS chipset supports navigation messages, {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasNavMessages() {
        return hasCapability(NAV_MESSAGES);
    }
@@ -142,7 +153,10 @@ public final class GnssCapabilities {
    /**
     * Returns {@code true} if GNSS chipset supports measurement corrections, {@code false}
     * otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasMeasurementCorrections() {
        return hasCapability(MEASUREMENT_CORRECTIONS);
    }
@@ -150,7 +164,10 @@ public final class GnssCapabilities {
    /**
     * Returns {@code true} if GNSS chipset supports line-of-sight satellite identification
     * measurement corrections, {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasMeasurementCorrectionsLosSats() {
        return hasCapability(MEASUREMENT_CORRECTIONS_LOS_SATS);
    }
@@ -158,7 +175,10 @@ public final class GnssCapabilities {
    /**
     * Returns {@code true} if GNSS chipset supports per satellite excess-path-length measurement
     * corrections, {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasMeasurementCorrectionsExcessPathLength() {
        return hasCapability(MEASUREMENT_CORRECTIONS_EXCESS_PATH_LENGTH);
    }
@@ -166,7 +186,10 @@ public final class GnssCapabilities {
    /**
     * Returns {@code true} if GNSS chipset supports reflecting planes measurement corrections,
     * {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasMeasurementCorrectionsReflectingPane() {
        return hasCapability(MEASUREMENT_CORRECTIONS_REFLECTING_PLANE);
    }
@@ -178,28 +201,6 @@ public final class GnssCapabilities {
        return hasCapability(ANTENNA_INFO);
    }

    @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 (hasGnssAntennaInfo()) sb.append("ANTENNA_INFO ");
        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;
    }
+0 −1
Original line number Diff line number Diff line
@@ -23,5 +23,4 @@ import android.location.GnssAntennaInfo;
 */
oneway interface IGnssAntennaInfoListener {
    void onGnssAntennaInfoReceived(in List<GnssAntennaInfo> gnssAntennaInfo);
    void onStatusChanged(in int status);
}
 No newline at end of file
Loading