summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Huang <joethhuang@google.com>2021-05-21 17:46:09 +0800
committerJoe Huang <joethhuang@google.com>2021-05-22 02:02:53 +0800
commit8945fbb3a19f541b65abdacca773994871aaceb1 (patch)
treef1058b76f2990021e13850bdbd4d950ca10f50b9
parentea1518faf14a57b58da5f0648810b26b770e638b (diff)
SatellitePvt API council review
Remove getFlags/setFlags, determining the flag in Java side Bug: 188798284 Test: atest CtsLocationPrivilegedTestCases, also try setting different flags in HAL to see if CTS can be passed. Change-Id: I231148b62404ee4873da60546eebb75d83fae9a7
-rw-r--r--core/api/system-current.txt6
-rw-r--r--location/java/android/location/SatellitePvt.java36
-rw-r--r--services/core/jni/gnss/GnssMeasurementCallback.cpp41
3 files changed, 36 insertions, 47 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index e28ac6ea9146..498afa144af9 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -5003,7 +5003,6 @@ package android.location {
public final class SatellitePvt implements android.os.Parcelable {
method public int describeContents();
method @Nullable public android.location.SatellitePvt.ClockInfo getClockInfo();
- method public int getFlags();
method @FloatRange public double getIonoDelayMeters();
method @Nullable public android.location.SatellitePvt.PositionEcef getPositionEcef();
method @FloatRange public double getTropoDelayMeters();
@@ -5019,10 +5018,9 @@ package android.location {
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 setFlags(int);
- method @NonNull public android.location.SatellitePvt.Builder setIonoDelayMeters(@FloatRange double);
+ method @NonNull public android.location.SatellitePvt.Builder setIonoDelayMeters(@FloatRange(from=0.0f, to=100.0f) 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 setTropoDelayMeters(@FloatRange(from=0.0f, to=100.0f) double);
method @NonNull public android.location.SatellitePvt.Builder setVelocityEcef(@NonNull android.location.SatellitePvt.VelocityEcef);
}
diff --git a/location/java/android/location/SatellitePvt.java b/location/java/android/location/SatellitePvt.java
index bb9ae6e661ef..794a8d0731f9 100644
--- a/location/java/android/location/SatellitePvt.java
+++ b/location/java/android/location/SatellitePvt.java
@@ -399,13 +399,6 @@ public final class SatellitePvt implements Parcelable {
}
/**
- * Gets a bitmask of fields present in this object
- */
- public int getFlags() {
- return mFlags;
- }
-
- /**
* Returns a {@link PositionEcef} object that contains estimates of the satellite
* position fields in ECEF coordinate frame.
*/
@@ -536,18 +529,6 @@ public final class SatellitePvt implements Parcelable {
private double mTropoDelayMeters;
/**
- * Sets a bitmask of fields present in this object
- *
- * @param flags int flags
- * @return Builder builder object
- */
- @NonNull
- public Builder setFlags(int flags) {
- mFlags = flags;
- return this;
- }
-
- /**
* Set position ECEF.
*
* @param positionEcef position ECEF object
@@ -557,6 +538,7 @@ public final class SatellitePvt implements Parcelable {
public Builder setPositionEcef(
@NonNull PositionEcef positionEcef) {
mPositionEcef = positionEcef;
+ updateFlags();
return this;
}
@@ -570,6 +552,7 @@ public final class SatellitePvt implements Parcelable {
public Builder setVelocityEcef(
@NonNull VelocityEcef velocityEcef) {
mVelocityEcef = velocityEcef;
+ updateFlags();
return this;
}
@@ -583,9 +566,16 @@ public final class SatellitePvt implements Parcelable {
public Builder setClockInfo(
@NonNull ClockInfo clockInfo) {
mClockInfo = clockInfo;
+ updateFlags();
return this;
}
+ private void updateFlags() {
+ if (mPositionEcef != null && mVelocityEcef != null && mClockInfo != null) {
+ mFlags = (byte) (mFlags | HAS_POSITION_VELOCITY_CLOCK_INFO);
+ }
+ }
+
/**
* Set ionospheric delay in meters.
*
@@ -593,8 +583,10 @@ public final class SatellitePvt implements Parcelable {
* @return Builder builder object
*/
@NonNull
- public Builder setIonoDelayMeters(@FloatRange() double ionoDelayMeters) {
+ public Builder setIonoDelayMeters(
+ @FloatRange(from = 0.0f, to = 100.0f) double ionoDelayMeters) {
mIonoDelayMeters = ionoDelayMeters;
+ mFlags = (byte) (mFlags | HAS_IONO);
return this;
}
@@ -605,8 +597,10 @@ public final class SatellitePvt implements Parcelable {
* @return Builder builder object
*/
@NonNull
- public Builder setTropoDelayMeters(@FloatRange() double tropoDelayMeters) {
+ public Builder setTropoDelayMeters(
+ @FloatRange(from = 0.0f, to = 100.0f) double tropoDelayMeters) {
mTropoDelayMeters = tropoDelayMeters;
+ mFlags = (byte) (mFlags | HAS_TROPO);
return this;
}
diff --git a/services/core/jni/gnss/GnssMeasurementCallback.cpp b/services/core/jni/gnss/GnssMeasurementCallback.cpp
index dd9a52578477..8c6c673fb5b2 100644
--- a/services/core/jni/gnss/GnssMeasurementCallback.cpp
+++ b/services/core/jni/gnss/GnssMeasurementCallback.cpp
@@ -54,7 +54,6 @@ jmethodID method_gnssMeasurementCtor;
jmethodID method_reportMeasurementData;
jmethodID method_satellitePvtBuilderBuild;
jmethodID method_satellitePvtBuilderCtor;
-jmethodID method_satellitePvtBuilderSetFlags;
jmethodID method_satellitePvtBuilderSetPositionEcef;
jmethodID method_satellitePvtBuilderSetVelocityEcef;
jmethodID method_satellitePvtBuilderSetClockInfo;
@@ -90,9 +89,6 @@ void GnssMeasurement_class_init_once(JNIEnv* env, jclass& clazz) {
jclass satellitePvtBuilder = env->FindClass("android/location/SatellitePvt$Builder");
class_satellitePvtBuilder = (jclass)env->NewGlobalRef(satellitePvtBuilder);
method_satellitePvtBuilderCtor = env->GetMethodID(class_satellitePvtBuilder, "<init>", "()V");
- method_satellitePvtBuilderSetFlags =
- env->GetMethodID(class_satellitePvtBuilder, "setFlags",
- "(I)Landroid/location/SatellitePvt$Builder;");
method_satellitePvtBuilderSetPositionEcef =
env->GetMethodID(class_satellitePvtBuilder, "setPositionEcef",
"(Landroid/location/SatellitePvt$PositionEcef;)"
@@ -321,6 +317,8 @@ void GnssMeasurementCallbackAidl::translateSingleGnssMeasurement(JNIEnv* env,
jobject positionEcef = nullptr;
jobject velocityEcef = nullptr;
jobject clockInfo = nullptr;
+ jobject satellitePvtBuilderObject =
+ env->NewObject(class_satellitePvtBuilder, method_satellitePvtBuilderCtor);
if (satFlags & SatellitePvt::HAS_POSITION_VELOCITY_CLOCK_INFO) {
positionEcef = env->NewObject(class_positionEcef, method_positionEcef,
@@ -337,31 +335,30 @@ void GnssMeasurementCallbackAidl::translateSingleGnssMeasurement(JNIEnv* env,
satellitePvt.satClockInfo.satHardwareCodeBiasMeters,
satellitePvt.satClockInfo.satTimeCorrectionMeters,
satellitePvt.satClockInfo.satClkDriftMps);
+ env->CallObjectMethod(satellitePvtBuilderObject,
+ method_satellitePvtBuilderSetPositionEcef, positionEcef);
+ env->CallObjectMethod(satellitePvtBuilderObject,
+ method_satellitePvtBuilderSetVelocityEcef, velocityEcef);
+ env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderSetClockInfo,
+ clockInfo);
}
- jobject satellitePvtBuilderObject =
- env->NewObject(class_satellitePvtBuilder, method_satellitePvtBuilderCtor);
+ if (satFlags & SatellitePvt::HAS_IONO) {
+ env->CallObjectMethod(satellitePvtBuilderObject,
+ method_satellitePvtBuilderSetIonoDelayMeters,
+ satellitePvt.ionoDelayMeters);
+ }
+
+ if (satFlags & SatellitePvt::HAS_TROPO) {
+ env->CallObjectMethod(satellitePvtBuilderObject,
+ method_satellitePvtBuilderSetTropoDelayMeters,
+ satellitePvt.tropoDelayMeters);
+ }
- env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderSetFlags,
- satellitePvt.flags);
- env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderSetPositionEcef,
- positionEcef);
- env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderSetVelocityEcef,
- velocityEcef);
- env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderSetClockInfo,
- clockInfo);
- env->CallObjectMethod(satellitePvtBuilderObject,
- method_satellitePvtBuilderSetIonoDelayMeters,
- satellitePvt.ionoDelayMeters);
- env->CallObjectMethod(satellitePvtBuilderObject,
- method_satellitePvtBuilderSetTropoDelayMeters,
- satellitePvt.tropoDelayMeters);
jobject satellitePvtObject =
env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderBuild);
-
env->CallVoidMethod(object.get(), method_gnssMeasurementsSetSatellitePvt,
satellitePvtObject);
-
env->DeleteLocalRef(positionEcef);
env->DeleteLocalRef(velocityEcef);
env->DeleteLocalRef(clockInfo);