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
This commit is contained in:
Joe Huang
2021-05-21 17:46:09 +08:00
parent ea1518faf1
commit 8945fbb3a1
3 changed files with 36 additions and 47 deletions

View File

@@ -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);
}

View File

@@ -398,13 +398,6 @@ public final class SatellitePvt implements Parcelable {
mTropoDelayMeters = tropoDelayMeters;
}
/**
* 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.
@@ -535,18 +528,6 @@ public final class SatellitePvt implements Parcelable {
private double mIonoDelayMeters;
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.
*
@@ -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;
}

View File

@@ -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);