Merge "Bluesky: Handle null correction objects gracefully."

This commit is contained in:
Mohammed Khider
2019-03-06 23:02:56 +00:00
committed by Android (Google) Code Review
5 changed files with 275 additions and 222 deletions

View File

@@ -3056,81 +3056,75 @@ package android.location {
public final class GnssMeasurementCorrections implements android.os.Parcelable {
method public int describeContents();
method public double getAltitudeMeters();
method public double getHorizontalPositionUncertaintyMeters();
method public double getLatitudeDegrees();
method public double getLongitudeDegrees();
method @Nullable public java.util.List<android.location.GnssSingleSatCorrection> getSingleSatelliteCorrectionList();
method public long getToaGpsNanosecondsOfWeek();
method public double getVerticalPositionUncertaintyMeters();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssMeasurementCorrections> CREATOR;
method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
method @FloatRange(from=0.0f) public double getHorizontalPositionUncertaintyMeters();
method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
method @NonNull public java.util.List<android.location.GnssSingleSatCorrection> getSingleSatelliteCorrectionList();
method @IntRange(from=0) public long getToaGpsNanosecondsOfWeek();
method @FloatRange(from=0.0f) public double getVerticalPositionUncertaintyMeters();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GnssMeasurementCorrections> CREATOR;
}
public static final class GnssMeasurementCorrections.Builder {
ctor public GnssMeasurementCorrections.Builder();
method public android.location.GnssMeasurementCorrections build();
method public android.location.GnssMeasurementCorrections.Builder setAltitudeMeters(double);
method public android.location.GnssMeasurementCorrections.Builder setHorizontalPositionUncertaintyMeters(double);
method public android.location.GnssMeasurementCorrections.Builder setLatitudeDegrees(double);
method public android.location.GnssMeasurementCorrections.Builder setLongitudeDegrees(double);
method public android.location.GnssMeasurementCorrections.Builder setSingleSatelliteCorrectionList(@Nullable java.util.List<android.location.GnssSingleSatCorrection>);
method public android.location.GnssMeasurementCorrections.Builder setToaGpsNanosecondsOfWeek(long);
method public android.location.GnssMeasurementCorrections.Builder setVerticalPositionUncertaintyMeters(double);
method @NonNull public android.location.GnssMeasurementCorrections build();
method @NonNull public android.location.GnssMeasurementCorrections.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
method @NonNull public android.location.GnssMeasurementCorrections.Builder setHorizontalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
method @NonNull public android.location.GnssMeasurementCorrections.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
method @NonNull public android.location.GnssMeasurementCorrections.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
method @NonNull public android.location.GnssMeasurementCorrections.Builder setSingleSatelliteCorrectionList(@NonNull java.util.List<android.location.GnssSingleSatCorrection>);
method @NonNull public android.location.GnssMeasurementCorrections.Builder setToaGpsNanosecondsOfWeek(@IntRange(from=0) long);
method @NonNull public android.location.GnssMeasurementCorrections.Builder setVerticalPositionUncertaintyMeters(@FloatRange(from=0.0f) double);
}
public final class GnssReflectingPlane implements android.os.Parcelable {
method public int describeContents();
method public double getAltitudeMeters();
method public double getAzimuthDegrees();
method public double getLatitudeDegrees();
method public double getLongitudeDegrees();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssReflectingPlane> CREATOR;
method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters();
method @FloatRange(from=0.0f, to=360.0f) public double getAzimuthDegrees();
method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees();
method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GnssReflectingPlane> CREATOR;
}
public static final class GnssReflectingPlane.Builder {
ctor public GnssReflectingPlane.Builder();
method public android.location.GnssReflectingPlane build();
method public android.location.GnssReflectingPlane.Builder setAltitudeMeters(double);
method public android.location.GnssReflectingPlane.Builder setAzimuthDegrees(double);
method public android.location.GnssReflectingPlane.Builder setLatitudeDegrees(double);
method public android.location.GnssReflectingPlane.Builder setLongitudeDegrees(double);
method @NonNull public android.location.GnssReflectingPlane build();
method @NonNull public android.location.GnssReflectingPlane.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double);
method @NonNull public android.location.GnssReflectingPlane.Builder setAzimuthDegrees(@FloatRange(from=0.0f, to=360.0f) double);
method @NonNull public android.location.GnssReflectingPlane.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double);
method @NonNull public android.location.GnssReflectingPlane.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
}
public final class GnssSingleSatCorrection implements android.os.Parcelable {
method public int describeContents();
method public float getCarrierFrequencyHz();
method @FloatRange(from=0.0f, fromInclusive=false) public float getCarrierFrequencyHz();
method public int getConstellationType();
method public float getExcessPathLengthMeters();
method public float getExcessPathLengthUncertaintyMeters();
method @FloatRange(from=0.0f) public float getExcessPathLengthMeters();
method @FloatRange(from=0.0f) public float getExcessPathLengthUncertaintyMeters();
method @FloatRange(from=0.0f, to=1.0f) public float getProbabilityLineOfSight();
method @Nullable public android.location.GnssReflectingPlane getReflectingPlane();
method public int getSatelliteId();
method public int getSingleSatelliteCorrectionFlags();
method @IntRange(from=0) public int getSatelliteId();
method public boolean hasExcessPathLength();
method public boolean hasExcessPathLengthUncertainty();
method public boolean hasReflectingPlane();
method public boolean hasValidSatelliteLineOfSight();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssSingleSatCorrection> CREATOR;
field public static final int HAS_EXCESS_PATH_LENGTH_MASK = 2; // 0x2
field public static final int HAS_EXCESS_PATH_LENGTH_UNC_MASK = 4; // 0x4
field public static final int HAS_PROB_SAT_IS_LOS_MASK = 1; // 0x1
field public static final int HAS_REFLECTING_PLANE_MASK = 8; // 0x8
method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.location.GnssSingleSatCorrection> CREATOR;
}
public static final class GnssSingleSatCorrection.Builder {
ctor public GnssSingleSatCorrection.Builder();
method public android.location.GnssSingleSatCorrection build();
method public android.location.GnssSingleSatCorrection.Builder setCarrierFrequencyHz(float);
method public android.location.GnssSingleSatCorrection.Builder setConstellationType(int);
method public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthMeters(float);
method public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthUncertaintyMeters(float);
method public android.location.GnssSingleSatCorrection.Builder setProbabilityLineOfSight(@FloatRange(from=0.0f, to=1.0f) float);
method public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(android.location.GnssReflectingPlane);
method public android.location.GnssSingleSatCorrection.Builder setSatelliteId(int);
method public android.location.GnssSingleSatCorrection.Builder setSingleSatelliteCorrectionFlags(int);
method @NonNull public android.location.GnssSingleSatCorrection build();
method @NonNull public android.location.GnssSingleSatCorrection.Builder setCarrierFrequencyHz(@FloatRange(from=0.0f, fromInclusive=false) float);
method @NonNull public android.location.GnssSingleSatCorrection.Builder setConstellationType(int);
method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthMeters(@FloatRange(from=0.0f) float);
method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthUncertaintyMeters(@FloatRange(from=0.0f) float);
method @NonNull public android.location.GnssSingleSatCorrection.Builder setProbabilityLineOfSight(@FloatRange(from=0.0f, to=1.0f) float);
method @NonNull public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(@Nullable android.location.GnssReflectingPlane);
method @NonNull public android.location.GnssSingleSatCorrection.Builder setSatelliteId(@IntRange(from=0) int);
}
public class GpsClock implements android.os.Parcelable {

View File

@@ -16,11 +16,16 @@
package android.location;
import android.annotation.FloatRange;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.util.Preconditions;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -35,37 +40,44 @@ import java.util.List;
public final class GnssMeasurementCorrections implements Parcelable {
/** Represents latitude in degrees at which the corrections are computed. */
private double mLatitudeDegrees;
@FloatRange(from = -90.0f, to = 90.0f)
private final double mLatitudeDegrees;
/** Represents longitude in degrees at which the corrections are computed. */
private double mLongitudeDegrees;
@FloatRange(from = -180.0f, to = 180.0f)
private final double mLongitudeDegrees;
/**
* Represents altitude in meters above the WGS 84 reference ellipsoid at which the corrections
* are computed.
*/
private double mAltitudeMeters;
@FloatRange(from = -1000.0, to = 10000.0f)
private final double mAltitudeMeters;
/**
* Represents the horizontal uncertainty (68% confidence) in meters on the device position at
* which the corrections are provided.
*
* <p> This value is useful for example to judge how accurate the provided corrections are.
*/
private double mHorizontalPositionUncertaintyMeters;
@FloatRange(from = 0.0f)
private final double mHorizontalPositionUncertaintyMeters;
/**
* Represents the vertical uncertainty (68% confidence) in meters on the device position at
* which the corrections are provided.
*
* <p> This value is useful for example to judge how accurate the provided corrections are.
*/
private double mVerticalPositionUncertaintyMeters;
@FloatRange(from = 0.0f)
private final double mVerticalPositionUncertaintyMeters;
/** Time Of Applicability, GPS time of week in nanoseconds. */
private long mToaGpsNanosecondsOfWeek;
@IntRange(from = 0)
private final long mToaGpsNanosecondsOfWeek;
/**
* A set of {@link GnssSingleSatCorrection} each containing measurement corrections for a
* satellite in view.
*/
private @Nullable List<GnssSingleSatCorrection> mSingleSatCorrectionList;
@NonNull
private final List<GnssSingleSatCorrection> mSingleSatCorrectionList;
private GnssMeasurementCorrections(Builder builder) {
mLatitudeDegrees = builder.mLatitudeDegrees;
@@ -74,19 +86,19 @@ public final class GnssMeasurementCorrections implements Parcelable {
mHorizontalPositionUncertaintyMeters = builder.mHorizontalPositionUncertaintyMeters;
mVerticalPositionUncertaintyMeters = builder.mVerticalPositionUncertaintyMeters;
mToaGpsNanosecondsOfWeek = builder.mToaGpsNanosecondsOfWeek;
mSingleSatCorrectionList =
builder.mSingleSatCorrectionList == null
? null
: Collections.unmodifiableList(
new ArrayList<>(builder.mSingleSatCorrectionList));
final List<GnssSingleSatCorrection> singleSatCorrList = builder.mSingleSatCorrectionList;
Preconditions.checkArgument(singleSatCorrList != null && !singleSatCorrList.isEmpty());
mSingleSatCorrectionList = Collections.unmodifiableList(new ArrayList<>(singleSatCorrList));
}
/** Gets the latitude in degrees at which the corrections are computed. */
@FloatRange(from = -90.0f, to = 90.0f)
public double getLatitudeDegrees() {
return mLatitudeDegrees;
}
/** Gets the longitude in degrees at which the corrections are computed. */
@FloatRange(from = -180.0f, to = 180.0f)
public double getLongitudeDegrees() {
return mLongitudeDegrees;
}
@@ -95,6 +107,7 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Gets the altitude in meters above the WGS 84 reference ellipsoid at which the corrections are
* computed.
*/
@FloatRange(from = -1000.0f, to = 10000.0f)
public double getAltitudeMeters() {
return mAltitudeMeters;
}
@@ -103,6 +116,7 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Gets the horizontal uncertainty (68% confidence) in meters on the device position at
* which the corrections are provided.
*/
@FloatRange(from = 0.0f)
public double getHorizontalPositionUncertaintyMeters() {
return mHorizontalPositionUncertaintyMeters;
}
@@ -111,11 +125,13 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Gets the vertical uncertainty (68% confidence) in meters on the device position at
* which the corrections are provided.
*/
@FloatRange(from = 0.0f)
public double getVerticalPositionUncertaintyMeters() {
return mVerticalPositionUncertaintyMeters;
}
/** Gets the time of applicability, GPS time of week in nanoseconds. */
@IntRange(from = 0)
public long getToaGpsNanosecondsOfWeek() {
return mToaGpsNanosecondsOfWeek;
}
@@ -124,7 +140,8 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Gets a set of {@link GnssSingleSatCorrection} each containing measurement corrections for a
* satellite in view
*/
public @Nullable List<GnssSingleSatCorrection> getSingleSatelliteCorrectionList() {
@NonNull
public List<GnssSingleSatCorrection> getSingleSatelliteCorrectionList() {
return mSingleSatCorrectionList;
}
@@ -133,10 +150,11 @@ public final class GnssMeasurementCorrections implements Parcelable {
return 0;
}
public static final @android.annotation.NonNull Creator<GnssMeasurementCorrections> CREATOR =
public static final Creator<GnssMeasurementCorrections> CREATOR =
new Creator<GnssMeasurementCorrections>() {
@Override
public GnssMeasurementCorrections createFromParcel(Parcel parcel) {
@NonNull
public GnssMeasurementCorrections createFromParcel(@NonNull Parcel parcel) {
final GnssMeasurementCorrections.Builder gnssMeasurementCorrectons =
new Builder()
.setLatitudeDegrees(parcel.readDouble())
@@ -148,7 +166,7 @@ public final class GnssMeasurementCorrections implements Parcelable {
List<GnssSingleSatCorrection> singleSatCorrectionList = new ArrayList<>();
parcel.readTypedList(singleSatCorrectionList, GnssSingleSatCorrection.CREATOR);
gnssMeasurementCorrectons.setSingleSatelliteCorrectionList(
singleSatCorrectionList.isEmpty() ? null : singleSatCorrectionList);
singleSatCorrectionList);
return gnssMeasurementCorrectons.build();
}
@@ -177,7 +195,7 @@ public final class GnssMeasurementCorrections implements Parcelable {
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
public void writeToParcel(@NonNull Parcel parcel, int flags) {
parcel.writeDouble(mLatitudeDegrees);
parcel.writeDouble(mLongitudeDegrees);
parcel.writeDouble(mAltitudeMeters);
@@ -199,16 +217,18 @@ public final class GnssMeasurementCorrections implements Parcelable {
private double mHorizontalPositionUncertaintyMeters;
private double mVerticalPositionUncertaintyMeters;
private long mToaGpsNanosecondsOfWeek;
private List<GnssSingleSatCorrection> mSingleSatCorrectionList;
@Nullable private List<GnssSingleSatCorrection> mSingleSatCorrectionList;
/** Sets the latitude in degrees at which the corrections are computed. */
public Builder setLatitudeDegrees(double latitudeDegrees) {
@NonNull public Builder setLatitudeDegrees(
@FloatRange(from = -90.0f, to = 90.0f) double latitudeDegrees) {
mLatitudeDegrees = latitudeDegrees;
return this;
}
/** Sets the longitude in degrees at which the corrections are computed. */
public Builder setLongitudeDegrees(double longitudeDegrees) {
@NonNull public Builder setLongitudeDegrees(
@FloatRange(from = -180.0f, to = 180.0f) double longitudeDegrees) {
mLongitudeDegrees = longitudeDegrees;
return this;
}
@@ -217,7 +237,8 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Sets the altitude in meters above the WGS 84 reference ellipsoid at which the corrections
* are computed.
*/
public Builder setAltitudeMeters(double altitudeMeters) {
@NonNull public Builder setAltitudeMeters(
@FloatRange(from = -1000.0f, to = 10000.0f) double altitudeMeters) {
mAltitudeMeters = altitudeMeters;
return this;
}
@@ -227,8 +248,8 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Sets the horizontal uncertainty (68% confidence) in meters on the device position at
* which the corrections are provided.
*/
public Builder setHorizontalPositionUncertaintyMeters(
double horizontalPositionUncertaintyMeters) {
@NonNull public Builder setHorizontalPositionUncertaintyMeters(
@FloatRange(from = 0.0f) double horizontalPositionUncertaintyMeters) {
mHorizontalPositionUncertaintyMeters = horizontalPositionUncertaintyMeters;
return this;
}
@@ -237,14 +258,15 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Sets the vertical uncertainty (68% confidence) in meters on the device position at which
* the corrections are provided.
*/
public Builder setVerticalPositionUncertaintyMeters(
double verticalPositionUncertaintyMeters) {
@NonNull public Builder setVerticalPositionUncertaintyMeters(
@FloatRange(from = 0.0f) double verticalPositionUncertaintyMeters) {
mVerticalPositionUncertaintyMeters = verticalPositionUncertaintyMeters;
return this;
}
/** Sets the time of applicability, GPS time of week in nanoseconds. */
public Builder setToaGpsNanosecondsOfWeek(long toaGpsNanosecondsOfWeek) {
@NonNull public Builder setToaGpsNanosecondsOfWeek(
@IntRange(from = 0) long toaGpsNanosecondsOfWeek) {
mToaGpsNanosecondsOfWeek = toaGpsNanosecondsOfWeek;
return this;
}
@@ -253,19 +275,14 @@ public final class GnssMeasurementCorrections implements Parcelable {
* Sets a the list of {@link GnssSingleSatCorrection} containing measurement corrections for
* a satellite in view
*/
public Builder setSingleSatelliteCorrectionList(
@Nullable List<GnssSingleSatCorrection> singleSatCorrectionList) {
if (singleSatCorrectionList == null) {
mSingleSatCorrectionList = null;
} else {
mSingleSatCorrectionList =
Collections.unmodifiableList(new ArrayList<>(singleSatCorrectionList));
}
@NonNull public Builder setSingleSatelliteCorrectionList(
@NonNull List<GnssSingleSatCorrection> singleSatCorrectionList) {
mSingleSatCorrectionList = singleSatCorrectionList;
return this;
}
/** Builds a {@link GnssMeasurementCorrections} instance as specified by this builder. */
public GnssMeasurementCorrections build() {
@NonNull public GnssMeasurementCorrections build() {
return new GnssMeasurementCorrections(this);
}
}

View File

@@ -16,6 +16,8 @@
package android.location;
import android.annotation.FloatRange;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -29,17 +31,21 @@ import android.os.Parcelable;
public final class GnssReflectingPlane implements Parcelable {
/** Represents latitude in degrees of the reflecting plane */
private double mLatitudeDegrees;
@FloatRange(from = -90.0f, to = 90.0f)
private final double mLatitudeDegrees;
/** Represents longitude in degrees of the reflecting plane. */
private double mLongitudeDegrees;
@FloatRange(from = -180.0f, to = 180.0f)
private final double mLongitudeDegrees;
/**
* Represents altitude in meters above the WGS 84 reference ellipsoid of the reflection point in
* the plane
*/
private double mAltitudeMeters;
@FloatRange(from = -1000.0f, to = 10000.0f)
private final double mAltitudeMeters;
/** Represents azimuth clockwise from north of the reflecting plane in degrees. */
private double mAzimuthDegrees;
@FloatRange(from = 0.0f, to = 360.0f)
private final double mAzimuthDegrees;
private GnssReflectingPlane(Builder builder) {
mLatitudeDegrees = builder.mLatitudeDegrees;
@@ -49,11 +55,13 @@ public final class GnssReflectingPlane implements Parcelable {
}
/** Gets the latitude in degrees of the reflecting plane. */
@FloatRange(from = -90.0f, to = 90.0f)
public double getLatitudeDegrees() {
return mLatitudeDegrees;
}
/** Gets the longitude in degrees of the reflecting plane. */
@FloatRange(from = -180.0f, to = 180.0f)
public double getLongitudeDegrees() {
return mLongitudeDegrees;
}
@@ -62,11 +70,13 @@ public final class GnssReflectingPlane implements Parcelable {
* Gets the altitude in meters above the WGS 84 reference ellipsoid of the reflecting point
* within the plane
*/
@FloatRange(from = -1000.0f, to = 10000.0f)
public double getAltitudeMeters() {
return mAltitudeMeters;
}
/** Gets the azimuth clockwise from north of the reflecting plane in degrees. */
@FloatRange(from = 0.0f, to = 360.0f)
public double getAzimuthDegrees() {
return mAzimuthDegrees;
}
@@ -76,10 +86,11 @@ public final class GnssReflectingPlane implements Parcelable {
return 0;
}
public static final @android.annotation.NonNull Creator<GnssReflectingPlane> CREATOR =
public static final Creator<GnssReflectingPlane> CREATOR =
new Creator<GnssReflectingPlane>() {
@Override
public GnssReflectingPlane createFromParcel(Parcel parcel) {
@NonNull
public GnssReflectingPlane createFromParcel(@NonNull Parcel parcel) {
GnssReflectingPlane reflectingPlane =
new Builder()
.setLatitudeDegrees(parcel.readDouble())
@@ -108,7 +119,7 @@ public final class GnssReflectingPlane implements Parcelable {
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
public void writeToParcel(@NonNull Parcel parcel, int flags) {
parcel.writeDouble(mLatitudeDegrees);
parcel.writeDouble(mLongitudeDegrees);
parcel.writeDouble(mAltitudeMeters);
@@ -119,19 +130,20 @@ public final class GnssReflectingPlane implements Parcelable {
public static final class Builder {
/** For documentation, see corresponding fields in {@link GnssReflectingPlane}. */
private double mLatitudeDegrees;
private double mLongitudeDegrees;
private double mAltitudeMeters;
private double mAzimuthDegrees;
/** Sets the latitude in degrees of the reflecting plane. */
public Builder setLatitudeDegrees(double latitudeDegrees) {
@NonNull public Builder setLatitudeDegrees(
@FloatRange(from = -90.0f, to = 90.0f) double latitudeDegrees) {
mLatitudeDegrees = latitudeDegrees;
return this;
}
/** Sets the longitude in degrees of the reflecting plane. */
public Builder setLongitudeDegrees(double longitudeDegrees) {
@NonNull public Builder setLongitudeDegrees(
@FloatRange(from = -180.0f, to = 180.0f) double longitudeDegrees) {
mLongitudeDegrees = longitudeDegrees;
return this;
}
@@ -140,19 +152,21 @@ public final class GnssReflectingPlane implements Parcelable {
* Sets the altitude in meters above the WGS 84 reference ellipsoid of the reflecting point
* within the plane
*/
public Builder setAltitudeMeters(double altitudeMeters) {
@NonNull public Builder setAltitudeMeters(
@FloatRange(from = -1000.0f, to = 10000.0f) double altitudeMeters) {
mAltitudeMeters = altitudeMeters;
return this;
}
/** Sets the azimuth clockwise from north of the reflecting plane in degrees. */
public Builder setAzimuthDegrees(double azimuthDegrees) {
@NonNull public Builder setAzimuthDegrees(
@FloatRange(from = 0.0f, to = 360.0f) double azimuthDegrees) {
mAzimuthDegrees = azimuthDegrees;
return this;
}
/** Builds a {@link GnssReflectingPlane} object as specified by this builder. */
public GnssReflectingPlane build() {
@NonNull public GnssReflectingPlane build() {
return new GnssReflectingPlane(this);
}
}

View File

@@ -17,6 +17,8 @@
package android.location;
import android.annotation.FloatRange;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
@@ -35,40 +37,49 @@ public final class GnssSingleSatCorrection implements Parcelable {
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
* #mProbSatIsLos}.
*
* @hide
*/
public static final int HAS_PROB_SAT_IS_LOS_MASK = 1 << 0;
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
* #mExcessPathLengthMeters}.
*
* @hide
*/
public static final int HAS_EXCESS_PATH_LENGTH_MASK = 1 << 1;
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
* #mExcessPathLengthUncertaintyMeters}.
*
* @hide
*/
public static final int HAS_EXCESS_PATH_LENGTH_UNC_MASK = 1 << 2;
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
* #mReflectingPlane}.
*
* @hide
*/
public static final int HAS_REFLECTING_PLANE_MASK = 1 << 3;
/** A bitmask of fields present in this object (see HAS_* constants defined above) */
private int mSingleSatCorrectionFlags;
private final int mSingleSatCorrectionFlags;
/** Defines the constellation of the given satellite as defined in {@link GnssStatus}. */
@GnssStatus.ConstellationType
private int mConstellationType;
private final int mConstellationType;
/**
* Satellite vehicle ID number
*
* <p>Interpretation depends on {@link GnssStatus#getSvid(int)}.
*/
private int mSatId;
@IntRange(from = 0)
private final int mSatId;
/**
* Carrier frequency of the signal to be corrected, for example it can be the GPS center
@@ -79,22 +90,25 @@ public final class GnssSingleSatCorrection implements Parcelable {
* values related to L1 will be filled, and in the other all of the values related to L5 will be
* filled.
*/
private float mCarrierFrequencyHz;
@FloatRange(from = 0.0f, fromInclusive = false)
private final float mCarrierFrequencyHz;
/**
* The probability that the satellite is estimated to be in Line-of-Sight condition at the given
* location.
*/
@FloatRange(from = 0f, to = 1f)
private float mProbSatIsLos;
@FloatRange(from = 0.0f, to = 1.0f)
private final float mProbSatIsLos;
/**
* Excess path length to be subtracted from pseudorange before using it in calculating location.
*/
private float mExcessPathLengthMeters;
@FloatRange(from = 0.0f)
private final float mExcessPathLengthMeters;
/** Error estimate (1-sigma) for the Excess path length estimate */
private float mExcessPathLengthUncertaintyMeters;
@FloatRange(from = 0.0f)
private final float mExcessPathLengthUncertaintyMeters;
/**
* Defines the reflecting plane location and azimuth information
@@ -102,7 +116,8 @@ public final class GnssSingleSatCorrection implements Parcelable {
* <p>The flag HAS_REFLECTING_PLANE will be used to set this value to invalid if the satellite
* signal goes through multiple reflections or if reflection plane serving is not supported.
*/
private @Nullable GnssReflectingPlane mReflectingPlane;
@Nullable
private final GnssReflectingPlane mReflectingPlane;
private GnssSingleSatCorrection(Builder builder) {
mSingleSatCorrectionFlags = builder.mSingleSatCorrectionFlags;
@@ -115,7 +130,11 @@ public final class GnssSingleSatCorrection implements Parcelable {
mReflectingPlane = builder.mReflectingPlane;
}
/** Gets a bitmask of fields present in this object */
/**
* Gets a bitmask of fields present in this object
*
* @hide
*/
public int getSingleSatelliteCorrectionFlags() {
return mSingleSatCorrectionFlags;
}
@@ -137,6 +156,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
* <p>Interpretation depends on {@link #getConstellationType()}. See {@link
* GnssStatus#getSvid(int)}.
*/
@IntRange(from = 0)
public int getSatelliteId() {
return mSatId;
}
@@ -154,6 +174,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
*
* @return the carrier frequency of the signal tracked in Hz.
*/
@FloatRange(from = 0.0f, fromInclusive = false)
public float getCarrierFrequencyHz() {
return mCarrierFrequencyHz;
}
@@ -162,7 +183,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
* Returns the probability that the satellite is in line-of-sight condition at the given
* location.
*/
@FloatRange(from = 0f, to = 1f)
@FloatRange(from = 0.0f, to = 1.0f)
public float getProbabilityLineOfSight() {
return mProbSatIsLos;
}
@@ -171,11 +192,13 @@ public final class GnssSingleSatCorrection implements Parcelable {
* Returns the Excess path length to be subtracted from pseudorange before using it in
* calculating location.
*/
@FloatRange(from = 0.0f)
public float getExcessPathLengthMeters() {
return mExcessPathLengthMeters;
}
/** Returns the error estimate (1-sigma) for the Excess path length estimate */
@FloatRange(from = 0.0f)
public float getExcessPathLengthUncertaintyMeters() {
return mExcessPathLengthUncertaintyMeters;
}
@@ -186,7 +209,8 @@ public final class GnssSingleSatCorrection implements Parcelable {
* <p>The flag HAS_REFLECTING_PLANE will be used to set this value to invalid if the satellite
* signal goes through multiple reflections or if reflection plane serving is not supported
*/
public @Nullable GnssReflectingPlane getReflectingPlane() {
@Nullable
public GnssReflectingPlane getReflectingPlane() {
return mReflectingPlane;
}
@@ -215,23 +239,27 @@ public final class GnssSingleSatCorrection implements Parcelable {
return 0;
}
public static final @android.annotation.NonNull Creator<GnssSingleSatCorrection> CREATOR =
public static final Creator<GnssSingleSatCorrection> CREATOR =
new Creator<GnssSingleSatCorrection>() {
@Override
public GnssSingleSatCorrection createFromParcel(Parcel parcel) {
GnssSingleSatCorrection singleSatCorrection =
@NonNull
public GnssSingleSatCorrection createFromParcel(@NonNull Parcel parcel) {
int mSingleSatCorrectionFlags = parcel.readInt();
boolean hasReflectingPlane =
(mSingleSatCorrectionFlags & HAS_REFLECTING_PLANE_MASK) != 0;
final GnssSingleSatCorrection.Builder singleSatCorrectionBuilder =
new Builder()
.setSingleSatelliteCorrectionFlags(parcel.readInt())
.setConstellationType(parcel.readInt())
.setSatelliteId(parcel.readInt())
.setCarrierFrequencyHz(parcel.readFloat())
.setProbabilityLineOfSight(parcel.readFloat())
.setExcessPathLengthMeters(parcel.readFloat())
.setExcessPathLengthUncertaintyMeters(parcel.readFloat())
.setReflectingPlane(
GnssReflectingPlane.CREATOR.createFromParcel(parcel))
.build();
return singleSatCorrection;
.setExcessPathLengthUncertaintyMeters(parcel.readFloat());
if (hasReflectingPlane) {
singleSatCorrectionBuilder.setReflectingPlane(
GnssReflectingPlane.CREATOR.createFromParcel(parcel));
}
return singleSatCorrectionBuilder.build();
}
@Override
@@ -256,12 +284,14 @@ public final class GnssSingleSatCorrection implements Parcelable {
format,
"ExcessPathLengthUncertaintyMeters = ",
mExcessPathLengthUncertaintyMeters));
builder.append(String.format(format, "ReflectingPlane = ", mReflectingPlane));
if (hasReflectingPlane()) {
builder.append(String.format(format, "ReflectingPlane = ", mReflectingPlane));
}
return builder.toString();
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
public void writeToParcel(@NonNull Parcel parcel, int flags) {
parcel.writeInt(mSingleSatCorrectionFlags);
parcel.writeInt(mConstellationType);
parcel.writeInt(mSatId);
@@ -269,7 +299,9 @@ public final class GnssSingleSatCorrection implements Parcelable {
parcel.writeFloat(mProbSatIsLos);
parcel.writeFloat(mExcessPathLengthMeters);
parcel.writeFloat(mExcessPathLengthUncertaintyMeters);
mReflectingPlane.writeToParcel(parcel, flags);
if (hasReflectingPlane()) {
mReflectingPlane.writeToParcel(parcel, flags);
}
}
/** Builder for {@link GnssSingleSatCorrection} */
@@ -287,28 +319,25 @@ public final class GnssSingleSatCorrection implements Parcelable {
private float mProbSatIsLos;
private float mExcessPathLengthMeters;
private float mExcessPathLengthUncertaintyMeters;
@Nullable
private GnssReflectingPlane mReflectingPlane;
/** Sets a bitmask of fields present in this object */
public Builder setSingleSatelliteCorrectionFlags(int singleSatCorrectionFlags) {
mSingleSatCorrectionFlags = singleSatCorrectionFlags;
return this;
}
/** Sets the constellation type. */
public Builder setConstellationType(@GnssStatus.ConstellationType int constellationType) {
@NonNull public Builder setConstellationType(
@GnssStatus.ConstellationType int constellationType) {
mConstellationType = constellationType;
return this;
}
/** Sets the Satellite ID defined in the ICD of the given constellation. */
public Builder setSatelliteId(int satId) {
@NonNull public Builder setSatelliteId(@IntRange(from = 0) int satId) {
mSatId = satId;
return this;
}
/** Sets the Carrier frequency in Hz. */
public Builder setCarrierFrequencyHz(float carrierFrequencyHz) {
@NonNull public Builder setCarrierFrequencyHz(
@FloatRange(from = 0.0f, fromInclusive = false) float carrierFrequencyHz) {
mCarrierFrequencyHz = carrierFrequencyHz;
return this;
}
@@ -317,8 +346,8 @@ public final class GnssSingleSatCorrection implements Parcelable {
* Sets the line-of-sight probability of the satellite at the given location in the range
* between 0 and 1.
*/
public Builder setProbabilityLineOfSight(
@FloatRange(from = 0f, to = 1f) float probSatIsLos) {
@NonNull public Builder setProbabilityLineOfSight(
@FloatRange(from = 0.0f, to = 1.0f) float probSatIsLos) {
Preconditions.checkArgumentInRange(
probSatIsLos, 0, 1, "probSatIsLos should be between 0 and 1.");
mProbSatIsLos = probSatIsLos;
@@ -331,7 +360,8 @@ public final class GnssSingleSatCorrection implements Parcelable {
* Sets the Excess path length to be subtracted from pseudorange before using it in
* calculating location.
*/
public Builder setExcessPathLengthMeters(float excessPathLengthMeters) {
@NonNull public Builder setExcessPathLengthMeters(
@FloatRange(from = 0.0f) float excessPathLengthMeters) {
mExcessPathLengthMeters = excessPathLengthMeters;
mSingleSatCorrectionFlags =
(byte) (mSingleSatCorrectionFlags | HAS_EXCESS_PATH_LENGTH_MASK);
@@ -339,8 +369,8 @@ public final class GnssSingleSatCorrection implements Parcelable {
}
/** Sets the error estimate (1-sigma) for the Excess path length estimate */
public Builder setExcessPathLengthUncertaintyMeters(
float excessPathLengthUncertaintyMeters) {
@NonNull public Builder setExcessPathLengthUncertaintyMeters(
@FloatRange(from = 0.0f) float excessPathLengthUncertaintyMeters) {
mExcessPathLengthUncertaintyMeters = excessPathLengthUncertaintyMeters;
mSingleSatCorrectionFlags =
(byte) (mSingleSatCorrectionFlags | HAS_EXCESS_PATH_LENGTH_UNC_MASK);
@@ -348,15 +378,20 @@ public final class GnssSingleSatCorrection implements Parcelable {
}
/** Sets the reflecting plane information */
public Builder setReflectingPlane(GnssReflectingPlane reflectingPlane) {
@NonNull public Builder setReflectingPlane(@Nullable GnssReflectingPlane reflectingPlane) {
mReflectingPlane = reflectingPlane;
mSingleSatCorrectionFlags =
(byte) (mSingleSatCorrectionFlags | HAS_REFLECTING_PLANE_MASK);
if (reflectingPlane != null) {
mSingleSatCorrectionFlags =
(byte) (mSingleSatCorrectionFlags | HAS_REFLECTING_PLANE_MASK);
} else {
mSingleSatCorrectionFlags =
(byte) (mSingleSatCorrectionFlags & ~HAS_REFLECTING_PLANE_MASK);
}
return this;
}
/** Builds a {@link GnssSingleSatCorrection} instance as specified by this builder. */
public GnssSingleSatCorrection build() {
@NonNull public GnssSingleSatCorrection build() {
return new GnssSingleSatCorrection(this);
}
}

View File

@@ -160,6 +160,8 @@ using IAGnssCallback_V2_0 = android::hardware::gnss::V2_0::IAGnssCallback;
using IMeasurementCorrections =
android::hardware::gnss::measurement_corrections::V1_0::IMeasurementCorrections;
using GnssSingleSatCorrectionFlags =
android::hardware::gnss::measurement_corrections::V1_0::GnssSingleSatCorrectionFlags;
using android::hardware::gnss::visibility_control::V1_0::IGnssVisibilityControl;
using android::hardware::gnss::visibility_control::V1_0::IGnssVisibilityControlCallback;
@@ -199,9 +201,7 @@ sp<IGnssMeasurement_V1_1> gnssMeasurementIface_V1_1 = nullptr;
sp<IGnssMeasurement_V2_0> gnssMeasurementIface_V2_0 = nullptr;
sp<IGnssNavigationMessage> gnssNavigationMessageIface = nullptr;
sp<IMeasurementCorrections> gnssCorrectionsIface = nullptr;
// This boolean is needed to ensure that Gnsss Measurement Corrections related method are only
// initalized when needed which will be few devices initially
bool firstGnssMeasurementCorrectionInjected = false;
sp<IGnssVisibilityControl> gnssVisibilityControlIface = nullptr;
#define WAKE_LOCK_NAME "GPS"
@@ -1471,6 +1471,51 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass
"(Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZ)V");
method_isInEmergencySession = env->GetMethodID(clazz, "isInEmergencySession", "()Z");
jclass measCorrClass = env->FindClass("android/location/GnssMeasurementCorrections");
method_correctionsGetLatitudeDegrees = env->GetMethodID(
measCorrClass,"getLatitudeDegrees", "()D");
method_correctionsGetLongitudeDegrees = env->GetMethodID(
measCorrClass, "getLongitudeDegrees", "()D");
method_correctionsGetAltitudeMeters = env->GetMethodID(
measCorrClass, "getAltitudeMeters", "()D");
method_correctionsGetHorPosUncMeters = env->GetMethodID(
measCorrClass, "getHorizontalPositionUncertaintyMeters", "()D");
method_correctionsGetVerPosUncMeters = env->GetMethodID(
measCorrClass, "getVerticalPositionUncertaintyMeters", "()D");
method_correctionsGetToaGpsNanosecondsOfWeek = env->GetMethodID(
measCorrClass, "getToaGpsNanosecondsOfWeek", "()J");
method_correctionsGetSingleSatCorrectionList = env->GetMethodID(
measCorrClass, "getSingleSatelliteCorrectionList", "()Ljava/util/List;");
jclass corrListClass = env->FindClass("java/util/List");
method_listSize = env->GetMethodID(corrListClass, "size", "()I");
method_correctionListGet = env->GetMethodID(corrListClass, "get", "(I)Ljava/lang/Object;");
jclass singleSatCorrClass = env->FindClass("android/location/GnssSingleSatCorrection");
method_correctionSatFlags = env->GetMethodID(
singleSatCorrClass, "getSingleSatelliteCorrectionFlags", "()I");
method_correctionSatConstType = env->GetMethodID(
singleSatCorrClass, "getConstellationType", "()I");
method_correctionSatId= env->GetMethodID(
singleSatCorrClass, "getSatelliteId", "()I");
method_correctionSatCarrierFreq = env->GetMethodID(
singleSatCorrClass, "getCarrierFrequencyHz", "()F");
method_correctionSatIsLosProb = env->GetMethodID(
singleSatCorrClass,"getProbabilityLineOfSight", "()F");
method_correctionSatEpl = env->GetMethodID(
singleSatCorrClass, "getExcessPathLengthMeters", "()F");
method_correctionSatEplUnc = env->GetMethodID(
singleSatCorrClass, "getExcessPathLengthUncertaintyMeters", "()F");
method_correctionSatRefPlane = env->GetMethodID(
singleSatCorrClass, "getReflectingPlane", "()Landroid/location/GnssReflectingPlane;");
jclass refPlaneClass = env->FindClass("android/location/GnssReflectingPlane");
method_correctionPlaneLatDeg = env->GetMethodID(refPlaneClass, "getLatitudeDegrees", "()D");
method_correctionPlaneLngDeg = env->GetMethodID(refPlaneClass, "getLongitudeDegrees", "()D");
method_correctionPlaneAltDeg = env->GetMethodID(refPlaneClass, "getAltitudeMeters", "()D");
method_correctionPlaneAzimDeg = env->GetMethodID(refPlaneClass, "getAzimuthDegrees", "()D");
/*
* Save a pointer to JVM.
*/
@@ -2341,29 +2386,6 @@ static jboolean android_location_GnssMeasurementsProvider_inject_gnss_measuremen
ALOGW("Trying to inject GNSS corrections on a chipset that does not support them.");
return JNI_FALSE;
}
if (firstGnssMeasurementCorrectionInjected == false) {
jclass measCorrClass = env->GetObjectClass(correctionsObj);
method_correctionsGetLatitudeDegrees = env->GetMethodID(
measCorrClass,"getLatitudeDegrees", "()D");
method_correctionsGetLongitudeDegrees = env->GetMethodID(
measCorrClass, "getLongitudeDegrees", "()D");
method_correctionsGetAltitudeMeters = env->GetMethodID(
measCorrClass, "getAltitudeMeters", "()D");
method_correctionsGetHorPosUncMeters = env->GetMethodID(
measCorrClass, "getHorizontalPositionUncertaintyMeters", "()D");
method_correctionsGetVerPosUncMeters = env->GetMethodID(
measCorrClass, "getVerticalPositionUncertaintyMeters", "()D");
method_correctionsGetToaGpsNanosecondsOfWeek = env->GetMethodID(
measCorrClass, "getToaGpsNanosecondsOfWeek", "()J");
method_correctionsGetSingleSatCorrectionList = env->GetMethodID(
measCorrClass, "getSingleSatelliteCorrectionList", "()Ljava.util.List;");
}
jdouble latitudeDegreesCorr = env->CallDoubleMethod(
correctionsObj, method_correctionsGetLatitudeDegrees);
@@ -2380,42 +2402,18 @@ static jboolean android_location_GnssMeasurementsProvider_inject_gnss_measuremen
jobject singleSatCorrectionList = env->CallObjectMethod(correctionsObj,
method_correctionsGetSingleSatCorrectionList);
if (firstGnssMeasurementCorrectionInjected == false) {
jclass corrListClass = env->GetObjectClass(singleSatCorrectionList);
method_listSize = env->GetMethodID(corrListClass, "size", "()I");
method_correctionListGet = env->GetMethodID(
corrListClass, "get", "(I)Landroid/location/GnssSingleSatCorrection;");
}
auto len = (singleSatCorrectionList == nullptr)
? 0
: env->CallIntMethod(singleSatCorrectionList, method_listSize);
if (len == 0) {
ALOGI("Empty correction list injected....Returning with no HAL injection");
return JNI_TRUE;
}
hidl_vec<SingleSatCorrection> list(len);
for (uint16_t i = 0; i < len; ++i) {
jobject singleSatCorrectionObj = env->CallObjectMethod(
singleSatCorrectionList, method_correctionListGet, i);
if (firstGnssMeasurementCorrectionInjected == false) {
jclass singleSatCorrClass = env->GetObjectClass(singleSatCorrectionObj);
method_correctionSatFlags = env->GetMethodID(
singleSatCorrClass, "getSingleSatelliteCorrectionFlags", "()I");
method_correctionSatConstType = env->GetMethodID(
singleSatCorrClass, "getConstellationType", "()I");
method_correctionSatId= env->GetMethodID(
singleSatCorrClass, "getSatelliteId", "()I");
method_correctionSatCarrierFreq = env->GetMethodID(
singleSatCorrClass, "getCarrierFrequencyHz", "()F");
method_correctionSatIsLosProb = env->GetMethodID(
singleSatCorrClass,"getProbabilityLineOfSight", "()F");
method_correctionSatEpl = env->GetMethodID(
singleSatCorrClass, "getExcessPathLengthMeters", "()F");
method_correctionSatEplUnc = env->GetMethodID(
singleSatCorrClass, "getExcessPathLengthUncertaintyMeters", "()F");
method_correctionSatRefPlane = env->GetMethodID(
singleSatCorrClass, "getReflectingPlane",
"()Landroid/location/GnssReflectingPlane;");
}
singleSatCorrectionList, method_correctionListGet, i);
jint correctionFlags =
env->CallIntMethod(singleSatCorrectionObj, method_correctionSatFlags);
@@ -2431,38 +2429,34 @@ static jboolean android_location_GnssMeasurementsProvider_inject_gnss_measuremen
env->CallFloatMethod(singleSatCorrectionObj, method_correctionSatEpl);
jfloat eplUncMeters = env->CallFloatMethod(singleSatCorrectionObj,
method_correctionSatEplUnc);
jobject reflectingPlaneObj = env->CallObjectMethod(
singleSatCorrectionObj, method_correctionSatRefPlane);
if (firstGnssMeasurementCorrectionInjected == false) {
jclass refPlaneClass = env->GetObjectClass(reflectingPlaneObj);
method_correctionPlaneLatDeg = env->GetMethodID(
refPlaneClass, "getLatitudeDegrees", "()D");
method_correctionPlaneLngDeg = env->GetMethodID(
refPlaneClass, "getLongitudeDegrees", "()D");
method_correctionPlaneAltDeg = env->GetMethodID(
refPlaneClass, "getAltitudeMeters", "()D");
method_correctionPlaneAzimDeg = env->GetMethodID(
refPlaneClass, "getAzimuthDegrees", "()D");
uint16_t corrFlags = static_cast<uint16_t>(correctionFlags);
jobject reflectingPlaneObj;
bool has_ref_plane = (corrFlags & GnssSingleSatCorrectionFlags::HAS_REFLECTING_PLANE) != 0;
if (has_ref_plane) {
reflectingPlaneObj = env->CallObjectMethod(
singleSatCorrectionObj, method_correctionSatRefPlane);
}
jdouble latitudeDegreesRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneLatDeg);
jdouble longitudeDegreesRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneLngDeg);
jdouble altitudeDegreesRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneAltDeg);
jdouble azimuthDegreeRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneAzimDeg);
ReflectingPlane reflectingPlane = {
.latitudeDegrees = latitudeDegreesRefPlane,
.longitudeDegrees = longitudeDegreesRefPlane,
.altitudeMeters = altitudeDegreesRefPlane,
.azimuthDegrees = azimuthDegreeRefPlane,
};
ReflectingPlane reflectingPlane;
if (has_ref_plane) {
jdouble latitudeDegreesRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneLatDeg);
jdouble longitudeDegreesRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneLngDeg);
jdouble altitudeDegreesRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneAltDeg);
jdouble azimuthDegreeRefPlane = env->CallDoubleMethod(
reflectingPlaneObj, method_correctionPlaneAzimDeg);
reflectingPlane = {
.latitudeDegrees = latitudeDegreesRefPlane,
.longitudeDegrees = longitudeDegreesRefPlane,
.altitudeMeters = altitudeDegreesRefPlane,
.azimuthDegrees = azimuthDegreeRefPlane,
};
}
SingleSatCorrection singleSatCorrection = {
.singleSatCorrectionFlags = static_cast<uint16_t>(correctionFlags),
.singleSatCorrectionFlags = corrFlags,
.constellation = static_cast<GnssConstellationType>(constType),
.svid = static_cast<uint16_t>(satId),
.carrierFrequencyHz = carrierFreqHz,
@@ -2484,7 +2478,6 @@ static jboolean android_location_GnssMeasurementsProvider_inject_gnss_measuremen
};
gnssCorrectionsIface->setCorrections(measurementCorrections);
firstGnssMeasurementCorrectionInjected = true;
return JNI_TRUE;
}