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

Commit 72d5b95d authored by Yu-Han Yang's avatar Yu-Han Yang
Browse files

Allow IGnssMeasurement versions mix and match

- 2.0@IGnss can use {1.0, 1.1, 2.0}@IGnssMeasurement
- 1.1@IGnss can use {1.0, 1.1}@IGnssMeasurement
- 1.0@IGnss can use 1.0@IGnssMeasurement

Bug: 110872649
Test: on device
Change-Id: I2b0c075c9081f0c8484778bcd2bc2ac4f3569092
parent fb48f85e
Loading
Loading
Loading
Loading
+22 −13
Original line number Diff line number Diff line
@@ -1700,8 +1700,12 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass
        gnssNavigationMessageIface = gnssNavigationMessage;
    }

    if (gnssHal_V2_0 != nullptr) {
        // TODO: getExtensionGnssMeasurement_1_1 from gnssHal_V2_0
    // Allow all causal combinations between IGnss.hal and IGnssMeasurement.hal. That means,
    // 2.0@IGnss can be paired with {1.0, 1,1, 2.0}@IGnssMeasurement
    // 1.1@IGnss can be paired {1.0, 1.1}@IGnssMeasurement
    // 1.0@IGnss is paired with 1.0@IGnssMeasurement
    gnssMeasurementIface = nullptr;
    if (gnssHal_V2_0 != nullptr && gnssMeasurementIface == nullptr) {
        auto gnssMeasurement = gnssHal_V2_0->getExtensionGnssMeasurement_2_0();
        if (!gnssMeasurement.isOk()) {
            ALOGD("Unable to get a handle to GnssMeasurement_V2_0");
@@ -1710,13 +1714,8 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass
            gnssMeasurementIface_V1_1 = gnssMeasurementIface_V2_0;
            gnssMeasurementIface = gnssMeasurementIface_V2_0;
        }
        auto gnssCorrections = gnssHal_V2_0->getExtensionMeasurementCorrections();
        if (!gnssCorrections.isOk()) {
            ALOGD("Unable to get a handle to GnssMeasurementCorrections interface");
        } else {
            gnssCorrectionsIface = gnssCorrections;
    }
    } else if (gnssHal_V1_1 != nullptr) {
    if (gnssHal_V1_1 != nullptr && gnssMeasurementIface == nullptr) {
         auto gnssMeasurement = gnssHal_V1_1->getExtensionGnssMeasurement_1_1();
         if (!gnssMeasurement.isOk()) {
             ALOGD("Unable to get a handle to GnssMeasurement_V1_1");
@@ -1724,12 +1723,22 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass
             gnssMeasurementIface_V1_1 = gnssMeasurement;
             gnssMeasurementIface = gnssMeasurementIface_V1_1;
         }
    } else {
         auto gnssMeasurement_V1_0 = gnssHal->getExtensionGnssMeasurement();
         if (!gnssMeasurement_V1_0.isOk()) {
    }
    if (gnssMeasurementIface == nullptr) {
         auto gnssMeasurement = gnssHal->getExtensionGnssMeasurement();
         if (!gnssMeasurement.isOk()) {
             ALOGD("Unable to get a handle to GnssMeasurement");
         } else {
             gnssMeasurementIface = gnssMeasurement_V1_0;
             gnssMeasurementIface = gnssMeasurement;
         }
    }

    if (gnssHal_V2_0 != nullptr) {
        auto gnssCorrections = gnssHal_V2_0->getExtensionMeasurementCorrections();
        if (!gnssCorrections.isOk()) {
            ALOGD("Unable to get a handle to GnssMeasurementCorrections interface");
        } else {
            gnssCorrectionsIface = gnssCorrections;
        }
    }