Loading core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -20181,6 +20181,7 @@ package android.location { method public boolean hasSatellitePvt(); method public boolean hasScheduling(); method public boolean hasSingleShotFix(); method public boolean isAccumulatedDeltaRangeCapabilityKnown(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssCapabilities> CREATOR; } Loading @@ -20189,6 +20190,7 @@ package android.location { ctor public GnssCapabilities.Builder(); ctor public GnssCapabilities.Builder(@NonNull android.location.GnssCapabilities); method @NonNull public android.location.GnssCapabilities build(); method @NonNull public android.location.GnssCapabilities.Builder clearIsAccumulatedDeltaRangeCapabilityKnown(); method @NonNull public android.location.GnssCapabilities.Builder setGnssSignalTypes(@NonNull java.util.List<android.location.GnssSignalType>); method @NonNull public android.location.GnssCapabilities.Builder setHasAccumulatedDeltaRange(boolean); method @NonNull public android.location.GnssCapabilities.Builder setHasAntennaInfo(boolean); location/java/android/location/GnssCapabilities.java +54 −16 Original line number Diff line number Diff line Loading @@ -129,21 +129,26 @@ public final class GnssCapabilities implements Parcelable { * @hide */ public static GnssCapabilities empty() { return new GnssCapabilities(0, 0, 0, Collections.emptyList()); return new GnssCapabilities(/*topFlags=*/ 0, /*isAdrCapabilityKnown=*/ false, /*measurementCorrectionsFlags=*/ 0, /*powerFlags=*/ 0, /*gnssSignalTypes=*/ Collections.emptyList()); } private final @TopHalCapabilityFlags int mTopFlags; private final boolean mIsAdrCapabilityKnown; private final @SubHalMeasurementCorrectionsCapabilityFlags int mMeasurementCorrectionsFlags; private final @SubHalPowerCapabilityFlags int mPowerFlags; private final @NonNull List<GnssSignalType> mGnssSignalTypes; private GnssCapabilities( @TopHalCapabilityFlags int topFlags, boolean isAdrCapabilityKnown, @SubHalMeasurementCorrectionsCapabilityFlags int measurementCorrectionsFlags, @SubHalPowerCapabilityFlags int powerFlags, @NonNull List<GnssSignalType> gnssSignalTypes) { Objects.requireNonNull(gnssSignalTypes); mTopFlags = topFlags; mIsAdrCapabilityKnown = isAdrCapabilityKnown; mMeasurementCorrectionsFlags = measurementCorrectionsFlags; mPowerFlags = powerFlags; mGnssSignalTypes = Collections.unmodifiableList(gnssSignalTypes); Loading @@ -154,12 +159,13 @@ public final class GnssCapabilities implements Parcelable { * * @hide */ public GnssCapabilities withTopHalFlags(@TopHalCapabilityFlags int flags) { if (mTopFlags == flags) { public GnssCapabilities withTopHalFlags(@TopHalCapabilityFlags int flags, boolean isAdrCapabilityKnown) { if (mTopFlags == flags && mIsAdrCapabilityKnown == isAdrCapabilityKnown) { return this; } else { return new GnssCapabilities(flags, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); return new GnssCapabilities(flags, isAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); } } Loading @@ -174,7 +180,7 @@ public final class GnssCapabilities implements Parcelable { if (mMeasurementCorrectionsFlags == flags) { return this; } else { return new GnssCapabilities(mTopFlags, flags, mPowerFlags, return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, flags, mPowerFlags, mGnssSignalTypes); } } Loading @@ -189,8 +195,8 @@ public final class GnssCapabilities implements Parcelable { if (mPowerFlags == flags) { return this; } else { return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, flags, mGnssSignalTypes); return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, flags, mGnssSignalTypes); } } Loading @@ -204,8 +210,8 @@ public final class GnssCapabilities implements Parcelable { if (mGnssSignalTypes.equals(gnssSignalTypes)) { return this; } else { return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(gnssSignalTypes)); return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(gnssSignalTypes)); } } Loading Loading @@ -372,15 +378,29 @@ public final class GnssCapabilities implements Parcelable { * Returns {@code true} if GNSS chipset supports accumulated delta range, {@code false} * otherwise. * * <p>The value is only known if {@link #isAccumulatedDeltaRangeCapabilityKnown()} is * true. * * <p>The accumulated delta range information can be queried in * {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeState()}, * {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeMeters()}, and * {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeUncertaintyMeters()}. */ public boolean hasAccumulatedDeltaRange() { if (!mIsAdrCapabilityKnown) { throw new IllegalStateException("Accumulated delta range capability is unknown."); } return (mTopFlags & TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE) != 0; } /** * Returns {@code true} if {@link #hasAccumulatedDeltaRange()} is known, {@code false} * otherwise. */ public boolean isAccumulatedDeltaRangeCapabilityKnown() { return mIsAdrCapabilityKnown; } /** * Returns {@code true} if GNSS chipset supports line-of-sight satellite identification * measurement corrections, {@code false} otherwise. Loading Loading @@ -488,6 +508,7 @@ public final class GnssCapabilities implements Parcelable { GnssCapabilities that = (GnssCapabilities) o; return mTopFlags == that.mTopFlags && mIsAdrCapabilityKnown == that.mIsAdrCapabilityKnown && mMeasurementCorrectionsFlags == that.mMeasurementCorrectionsFlags && mPowerFlags == that.mPowerFlags && mGnssSignalTypes.equals(that.mGnssSignalTypes); Loading @@ -495,15 +516,16 @@ public final class GnssCapabilities implements Parcelable { @Override public int hashCode() { return Objects.hash(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); return Objects.hash(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); } public static final @NonNull Creator<GnssCapabilities> CREATOR = new Creator<GnssCapabilities>() { @Override public GnssCapabilities createFromParcel(Parcel in) { return new GnssCapabilities(in.readInt(), in.readInt(), in.readInt(), in.createTypedArrayList(GnssSignalType.CREATOR)); return new GnssCapabilities(in.readInt(), in.readBoolean(), in.readInt(), in.readInt(), in.createTypedArrayList(GnssSignalType.CREATOR)); } @Override Loading @@ -520,6 +542,7 @@ public final class GnssCapabilities implements Parcelable { @Override public void writeToParcel(@NonNull Parcel parcel, int flags) { parcel.writeInt(mTopFlags); parcel.writeBoolean(mIsAdrCapabilityKnown); parcel.writeInt(mMeasurementCorrectionsFlags); parcel.writeInt(mPowerFlags); parcel.writeTypedList(mGnssSignalTypes); Loading Loading @@ -574,8 +597,10 @@ public final class GnssCapabilities implements Parcelable { if (hasMeasurementCorrectionsForDriving()) { builder.append("MEASUREMENT_CORRECTIONS_FOR_DRIVING "); } if (hasAccumulatedDeltaRange()) { if (mIsAdrCapabilityKnown && hasAccumulatedDeltaRange()) { builder.append("ACCUMULATED_DELTA_RANGE "); } else if (!mIsAdrCapabilityKnown) { builder.append("ACCUMULATED_DELTA_RANGE(unknown) "); } if (hasMeasurementCorrectionsLosSats()) { builder.append("LOS_SATS "); Loading Loading @@ -622,12 +647,14 @@ public final class GnssCapabilities implements Parcelable { public static final class Builder { private @TopHalCapabilityFlags int mTopFlags; private boolean mIsAdrCapabilityKnown; private @SubHalMeasurementCorrectionsCapabilityFlags int mMeasurementCorrectionsFlags; private @SubHalPowerCapabilityFlags int mPowerFlags; private @NonNull List<GnssSignalType> mGnssSignalTypes; public Builder() { mTopFlags = 0; mIsAdrCapabilityKnown = false; mMeasurementCorrectionsFlags = 0; mPowerFlags = 0; mGnssSignalTypes = Collections.emptyList(); Loading @@ -635,6 +662,7 @@ public final class GnssCapabilities implements Parcelable { public Builder(@NonNull GnssCapabilities capabilities) { mTopFlags = capabilities.mTopFlags; mIsAdrCapabilityKnown = capabilities.mIsAdrCapabilityKnown; mMeasurementCorrectionsFlags = capabilities.mMeasurementCorrectionsFlags; mPowerFlags = capabilities.mPowerFlags; mGnssSignalTypes = capabilities.mGnssSignalTypes; Loading Loading @@ -768,11 +796,21 @@ public final class GnssCapabilities implements Parcelable { * Sets accumulated delta range capability. */ public @NonNull Builder setHasAccumulatedDeltaRange(boolean capable) { mIsAdrCapabilityKnown = true; mTopFlags = setFlag(mTopFlags, TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE, capable); return this; } /** * Clears accumulated delta range capability and sets it as unknown. */ public @NonNull Builder clearIsAccumulatedDeltaRangeCapabilityKnown() { mIsAdrCapabilityKnown = false; mTopFlags = setFlag(mTopFlags, TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE, false); return this; } /** * Sets measurement corrections line-of-sight satellites capability. */ Loading Loading @@ -864,8 +902,8 @@ public final class GnssCapabilities implements Parcelable { * Builds a new GnssCapabilities. */ public @NonNull GnssCapabilities build() { return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(mGnssSignalTypes)); return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(mGnssSignalTypes)); } private static int setFlag(int value, int flag, boolean set) { Loading services/core/java/com/android/server/location/gnss/hal/GnssNative.java +3 −2 Original line number Diff line number Diff line Loading @@ -1127,13 +1127,14 @@ public class GnssNative { } @NativeEntryPoint void setTopHalCapabilities(@GnssCapabilities.TopHalCapabilityFlags int capabilities) { void setTopHalCapabilities(@GnssCapabilities.TopHalCapabilityFlags int capabilities, boolean isAdrCapabilityKnown) { // Here the bits specified by 'capabilities' are turned on. It is handled differently from // sub hal because top hal capabilities could be set by HIDL HAL and/or AIDL HAL. Each of // them possesses a different set of capabilities. mTopFlags |= capabilities; GnssCapabilities oldCapabilities = mCapabilities; mCapabilities = oldCapabilities.withTopHalFlags(mTopFlags); mCapabilities = oldCapabilities.withTopHalFlags(mTopFlags, isAdrCapabilityKnown); onCapabilitiesChanged(oldCapabilities, mCapabilities); } Loading services/core/jni/gnss/GnssCallback.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ void Gnss_class_init_once(JNIEnv* env, jclass& clazz) { method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "(I[I[F[F[F[F[F)V"); method_reportNmea = env->GetMethodID(clazz, "reportNmea", "(J)V"); method_setTopHalCapabilities = env->GetMethodID(clazz, "setTopHalCapabilities", "(I)V"); method_setTopHalCapabilities = env->GetMethodID(clazz, "setTopHalCapabilities", "(IZ)V"); method_setSignalTypeCapabilities = env->GetMethodID(clazz, "setSignalTypeCapabilities", "(Ljava/util/List;)V"); method_setGnssYearOfHardware = env->GetMethodID(clazz, "setGnssYearOfHardware", "(I)V"); Loading @@ -120,8 +120,10 @@ void Gnss_class_init_once(JNIEnv* env, jclass& clazz) { Status GnssCallbackAidl::gnssSetCapabilitiesCb(const int capabilities) { ALOGD("%s: %du\n", __func__, capabilities); bool isAdrCapabilityKnown = (getInterfaceVersion() >= 3) ? true : false; JNIEnv* env = getJniEnv(); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities, isAdrCapabilityKnown); checkAndClearExceptionFromCallback(env, __FUNCTION__); return Status::ok(); } Loading Loading @@ -409,7 +411,8 @@ Return<void> GnssCallbackHidl::gnssSetCapabilitesCb(uint32_t capabilities) { ALOGD("%s: %du\n", __func__, capabilities); JNIEnv* env = getJniEnv(); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities, /* isAdrCapabilityKnown= */ false); checkAndClearExceptionFromCallback(env, __FUNCTION__); return Void(); } Loading Loading
core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -20181,6 +20181,7 @@ package android.location { method public boolean hasSatellitePvt(); method public boolean hasScheduling(); method public boolean hasSingleShotFix(); method public boolean isAccumulatedDeltaRangeCapabilityKnown(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssCapabilities> CREATOR; } Loading @@ -20189,6 +20190,7 @@ package android.location { ctor public GnssCapabilities.Builder(); ctor public GnssCapabilities.Builder(@NonNull android.location.GnssCapabilities); method @NonNull public android.location.GnssCapabilities build(); method @NonNull public android.location.GnssCapabilities.Builder clearIsAccumulatedDeltaRangeCapabilityKnown(); method @NonNull public android.location.GnssCapabilities.Builder setGnssSignalTypes(@NonNull java.util.List<android.location.GnssSignalType>); method @NonNull public android.location.GnssCapabilities.Builder setHasAccumulatedDeltaRange(boolean); method @NonNull public android.location.GnssCapabilities.Builder setHasAntennaInfo(boolean);
location/java/android/location/GnssCapabilities.java +54 −16 Original line number Diff line number Diff line Loading @@ -129,21 +129,26 @@ public final class GnssCapabilities implements Parcelable { * @hide */ public static GnssCapabilities empty() { return new GnssCapabilities(0, 0, 0, Collections.emptyList()); return new GnssCapabilities(/*topFlags=*/ 0, /*isAdrCapabilityKnown=*/ false, /*measurementCorrectionsFlags=*/ 0, /*powerFlags=*/ 0, /*gnssSignalTypes=*/ Collections.emptyList()); } private final @TopHalCapabilityFlags int mTopFlags; private final boolean mIsAdrCapabilityKnown; private final @SubHalMeasurementCorrectionsCapabilityFlags int mMeasurementCorrectionsFlags; private final @SubHalPowerCapabilityFlags int mPowerFlags; private final @NonNull List<GnssSignalType> mGnssSignalTypes; private GnssCapabilities( @TopHalCapabilityFlags int topFlags, boolean isAdrCapabilityKnown, @SubHalMeasurementCorrectionsCapabilityFlags int measurementCorrectionsFlags, @SubHalPowerCapabilityFlags int powerFlags, @NonNull List<GnssSignalType> gnssSignalTypes) { Objects.requireNonNull(gnssSignalTypes); mTopFlags = topFlags; mIsAdrCapabilityKnown = isAdrCapabilityKnown; mMeasurementCorrectionsFlags = measurementCorrectionsFlags; mPowerFlags = powerFlags; mGnssSignalTypes = Collections.unmodifiableList(gnssSignalTypes); Loading @@ -154,12 +159,13 @@ public final class GnssCapabilities implements Parcelable { * * @hide */ public GnssCapabilities withTopHalFlags(@TopHalCapabilityFlags int flags) { if (mTopFlags == flags) { public GnssCapabilities withTopHalFlags(@TopHalCapabilityFlags int flags, boolean isAdrCapabilityKnown) { if (mTopFlags == flags && mIsAdrCapabilityKnown == isAdrCapabilityKnown) { return this; } else { return new GnssCapabilities(flags, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); return new GnssCapabilities(flags, isAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); } } Loading @@ -174,7 +180,7 @@ public final class GnssCapabilities implements Parcelable { if (mMeasurementCorrectionsFlags == flags) { return this; } else { return new GnssCapabilities(mTopFlags, flags, mPowerFlags, return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, flags, mPowerFlags, mGnssSignalTypes); } } Loading @@ -189,8 +195,8 @@ public final class GnssCapabilities implements Parcelable { if (mPowerFlags == flags) { return this; } else { return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, flags, mGnssSignalTypes); return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, flags, mGnssSignalTypes); } } Loading @@ -204,8 +210,8 @@ public final class GnssCapabilities implements Parcelable { if (mGnssSignalTypes.equals(gnssSignalTypes)) { return this; } else { return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(gnssSignalTypes)); return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(gnssSignalTypes)); } } Loading Loading @@ -372,15 +378,29 @@ public final class GnssCapabilities implements Parcelable { * Returns {@code true} if GNSS chipset supports accumulated delta range, {@code false} * otherwise. * * <p>The value is only known if {@link #isAccumulatedDeltaRangeCapabilityKnown()} is * true. * * <p>The accumulated delta range information can be queried in * {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeState()}, * {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeMeters()}, and * {@link android.location.GnssMeasurement#getAccumulatedDeltaRangeUncertaintyMeters()}. */ public boolean hasAccumulatedDeltaRange() { if (!mIsAdrCapabilityKnown) { throw new IllegalStateException("Accumulated delta range capability is unknown."); } return (mTopFlags & TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE) != 0; } /** * Returns {@code true} if {@link #hasAccumulatedDeltaRange()} is known, {@code false} * otherwise. */ public boolean isAccumulatedDeltaRangeCapabilityKnown() { return mIsAdrCapabilityKnown; } /** * Returns {@code true} if GNSS chipset supports line-of-sight satellite identification * measurement corrections, {@code false} otherwise. Loading Loading @@ -488,6 +508,7 @@ public final class GnssCapabilities implements Parcelable { GnssCapabilities that = (GnssCapabilities) o; return mTopFlags == that.mTopFlags && mIsAdrCapabilityKnown == that.mIsAdrCapabilityKnown && mMeasurementCorrectionsFlags == that.mMeasurementCorrectionsFlags && mPowerFlags == that.mPowerFlags && mGnssSignalTypes.equals(that.mGnssSignalTypes); Loading @@ -495,15 +516,16 @@ public final class GnssCapabilities implements Parcelable { @Override public int hashCode() { return Objects.hash(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); return Objects.hash(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, mGnssSignalTypes); } public static final @NonNull Creator<GnssCapabilities> CREATOR = new Creator<GnssCapabilities>() { @Override public GnssCapabilities createFromParcel(Parcel in) { return new GnssCapabilities(in.readInt(), in.readInt(), in.readInt(), in.createTypedArrayList(GnssSignalType.CREATOR)); return new GnssCapabilities(in.readInt(), in.readBoolean(), in.readInt(), in.readInt(), in.createTypedArrayList(GnssSignalType.CREATOR)); } @Override Loading @@ -520,6 +542,7 @@ public final class GnssCapabilities implements Parcelable { @Override public void writeToParcel(@NonNull Parcel parcel, int flags) { parcel.writeInt(mTopFlags); parcel.writeBoolean(mIsAdrCapabilityKnown); parcel.writeInt(mMeasurementCorrectionsFlags); parcel.writeInt(mPowerFlags); parcel.writeTypedList(mGnssSignalTypes); Loading Loading @@ -574,8 +597,10 @@ public final class GnssCapabilities implements Parcelable { if (hasMeasurementCorrectionsForDriving()) { builder.append("MEASUREMENT_CORRECTIONS_FOR_DRIVING "); } if (hasAccumulatedDeltaRange()) { if (mIsAdrCapabilityKnown && hasAccumulatedDeltaRange()) { builder.append("ACCUMULATED_DELTA_RANGE "); } else if (!mIsAdrCapabilityKnown) { builder.append("ACCUMULATED_DELTA_RANGE(unknown) "); } if (hasMeasurementCorrectionsLosSats()) { builder.append("LOS_SATS "); Loading Loading @@ -622,12 +647,14 @@ public final class GnssCapabilities implements Parcelable { public static final class Builder { private @TopHalCapabilityFlags int mTopFlags; private boolean mIsAdrCapabilityKnown; private @SubHalMeasurementCorrectionsCapabilityFlags int mMeasurementCorrectionsFlags; private @SubHalPowerCapabilityFlags int mPowerFlags; private @NonNull List<GnssSignalType> mGnssSignalTypes; public Builder() { mTopFlags = 0; mIsAdrCapabilityKnown = false; mMeasurementCorrectionsFlags = 0; mPowerFlags = 0; mGnssSignalTypes = Collections.emptyList(); Loading @@ -635,6 +662,7 @@ public final class GnssCapabilities implements Parcelable { public Builder(@NonNull GnssCapabilities capabilities) { mTopFlags = capabilities.mTopFlags; mIsAdrCapabilityKnown = capabilities.mIsAdrCapabilityKnown; mMeasurementCorrectionsFlags = capabilities.mMeasurementCorrectionsFlags; mPowerFlags = capabilities.mPowerFlags; mGnssSignalTypes = capabilities.mGnssSignalTypes; Loading Loading @@ -768,11 +796,21 @@ public final class GnssCapabilities implements Parcelable { * Sets accumulated delta range capability. */ public @NonNull Builder setHasAccumulatedDeltaRange(boolean capable) { mIsAdrCapabilityKnown = true; mTopFlags = setFlag(mTopFlags, TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE, capable); return this; } /** * Clears accumulated delta range capability and sets it as unknown. */ public @NonNull Builder clearIsAccumulatedDeltaRangeCapabilityKnown() { mIsAdrCapabilityKnown = false; mTopFlags = setFlag(mTopFlags, TOP_HAL_CAPABILITY_ACCUMULATED_DELTA_RANGE, false); return this; } /** * Sets measurement corrections line-of-sight satellites capability. */ Loading Loading @@ -864,8 +902,8 @@ public final class GnssCapabilities implements Parcelable { * Builds a new GnssCapabilities. */ public @NonNull GnssCapabilities build() { return new GnssCapabilities(mTopFlags, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(mGnssSignalTypes)); return new GnssCapabilities(mTopFlags, mIsAdrCapabilityKnown, mMeasurementCorrectionsFlags, mPowerFlags, new ArrayList<>(mGnssSignalTypes)); } private static int setFlag(int value, int flag, boolean set) { Loading
services/core/java/com/android/server/location/gnss/hal/GnssNative.java +3 −2 Original line number Diff line number Diff line Loading @@ -1127,13 +1127,14 @@ public class GnssNative { } @NativeEntryPoint void setTopHalCapabilities(@GnssCapabilities.TopHalCapabilityFlags int capabilities) { void setTopHalCapabilities(@GnssCapabilities.TopHalCapabilityFlags int capabilities, boolean isAdrCapabilityKnown) { // Here the bits specified by 'capabilities' are turned on. It is handled differently from // sub hal because top hal capabilities could be set by HIDL HAL and/or AIDL HAL. Each of // them possesses a different set of capabilities. mTopFlags |= capabilities; GnssCapabilities oldCapabilities = mCapabilities; mCapabilities = oldCapabilities.withTopHalFlags(mTopFlags); mCapabilities = oldCapabilities.withTopHalFlags(mTopFlags, isAdrCapabilityKnown); onCapabilitiesChanged(oldCapabilities, mCapabilities); } Loading
services/core/jni/gnss/GnssCallback.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ void Gnss_class_init_once(JNIEnv* env, jclass& clazz) { method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "(I[I[F[F[F[F[F)V"); method_reportNmea = env->GetMethodID(clazz, "reportNmea", "(J)V"); method_setTopHalCapabilities = env->GetMethodID(clazz, "setTopHalCapabilities", "(I)V"); method_setTopHalCapabilities = env->GetMethodID(clazz, "setTopHalCapabilities", "(IZ)V"); method_setSignalTypeCapabilities = env->GetMethodID(clazz, "setSignalTypeCapabilities", "(Ljava/util/List;)V"); method_setGnssYearOfHardware = env->GetMethodID(clazz, "setGnssYearOfHardware", "(I)V"); Loading @@ -120,8 +120,10 @@ void Gnss_class_init_once(JNIEnv* env, jclass& clazz) { Status GnssCallbackAidl::gnssSetCapabilitiesCb(const int capabilities) { ALOGD("%s: %du\n", __func__, capabilities); bool isAdrCapabilityKnown = (getInterfaceVersion() >= 3) ? true : false; JNIEnv* env = getJniEnv(); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities, isAdrCapabilityKnown); checkAndClearExceptionFromCallback(env, __FUNCTION__); return Status::ok(); } Loading Loading @@ -409,7 +411,8 @@ Return<void> GnssCallbackHidl::gnssSetCapabilitesCb(uint32_t capabilities) { ALOGD("%s: %du\n", __func__, capabilities); JNIEnv* env = getJniEnv(); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities); env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities, /* isAdrCapabilityKnown= */ false); checkAndClearExceptionFromCallback(env, __FUNCTION__); return Void(); } Loading