Bluesky change LOS from bool to float prob

Change the field indicating that the GNSS satellite is line of sight
or not from boolean to a float representing hte probability of being
line of sight.

Bug: 111441283
Test: Existing tests pass.
Change-Id: I746d7b16dcbb7c8968163f512a70aac7511402b6
This commit is contained in:
gomo
2019-01-17 04:02:53 -08:00
parent 2b8e3132f5
commit b4635ba90d
5 changed files with 47 additions and 32 deletions

View File

@@ -2899,6 +2899,7 @@ package android.location {
method public int getConstellationType();
method public float getExcessPathLengthMeters();
method public float getExcessPathLengthUncertaintyMeters();
method public float getProbSatIsLos();
method public android.location.GnssReflectingPlane getReflectingPlane();
method public int getSatId();
method public int getSingleSatCorrectionFlags();
@@ -2906,13 +2907,12 @@ package android.location {
method public boolean hasExcessPathLengthUncertainty();
method public boolean hasReflectingPlane();
method public boolean hasSatelliteLineOfSight();
method public boolean isSatelliteLineOfSight();
method public void writeToParcel(android.os.Parcel, int);
field 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
field public static final int HAS_SAT_IS_LOS_MASK = 1; // 0x1
}
public static class GnssSingleSatCorrection.Builder {
@@ -2922,9 +2922,9 @@ package android.location {
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 setProbSatIsLos(float);
method public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(android.location.GnssReflectingPlane);
method public android.location.GnssSingleSatCorrection.Builder setSatId(int);
method public android.location.GnssSingleSatCorrection.Builder setSatIsLos(boolean);
method public android.location.GnssSingleSatCorrection.Builder setSingleSatCorrectionFlags(int);
}

View File

@@ -16,11 +16,14 @@
package android.location;
import android.annotation.FloatRange;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.util.Preconditions;
/**
* A container with measurement corrections for a single visible satellite
*
@@ -31,9 +34,9 @@ public final class GnssSingleSatCorrection implements Parcelable {
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
* #mSatIsLos}.
* #mProbSatIsLos}.
*/
public static final int HAS_SAT_IS_LOS_MASK = 1 << 0;
public static final int HAS_PROB_SAT_IS_LOS_MASK = 1 << 0;
/**
* Bit mask for {@link #mSingleSatCorrectionFlags} indicating the presence of {@link
@@ -78,9 +81,11 @@ public final class GnssSingleSatCorrection implements Parcelable {
private float mCarrierFrequencyHz;
/**
* True if the satellite is estimated to be in Line-of-Sight condition at the given location.
* The probability that the satellite is estimated to be in Line-of-Sight condition at the given
* location.
*/
private boolean mSatIsLos;
@FloatRange(from = 0f, to = 1f)
private float mProbSatIsLos;
/**
* Excess path length to be subtracted from pseudorange before using it in calculating location.
@@ -103,7 +108,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
mSatId = builder.mSatId;
mConstellationType = builder.mConstellationType;
mCarrierFrequencyHz = builder.mCarrierFrequencyHz;
mSatIsLos = builder.mSatIsLos;
mProbSatIsLos = builder.mProbSatIsLos;
mExcessPathLengthMeters = builder.mExcessPathLengthMeters;
mExcessPathLengthUncertaintyMeters = builder.mExcessPathLengthUncertaintyMeters;
mReflectingPlane = builder.mReflectingPlane;
@@ -152,9 +157,13 @@ public final class GnssSingleSatCorrection implements Parcelable {
return mCarrierFrequencyHz;
}
/** True if the satellite is line-of-sight */
public boolean isSatelliteLineOfSight() {
return mSatIsLos;
/**
* Returns the probability that the satellite is in line-of-sight condition at the given
* location.
*/
@FloatRange(from = 0f, to = 1f)
public float getProbSatIsLos() {
return mProbSatIsLos;
}
/**
@@ -180,9 +189,9 @@ public final class GnssSingleSatCorrection implements Parcelable {
return mReflectingPlane;
}
/** Returns {@code true} if {@link #isSatelliteLineOfSight()} is valid. */
/** Returns {@code true} if {@link #getProbSatIsLos()} is valid. */
public boolean hasSatelliteLineOfSight() {
return (mSingleSatCorrectionFlags & HAS_SAT_IS_LOS_MASK) != 0;
return (mSingleSatCorrectionFlags & HAS_PROB_SAT_IS_LOS_MASK) != 0;
}
/** Returns {@code true} if {@link #getExcessPathLengthMeters()} is valid. */
@@ -215,7 +224,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
.setConstellationType(parcel.readInt())
.setSatId(parcel.readInt())
.setCarrierFrequencyHz(parcel.readFloat())
.setSatIsLos(parcel.readBoolean())
.setProbSatIsLos(parcel.readFloat())
.setExcessPathLengthMeters(parcel.readFloat())
.setExcessPathLengthUncertaintyMeters(parcel.readFloat())
.setReflectingPlane(
@@ -239,7 +248,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
builder.append(String.format(format, "ConstellationType = ", mConstellationType));
builder.append(String.format(format, "SatId = ", mSatId));
builder.append(String.format(format, "CarrierFrequencyHz = ", mCarrierFrequencyHz));
builder.append(String.format(format, "SatIsLos = ", mSatIsLos));
builder.append(String.format(format, "ProbSatIsLos = ", mProbSatIsLos));
builder.append(String.format(format, "ExcessPathLengthMeters = ", mExcessPathLengthMeters));
builder.append(
String.format(
@@ -256,7 +265,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
parcel.writeInt(mConstellationType);
parcel.writeInt(mSatId);
parcel.writeFloat(mCarrierFrequencyHz);
parcel.writeBoolean(mSatIsLos);
parcel.writeFloat(mProbSatIsLos);
parcel.writeFloat(mExcessPathLengthMeters);
parcel.writeFloat(mExcessPathLengthUncertaintyMeters);
mReflectingPlane.writeToParcel(parcel, flags);
@@ -274,7 +283,7 @@ public final class GnssSingleSatCorrection implements Parcelable {
private int mConstellationType;
private int mSatId;
private float mCarrierFrequencyHz;
private boolean mSatIsLos;
private float mProbSatIsLos;
private float mExcessPathLengthMeters;
private float mExcessPathLengthUncertaintyMeters;
private GnssReflectingPlane mReflectingPlane;
@@ -303,10 +312,16 @@ public final class GnssSingleSatCorrection implements Parcelable {
return this;
}
/** Sets the line=of-sight state of the satellite */
public Builder setSatIsLos(boolean satIsLos) {
mSatIsLos = satIsLos;
mSingleSatCorrectionFlags = (byte) (mSingleSatCorrectionFlags | HAS_SAT_IS_LOS_MASK);
/**
* Sets the line-of-sight probability of the satellite at the given location in the range
* between 0 and 1.
*/
public Builder setProbSatIsLos(@FloatRange(from = 0f, to = 1f) float probSatIsLos) {
Preconditions.checkArgumentInRange(probSatIsLos, 0, 1,
"probSatIsLos should be between 0 and 1.");
mProbSatIsLos = probSatIsLos;
mSingleSatCorrectionFlags =
(byte) (mSingleSatCorrectionFlags | HAS_PROB_SAT_IS_LOS_MASK);
return this;
}

View File

@@ -59,7 +59,7 @@ public class GnssMeasurementCorrectionsTest extends TestCase {
assertEquals(GnssStatus.CONSTELLATION_GPS, singleSatCorrection.getConstellationType());
assertEquals(11, singleSatCorrection.getSatId());
assertEquals(1575430000f, singleSatCorrection.getCarrierFrequencyHz());
assertEquals(false, singleSatCorrection.isSatelliteLineOfSight());
assertEquals(0.9f, singleSatCorrection.getProbSatIsLos());
assertEquals(50.0f, singleSatCorrection.getExcessPathLengthMeters());
assertEquals(55.0f, singleSatCorrection.getExcessPathLengthUncertaintyMeters());
GnssReflectingPlane reflectingPlane = singleSatCorrection.getReflectingPlane();
@@ -88,7 +88,7 @@ public class GnssMeasurementCorrectionsTest extends TestCase {
.setConstellationType(GnssStatus.CONSTELLATION_GPS)
.setSatId(11)
.setCarrierFrequencyHz(1575430000f)
.setSatIsLos(false)
.setProbSatIsLos(0.9f)
.setExcessPathLengthMeters(50.0f)
.setExcessPathLengthUncertaintyMeters(55.0f)
.setReflectingPlane(generateTestReflectingPlane());

View File

@@ -44,7 +44,7 @@ public class GnssSingleSatCorrectionsTest extends TestCase {
assertEquals(GnssStatus.CONSTELLATION_GALILEO, singleSatCorrection.getConstellationType());
assertEquals(12, singleSatCorrection.getSatId());
assertEquals(1575420000f, singleSatCorrection.getCarrierFrequencyHz());
assertEquals(true, singleSatCorrection.isSatelliteLineOfSight());
assertEquals(0.1f, singleSatCorrection.getProbSatIsLos());
assertEquals(10.0f, singleSatCorrection.getExcessPathLengthMeters());
assertEquals(5.0f, singleSatCorrection.getExcessPathLengthUncertaintyMeters());
GnssReflectingPlane reflectingPlane = singleSatCorrection.getReflectingPlane();
@@ -58,7 +58,7 @@ public class GnssSingleSatCorrectionsTest extends TestCase {
.setConstellationType(singleSatCorr.getConstellationType())
.setSatId(singleSatCorr.getSatId())
.setCarrierFrequencyHz(singleSatCorr.getCarrierFrequencyHz())
.setSatIsLos(singleSatCorr.isSatelliteLineOfSight())
.setProbSatIsLos(singleSatCorr.getProbSatIsLos())
.setExcessPathLengthMeters(singleSatCorr.getExcessPathLengthMeters())
.setExcessPathLengthUncertaintyMeters(
singleSatCorr.getExcessPathLengthUncertaintyMeters())
@@ -72,7 +72,7 @@ public class GnssSingleSatCorrectionsTest extends TestCase {
.setConstellationType(GnssStatus.CONSTELLATION_GALILEO)
.setSatId(12)
.setCarrierFrequencyHz(1575420000f)
.setSatIsLos(true)
.setProbSatIsLos(0.1f)
.setExcessPathLengthMeters(10.0f)
.setExcessPathLengthUncertaintyMeters(5.0f)
.setReflectingPlane(GnssReflectingPlaneTest.generateTestReflectingPlane());

View File

@@ -81,7 +81,7 @@ static jmethodID method_correctionSatFlags;
static jmethodID method_correctionSatConstType;
static jmethodID method_correctionSatId;
static jmethodID method_correctionSatCarrierFreq;
static jmethodID method_correctionSatIsLos;
static jmethodID method_correctionSatIsLosProb;
static jmethodID method_correctionSatEpl;
static jmethodID method_correctionSatEplUnc;
static jmethodID method_correctionSatRefPlane;
@@ -2277,8 +2277,8 @@ static jboolean android_location_GnssMeasurementsProvider_inject_gnss_measuremen
singleSatCorrClass, "getSatId", "()I");
method_correctionSatCarrierFreq = env->GetMethodID(
singleSatCorrClass, "getCarrierFrequencyHz", "()F");
method_correctionSatIsLos = env->GetMethodID(
singleSatCorrClass,"getSatIsLos", "()Z");
method_correctionSatIsLosProb = env->GetMethodID(
singleSatCorrClass,"getProbSatIsLos", "()F");
method_correctionSatEpl = env->GetMethodID(
singleSatCorrClass, "getExcessPathLengthMeters", "()F");
method_correctionSatEplUnc = env->GetMethodID(
@@ -2296,8 +2296,8 @@ static jboolean android_location_GnssMeasurementsProvider_inject_gnss_measuremen
env->CallIntMethod(singleSatCorrectionObj, method_correctionSatId);
jfloat carrierFreqHz = env->CallFloatMethod(
singleSatCorrectionObj, method_correctionSatCarrierFreq);
jboolean satIsLos = env->CallBooleanMethod(singleSatCorrectionObj,
method_correctionSatIsLos);
jfloat probSatIsLos = env->CallFloatMethod(singleSatCorrectionObj,
method_correctionSatIsLosProb);
jfloat eplMeters =
env->CallFloatMethod(singleSatCorrectionObj, method_correctionSatEpl);
jfloat eplUncMeters = env->CallFloatMethod(singleSatCorrectionObj,
@@ -2337,7 +2337,7 @@ static jboolean android_location_GnssMeasurementsProvider_inject_gnss_measuremen
.constellation = static_cast<GnssConstellationType>(constType),
.svid = static_cast<uint16_t>(satId),
.carrierFrequencyHz = carrierFreqHz,
.satIsLos = static_cast<bool>(satIsLos),
.probSatIsLos = probSatIsLos,
.excessPathLengthMeters = eplMeters,
.excessPathLengthUncertaintyMeters = eplUncMeters,
.reflectingPlane = reflectingPlane,