Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 221ddd99 authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Use the getInterfaceVersion() of vendor implementation

GnssCallbackAidl is provided by the framework so its
getInterfaceVersion() is always the latest. We should pass the interface
version of the vendor implementation (e.g., Gnss.aidl) into
GnssCallbackAidl.

Bug: 319333885
Test: manual
Change-Id: I26d318951eacd57988ec69d0bdce6ae412f1fc79
parent ce930181
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -675,7 +675,8 @@ static jboolean android_location_gnss_hal_GnssNative_start_measurement_collectio
    options.enableCorrVecOutputs = enableCorrVecOutputs;
    options.intervalMs = intervalMs;

    return gnssMeasurementIface->setCallback(std::make_unique<gnss::GnssMeasurementCallback>(),
    return gnssMeasurementIface->setCallback(std::make_unique<gnss::GnssMeasurementCallback>(
                                                     gnssMeasurementIface->getInterfaceVersion()),
                                             options);
}

+2 −1
Original line number Diff line number Diff line
@@ -196,7 +196,8 @@ void GnssHal::linkToDeath() {

jboolean GnssHal::setCallback() {
    if (gnssHalAidl != nullptr) {
        sp<IGnssCallbackAidl> gnssCbIfaceAidl = new GnssCallbackAidl();
        sp<IGnssCallbackAidl> gnssCbIfaceAidl =
                new GnssCallbackAidl(gnssHalAidl->getInterfaceVersion());
        auto status = gnssHalAidl->setCallback(gnssCbIfaceAidl);
        if (!checkAidlStatus(status, "IGnssAidl setCallback() failed.")) {
            return JNI_FALSE;
+2 −2
Original line number Diff line number Diff line
@@ -120,7 +120,7 @@ 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;
    bool isAdrCapabilityKnown = (interfaceVersion >= 3) ? true : false;
    JNIEnv* env = getJniEnv();
    env->CallVoidMethod(mCallbacksObj, method_setTopHalCapabilities, capabilities,
                        isAdrCapabilityKnown);
@@ -178,7 +178,7 @@ Status GnssCallbackAidl::gnssLocationCb(const hardware::gnss::GnssLocation& loca

Status GnssCallbackAidl::gnssNmeaCb(const int64_t timestamp, const std::string& nmea) {
    // In AIDL v1, if no listener is registered, do not report nmea to the framework.
    if (getInterfaceVersion() <= 1) {
    if (interfaceVersion <= 1) {
        if (!isNmeaRegistered) {
            return Status::ok();
        }
+4 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ void Gnss_class_init_once(JNIEnv* env, jclass& clazz);
 */
class GnssCallbackAidl : public hardware::gnss::BnGnssCallback {
public:
    GnssCallbackAidl(int version) : interfaceVersion(version){};
    binder::Status gnssSetCapabilitiesCb(const int capabilities) override;
    binder::Status gnssSetSignalTypeCapabilitiesCb(
            const std::vector<android::hardware::gnss::GnssSignalType>& signalTypes) override;
@@ -73,6 +74,9 @@ public:
    binder::Status gnssRequestTimeCb() override;
    binder::Status gnssRequestLocationCb(const bool independentFromGnss,
                                         const bool isUserEmergency) override;

private:
    const int interfaceVersion;
};

/*
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ public:
            const std::unique_ptr<GnssMeasurementCallback>& callback,
            const android::hardware::gnss::IGnssMeasurementInterface::Options& options) = 0;
    virtual jboolean close() = 0;
    virtual int getInterfaceVersion() = 0;
};

class GnssMeasurement : public GnssMeasurementInterface {
@@ -50,6 +51,9 @@ public:
            const std::unique_ptr<GnssMeasurementCallback>& callback,
            const android::hardware::gnss::IGnssMeasurementInterface::Options& options) override;
    jboolean close() override;
    int getInterfaceVersion() override {
        return mIGnssMeasurement->getInterfaceVersion();
    }

private:
    const sp<android::hardware::gnss::IGnssMeasurementInterface> mIGnssMeasurement;
@@ -63,6 +67,9 @@ public:
            const std::unique_ptr<GnssMeasurementCallback>& callback,
            const android::hardware::gnss::IGnssMeasurementInterface::Options& options) override;
    jboolean close() override;
    int getInterfaceVersion() override {
        return 0;
    }

private:
    const sp<android::hardware::gnss::V1_0::IGnssMeasurement> mIGnssMeasurement_V1_0;
Loading