Merge "Update jni with measurement_corrections 1.1"

This commit is contained in:
Sasha Kuznetsov
2020-01-25 23:31:42 +00:00
committed by Android (Google) Code Review
3 changed files with 182 additions and 25 deletions

View File

@@ -79,6 +79,25 @@ public final class GnssMeasurementCorrections implements Parcelable {
@NonNull
private final List<GnssSingleSatCorrection> mSingleSatCorrectionList;
/**
* Indicates whether the environment bearing is available.
*/
private final boolean mHasEnvironmentBearing;
/**
* Environment bearing in degrees clockwise from true north, in the direction of user motion.
* Environment bearing is provided when it is known with high probability that velocity is
* aligned with an environment feature (such as edge of a building, or road).
*/
@FloatRange(from = 0.0f, to = 360.0f)
private final float mEnvironmentBearingDegrees;
/**
* Environment bearing uncertainty in degrees.
*/
@FloatRange(from = 0.0f, to = 180.0f)
private final float mEnvironmentBearingUncertaintyDegrees;
private GnssMeasurementCorrections(Builder builder) {
mLatitudeDegrees = builder.mLatitudeDegrees;
mLongitudeDegrees = builder.mLongitudeDegrees;
@@ -89,6 +108,10 @@ public final class GnssMeasurementCorrections implements Parcelable {
final List<GnssSingleSatCorrection> singleSatCorrList = builder.mSingleSatCorrectionList;
Preconditions.checkArgument(singleSatCorrList != null && !singleSatCorrList.isEmpty());
mSingleSatCorrectionList = Collections.unmodifiableList(new ArrayList<>(singleSatCorrList));
mHasEnvironmentBearing = builder.mEnvironmentBearingIsSet
&& builder.mEnvironmentBearingUncertaintyIsSet;
mEnvironmentBearingDegrees = builder.mEnvironmentBearingDegrees;
mEnvironmentBearingUncertaintyDegrees = builder.mEnvironmentBearingUncertaintyDegrees;
}
/** Gets the latitude in degrees at which the corrections are computed. */
@@ -145,6 +168,31 @@ public final class GnssMeasurementCorrections implements Parcelable {
return mSingleSatCorrectionList;
}
/**
* If true, environment bearing will be available.
*/
public boolean hasEnvironmentBearing() {
return mHasEnvironmentBearing;
}
/**
* Gets the environment bearing in degrees clockwise from true north, in the direction of user
* motion. Environment bearing is provided when it is known with high probability that
* velocity is aligned with an environment feature (such as edge of a building, or road).
*/
@FloatRange(from = 0.0f, to = 360.0f)
public float getEnvironmentBearingDegrees() {
return mEnvironmentBearingDegrees;
}
/**
* Gets the environment bearing uncertainty in degrees.
*/
@FloatRange(from = 0.0f, to = 180.0f)
public float getEnvironmentBearingUncertaintyDegrees() {
return mEnvironmentBearingUncertaintyDegrees;
}
@Override
public int describeContents() {
return 0;
@@ -167,6 +215,12 @@ public final class GnssMeasurementCorrections implements Parcelable {
parcel.readTypedList(singleSatCorrectionList, GnssSingleSatCorrection.CREATOR);
gnssMeasurementCorrectons.setSingleSatelliteCorrectionList(
singleSatCorrectionList);
boolean hasEnvironmentBearing = parcel.readBoolean();
if (hasEnvironmentBearing) {
gnssMeasurementCorrectons.setEnvironmentBearingDegrees(parcel.readFloat());
gnssMeasurementCorrectons.setEnvironmentBearingUncertaintyDegrees(
parcel.readFloat());
}
return gnssMeasurementCorrectons.build();
}
@@ -192,6 +246,14 @@ public final class GnssMeasurementCorrections implements Parcelable {
String.format(format, "ToaGpsNanosecondsOfWeek = ", mToaGpsNanosecondsOfWeek));
builder.append(
String.format(format, "mSingleSatCorrectionList = ", mSingleSatCorrectionList));
builder.append(
String.format(format, "HasEnvironmentBearing = ", mHasEnvironmentBearing));
builder.append(
String.format(format, "EnvironmentBearingDegrees = ",
mEnvironmentBearingDegrees));
builder.append(
String.format(format, "EnvironmentBearingUncertaintyDegrees = ",
mEnvironmentBearingUncertaintyDegrees));
return builder.toString();
}
@@ -204,6 +266,11 @@ public final class GnssMeasurementCorrections implements Parcelable {
parcel.writeDouble(mVerticalPositionUncertaintyMeters);
parcel.writeLong(mToaGpsNanosecondsOfWeek);
parcel.writeTypedList(mSingleSatCorrectionList);
parcel.writeBoolean(mHasEnvironmentBearing);
if (mHasEnvironmentBearing) {
parcel.writeFloat(mEnvironmentBearingDegrees);
parcel.writeFloat(mEnvironmentBearingUncertaintyDegrees);
}
}
/** Builder for {@link GnssMeasurementCorrections} */
@@ -219,6 +286,10 @@ public final class GnssMeasurementCorrections implements Parcelable {
private double mVerticalPositionUncertaintyMeters;
private long mToaGpsNanosecondsOfWeek;
@Nullable private List<GnssSingleSatCorrection> mSingleSatCorrectionList;
private float mEnvironmentBearingDegrees;
private boolean mEnvironmentBearingIsSet = false;
private float mEnvironmentBearingUncertaintyDegrees;
private boolean mEnvironmentBearingUncertaintyIsSet = false;
/** Sets the latitude in degrees at which the corrections are computed. */
@NonNull public Builder setLatitudeDegrees(
@@ -282,8 +353,37 @@ public final class GnssMeasurementCorrections implements Parcelable {
return this;
}
/**
* Sets the environment bearing in degrees clockwise from true north, in the direction of
* user motion. Environment bearing is provided when it is known with high probability
* that velocity is aligned with an environment feature (such as edge of a building, or
* road).
*/
@NonNull public Builder setEnvironmentBearingDegrees(
@FloatRange(from = 0.0f, to = 360.0f)
float environmentBearingDegrees) {
mEnvironmentBearingDegrees = environmentBearingDegrees;
mEnvironmentBearingIsSet = true;
return this;
}
/**
* Sets the environment bearing uncertainty in degrees.
*/
@NonNull public Builder setEnvironmentBearingUncertaintyDegrees(
@FloatRange(from = 0.0f, to = 180.0f)
float environmentBearingUncertaintyDegrees) {
mEnvironmentBearingUncertaintyDegrees = environmentBearingUncertaintyDegrees;
mEnvironmentBearingUncertaintyIsSet = true;
return this;
}
/** Builds a {@link GnssMeasurementCorrections} instance as specified by this builder. */
@NonNull public GnssMeasurementCorrections build() {
if (mEnvironmentBearingIsSet ^ mEnvironmentBearingUncertaintyIsSet) {
throw new IllegalStateException("Both environment bearing and environment bearing "
+ "uncertainty must be set.");
}
return new GnssMeasurementCorrections(this);
}
}