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

Commit d2309fa3 authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Add passive listener support for GnssMeasurement

Bug: 248291428
Test: atest GnssMeasurementRegistrationTest
Change-Id: Ifac665ff1e85ee9625613e87548460c8974a81bc
parent 545fa2aa
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -19450,6 +19450,7 @@ package android.location {
    method public boolean isFullTracking();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurementRequest> CREATOR;
    field public static final int PASSIVE_INTERVAL = 2147483647; // 0x7fffffff
  }
  public static final class GnssMeasurementRequest.Builder {
+16 −2
Original line number Diff line number Diff line
@@ -31,6 +31,15 @@ import java.util.Objects;
 * This class contains extra parameters to pass in a GNSS measurement request.
 */
public final class GnssMeasurementRequest implements Parcelable {
    /**
     * Represents a passive only request. Such a request will not trigger any active GNSS
     * measurements or power usage itself, but may receive GNSS measurements generated in response
     * to other requests.
     *
     * @see GnssMeasurementRequest#getIntervalMillis()
     */
    public static final int PASSIVE_INTERVAL = Integer.MAX_VALUE;

    private final boolean mCorrelationVectorOutputsEnabled;
    private final boolean mFullTracking;
    private final int mIntervalMillis;
@@ -76,7 +85,10 @@ public final class GnssMeasurementRequest implements Parcelable {
    }

    /**
     * Represents the requested time interval between the reported measurements in milliseconds.
     * Returns the requested time interval between the reported measurements in milliseconds, or
     * {@link #PASSIVE_INTERVAL} if this is a passive, no power request. A passive request will not
     * actively generate GNSS measurement updates, but may receive GNSS measurement updates
     * generated as a result of other GNSS measurement requests.
     *
     * <p>If the time interval is not set, the default value is 0, which means the fastest rate the
     * GNSS chipset can report.
@@ -213,7 +225,9 @@ public final class GnssMeasurementRequest implements Parcelable {

        /**
         * Set the time interval between the reported measurements in milliseconds, which is 0 by
         * default.
         * default. The request interval may be set to {@link #PASSIVE_INTERVAL} which indicates
         * this request will not actively generate GNSS measurement updates, but may receive
         * GNSS measurement updates generated as a result of other GNSS measurement requests.
         *
         * <p>An interval of 0 milliseconds means the fastest rate the chipset can report.
         *
+12 −5
Original line number Diff line number Diff line
@@ -112,6 +112,9 @@ public final class GnssMeasurementsProvider extends
    @Override
    protected boolean registerWithService(GnssMeasurementRequest request,
            Collection<GnssListenerRegistration> registrations) {
        if (request.getIntervalMillis() == GnssMeasurementRequest.PASSIVE_INTERVAL) {
            return true;
        }
        if (mGnssNative.startMeasurementCollection(request.isFullTracking(),
                request.isCorrelationVectorOutputsEnabled(),
                request.getIntervalMillis())) {
@@ -157,7 +160,7 @@ public final class GnssMeasurementsProvider extends
            Collection<GnssListenerRegistration> registrations) {
        boolean fullTracking = false;
        boolean enableCorrVecOutputs = false;
        int intervalMillis = Integer.MAX_VALUE;
        int intervalMillis = GnssMeasurementRequest.PASSIVE_INTERVAL;

        if (mSettingsHelper.isGnssMeasurementsFullTrackingEnabled()) {
            fullTracking = true;
@@ -165,6 +168,10 @@ public final class GnssMeasurementsProvider extends

        for (GnssListenerRegistration registration : registrations) {
            GnssMeasurementRequest request = registration.getRequest();
            // passive requests do not contribute to the merged request
            if (request.getIntervalMillis() == GnssMeasurementRequest.PASSIVE_INTERVAL) {
                continue;
            }
            if (request.isFullTracking()) {
                fullTracking = true;
            }