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

Commit c019a901 authored by Joe Huang's avatar Joe Huang Committed by Android (Google) Code Review
Browse files

Merge "Add Satellite PVT AIDL (framework/JNI)"

parents bdd17758 e256219f
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
@@ -3986,6 +3986,7 @@ package android.location {
    method @Deprecated public boolean hasNavMessages();
    method @Deprecated public boolean hasSatelliteBlacklist();
    method public boolean hasSatelliteBlocklist();
    method public boolean hasSatellitePvt();
  }
  public static final class GnssCapabilities.Builder {
@@ -3996,6 +3997,12 @@ package android.location {
    method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrectionsLosSats(boolean);
    method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrectionsReflectingPlane(boolean);
    method @NonNull public android.location.GnssCapabilities.Builder setHasSatelliteBlocklist(boolean);
    method @NonNull public android.location.GnssCapabilities.Builder setHasSatellitePvt(boolean);
  }
  public final class GnssMeasurement implements android.os.Parcelable {
    method @Nullable public android.location.SatellitePvt getSatellitePvt();
    method public boolean hasSatellitePvt();
  }
  public final class GnssMeasurementCorrections implements android.os.Parcelable {
@@ -4410,6 +4417,59 @@ package android.location {
    method @NonNull public static android.location.LocationResult wrap(@NonNull android.location.Location);
  }
  public final class SatellitePvt implements android.os.Parcelable {
    method public int describeContents();
    method @NonNull public android.location.SatellitePvt.ClockInfo getClockInfo();
    method @FloatRange public double getIonoDelayMeters();
    method @NonNull public android.location.SatellitePvt.PositionEcef getPositionEcef();
    method @FloatRange public double getTropoDelayMeters();
    method @NonNull public android.location.SatellitePvt.VelocityEcef getVelocityEcef();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.SatellitePvt> CREATOR;
  }
  public static final class SatellitePvt.Builder {
    ctor public SatellitePvt.Builder();
    method @NonNull public android.location.SatellitePvt build();
    method @NonNull public android.location.SatellitePvt.Builder setClockInfo(@NonNull android.location.SatellitePvt.ClockInfo);
    method @NonNull public android.location.SatellitePvt.Builder setIonoDelayMeters(@FloatRange double);
    method @NonNull public android.location.SatellitePvt.Builder setPositionEcef(@NonNull android.location.SatellitePvt.PositionEcef);
    method @NonNull public android.location.SatellitePvt.Builder setTropoDelayMeters(@FloatRange double);
    method @NonNull public android.location.SatellitePvt.Builder setVelocityEcef(@NonNull android.location.SatellitePvt.VelocityEcef);
  }
  public static final class SatellitePvt.ClockInfo implements android.os.Parcelable {
    ctor public SatellitePvt.ClockInfo(double, double, double);
    method public int describeContents();
    method @FloatRange public double getClockDriftMetersPerSecond();
    method @FloatRange public double getHardwareCodeBiasMeters();
    method @FloatRange public double getTimeCorrectionMeters();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.SatellitePvt.ClockInfo> CREATOR;
  }
  public static final class SatellitePvt.PositionEcef implements android.os.Parcelable {
    ctor public SatellitePvt.PositionEcef(double, double, double, double);
    method public int describeContents();
    method @FloatRange(from=0.0f, fromInclusive=false) public double getUreMeters();
    method @FloatRange public double getXMeters();
    method @FloatRange public double getYMeters();
    method @FloatRange public double getZMeters();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.SatellitePvt.PositionEcef> CREATOR;
  }
  public static final class SatellitePvt.VelocityEcef implements android.os.Parcelable {
    ctor public SatellitePvt.VelocityEcef(double, double, double, double);
    method public int describeContents();
    method @FloatRange(from=0.0f, fromInclusive=false) public double getUreRateMetersPerSecond();
    method @FloatRange public double getXMetersPerSecond();
    method @FloatRange public double getYMetersPerSecond();
    method @FloatRange public double getZMetersPerSecond();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.SatellitePvt.VelocityEcef> CREATOR;
  }
}
package android.location.provider {
+2 −0
Original line number Diff line number Diff line
@@ -933,6 +933,7 @@ package android.location {
    method public void resetFullInterSignalBiasUncertaintyNanos();
    method public void resetSatelliteInterSignalBiasNanos();
    method public void resetSatelliteInterSignalBiasUncertaintyNanos();
    method public void resetSatellitePvt();
    method public void resetSnrInDb();
    method public void set(android.location.GnssMeasurement);
    method public void setAccumulatedDeltaRangeMeters(double);
@@ -956,6 +957,7 @@ package android.location {
    method public void setReceivedSvTimeUncertaintyNanos(long);
    method public void setSatelliteInterSignalBiasNanos(double);
    method public void setSatelliteInterSignalBiasUncertaintyNanos(@FloatRange(from=0.0) double);
    method public void setSatellitePvt(@Nullable android.location.SatellitePvt);
    method public void setSnrInDb(double);
    method public void setState(int);
    method public void setSvid(int);
+2 −0
Original line number Diff line number Diff line
@@ -477,6 +477,8 @@ GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasN
    
GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasUncertaintyNanos(double):
    
GetterSetterNames: android.location.GnssMeasurement#setSatellitePvt(android.location.SatellitePvt):

GetterSetterNames: android.location.GnssMeasurement#setSnrInDb(double):
    
GetterSetterNames: android.location.LocationRequest#isLocationSettingsIgnored():
+28 −1
Original line number Diff line number Diff line
@@ -57,6 +57,8 @@ public final class GnssCapabilities implements Parcelable {
    public static final int TOP_HAL_CAPABILITY_MEASUREMENT_CORRECTIONS = 1024;
    /** @hide */
    public static final int TOP_HAL_CAPABILITY_ANTENNA_INFO = 2048;
    /** @hide */
    public static final int TOP_HAL_CAPABILITY_SATELLITE_PVT = 8192;

    /** @hide */
    @IntDef(flag = true, prefix = {"TOP_HAL_CAPABILITY_"}, value = {TOP_HAL_CAPABILITY_SCHEDULING,
@@ -64,7 +66,8 @@ public final class GnssCapabilities implements Parcelable {
            TOP_HAL_CAPABILITY_ON_DEMAND_TIME, TOP_HAL_CAPABILITY_GEOFENCING,
            TOP_HAL_CAPABILITY_MEASUREMENTS, TOP_HAL_CAPABILITY_NAV_MESSAGES,
            TOP_HAL_CAPABILITY_LOW_POWER_MODE, TOP_HAL_CAPABILITY_SATELLITE_BLOCKLIST,
            TOP_HAL_CAPABILITY_MEASUREMENT_CORRECTIONS, TOP_HAL_CAPABILITY_ANTENNA_INFO})
            TOP_HAL_CAPABILITY_MEASUREMENT_CORRECTIONS, TOP_HAL_CAPABILITY_ANTENNA_INFO,
            TOP_HAL_CAPABILITY_SATELLITE_PVT})
    @Retention(RetentionPolicy.SOURCE)
    public @interface TopHalCapabilityFlags {}

@@ -293,6 +296,16 @@ public final class GnssCapabilities implements Parcelable {
        return (mTopFlags & TOP_HAL_CAPABILITY_SATELLITE_BLOCKLIST) != 0;
    }

    /**
     * Returns {@code true} if GNSS chipset supports satellite PVT, {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasSatellitePvt() {
        return (mTopFlags & TOP_HAL_CAPABILITY_SATELLITE_PVT) != 0;
    }

    /**
     * Returns {@code true} if GNSS chipset supports measurement corrections, {@code false}
     * otherwise.
@@ -511,6 +524,9 @@ public final class GnssCapabilities implements Parcelable {
        if (hasSatelliteBlocklist()) {
            builder.append("SATELLITE_BLOCKLIST ");
        }
        if (hasSatellitePvt()) {
            builder.append("SATELLITE_PVT ");
        }
        if (hasMeasurementCorrections()) {
            builder.append("MEASUREMENT_CORRECTIONS ");
        }
@@ -673,6 +689,17 @@ public final class GnssCapabilities implements Parcelable {
            return this;
        }

        /**
         * Sets satellite PVT capability.
         *
         * @hide
         */
        @SystemApi
        public @NonNull Builder setHasSatellitePvt(boolean capable) {
            mTopFlags = setFlag(mTopFlags, TOP_HAL_CAPABILITY_SATELLITE_PVT, capable);
            return this;
        }

        /**
         * Sets measurement corrections capability.
         *
+66 −1
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ import static android.hardware.gnss.V2_1.IGnssMeasurementCallback.GnssMeasuremen
import android.annotation.FloatRange;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -67,12 +69,14 @@ public final class GnssMeasurement implements Parcelable {
    private double mFullInterSignalBiasUncertaintyNanos;
    private double mSatelliteInterSignalBiasNanos;
    private double mSatelliteInterSignalBiasUncertaintyNanos;
    @Nullable private SatellitePvt mSatellitePvt;

    // The following enumerations must be in sync with the values declared in GNSS HAL.

    private static final int HAS_NO_FLAGS = 0;
    private static final int HAS_CODE_TYPE = (1 << 14);
    private static final int HAS_BASEBAND_CN0 = (1 << 15);
    private static final int HAS_SATELLITE_PVT = (1 << 20);

    /**
     * The status of the multipath indicator.
@@ -274,6 +278,7 @@ public final class GnssMeasurement implements Parcelable {
        mSatelliteInterSignalBiasNanos = measurement.mSatelliteInterSignalBiasNanos;
        mSatelliteInterSignalBiasUncertaintyNanos =
                measurement.mSatelliteInterSignalBiasUncertaintyNanos;
        mSatellitePvt = measurement.mSatellitePvt;
    }

    /**
@@ -1691,6 +1696,55 @@ public final class GnssMeasurement implements Parcelable {
        resetFlag(HAS_SATELLITE_ISB_UNCERTAINTY);
    }

    /**
     * Returns {@code true} if {@link #getSatellitePvt()} is available,
     * {@code false} otherwise.
     *
     * @hide
     */
    @SystemApi
    public boolean hasSatellitePvt() {
        return isFlagSet(HAS_SATELLITE_PVT);
    }

    /**
     * Gets the Satellite PVT data.
     *
     * <p>The value is only available if {@link #hasSatellitePvt()} is
     * {@code true}.
     * @hide
     */
    @Nullable
    @SystemApi
    public SatellitePvt getSatellitePvt() {
        return mSatellitePvt;
    }

    /**
     * Sets the Satellite PVT.
     *
     * @hide
     */
    @TestApi
    public void setSatellitePvt(@Nullable SatellitePvt satellitePvt) {
        if (satellitePvt == null) {
            resetSatellitePvt();
        } else {
            setFlag(HAS_SATELLITE_PVT);
            mSatellitePvt = satellitePvt;
        }
    }

    /**
     * Resets the Satellite PVT.
     *
     * @hide
     */
    @TestApi
    public void resetSatellitePvt() {
        resetFlag(HAS_SATELLITE_PVT);
    }


    public static final @NonNull Creator<GnssMeasurement> CREATOR = new Creator<GnssMeasurement>() {
        @Override
@@ -1723,7 +1777,10 @@ public final class GnssMeasurement implements Parcelable {
            gnssMeasurement.mFullInterSignalBiasUncertaintyNanos = parcel.readDouble();
            gnssMeasurement.mSatelliteInterSignalBiasNanos = parcel.readDouble();
            gnssMeasurement.mSatelliteInterSignalBiasUncertaintyNanos = parcel.readDouble();

            if (gnssMeasurement.hasSatellitePvt()) {
                ClassLoader classLoader = getClass().getClassLoader();
                gnssMeasurement.mSatellitePvt = parcel.readParcelable(classLoader);
            }
            return gnssMeasurement;
        }

@@ -1761,6 +1818,9 @@ public final class GnssMeasurement implements Parcelable {
        parcel.writeDouble(mFullInterSignalBiasUncertaintyNanos);
        parcel.writeDouble(mSatelliteInterSignalBiasNanos);
        parcel.writeDouble(mSatelliteInterSignalBiasUncertaintyNanos);
        if (hasSatellitePvt()) {
            parcel.writeParcelable(mSatellitePvt, flags);
        }
    }

    @Override
@@ -1864,6 +1924,10 @@ public final class GnssMeasurement implements Parcelable {
                            : null));
        }

        if (hasSatellitePvt()) {
            builder.append(mSatellitePvt.toString());
        }

        return builder.toString();
    }

@@ -1893,6 +1957,7 @@ public final class GnssMeasurement implements Parcelable {
        resetFullInterSignalBiasUncertaintyNanos();
        resetSatelliteInterSignalBiasNanos();
        resetSatelliteInterSignalBiasUncertaintyNanos();
        resetSatellitePvt();
    }

    private void setFlag(int flag) {
Loading