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

Commit 049a52da authored by Wyatt Riley's avatar Wyatt Riley Committed by Android (Google) Code Review
Browse files

Merge "Handling additional enum for carrier half cycle"

parents e2e3b77a bb9bc846
Loading
Loading
Loading
Loading
+50 −27
Original line number Original line Diff line number Diff line
@@ -99,14 +99,16 @@ using android::hardware::gnss::V1_0::IGnssConfiguration;
using android::hardware::gnss::V1_0::IGnssDebug;
using android::hardware::gnss::V1_0::IGnssDebug;
using android::hardware::gnss::V1_0::IGnssGeofenceCallback;
using android::hardware::gnss::V1_0::IGnssGeofenceCallback;
using android::hardware::gnss::V1_0::IGnssGeofencing;
using android::hardware::gnss::V1_0::IGnssGeofencing;
using android::hardware::gnss::V1_0::IGnssMeasurementCallback;
using IGnssMeasurementCallback_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurementCallback;
using android::hardware::gnss::V1_0::IGnssNavigationMessage;
using android::hardware::gnss::V1_0::IGnssNavigationMessage;
using android::hardware::gnss::V1_0::IGnssNavigationMessageCallback;
using android::hardware::gnss::V1_0::IGnssNavigationMessageCallback;
using android::hardware::gnss::V1_0::IGnssNi;
using android::hardware::gnss::V1_0::IGnssNi;
using android::hardware::gnss::V1_0::IGnssNiCallback;
using android::hardware::gnss::V1_0::IGnssNiCallback;
using android::hardware::gnss::V1_0::IGnssXtra;
using android::hardware::gnss::V1_0::IGnssXtra;
using android::hardware::gnss::V1_0::IGnssXtraCallback;
using android::hardware::gnss::V1_0::IGnssXtraCallback;

using android::hardware::gnss::V1_1::IGnssCallback;
using android::hardware::gnss::V1_1::IGnssCallback;
using android::hardware::gnss::V1_1::IGnssMeasurementCallback;


struct GnssDeathRecipient : virtual public hidl_death_recipient
struct GnssDeathRecipient : virtual public hidl_death_recipient
{
{
@@ -699,21 +701,24 @@ Return<void> GnssNavigationMessageCallback::gnssNavigationMessageCb(
 * GnssMeasurement interface.
 * GnssMeasurement interface.
 */
 */
struct GnssMeasurementCallback : public IGnssMeasurementCallback {
struct GnssMeasurementCallback : public IGnssMeasurementCallback {
    Return<void> GnssMeasurementCb(const IGnssMeasurementCallback::GnssData& data);
    Return<void> gnssMeasurementCb(const IGnssMeasurementCallback::GnssData& data) override;
    Return<void> GnssMeasurementCb(const IGnssMeasurementCallback_V1_0::GnssData& data) override;
 private:
 private:
    jobject translateGnssMeasurement(
    void translateGnssMeasurement_V1_0(
            JNIEnv* env, const IGnssMeasurementCallback::GnssMeasurement* measurement);
            JNIEnv* env, const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurement,
    jobject translateGnssClock(
            JavaObject object);
            JNIEnv* env, const IGnssMeasurementCallback::GnssClock* clock);
    jobjectArray translateGnssMeasurements(
    jobjectArray translateGnssMeasurements(
            JNIEnv* env,
            JNIEnv* env,
            const IGnssMeasurementCallback::GnssMeasurement* measurements,
            const IGnssMeasurementCallback::GnssMeasurement* measurements,
            const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurements_v1_0,
            size_t count);
            size_t count);
    jobject translateGnssClock(
            JNIEnv* env, const IGnssMeasurementCallback::GnssClock* clock);
    void setMeasurementData(JNIEnv* env, jobject clock, jobjectArray measurementArray);
    void setMeasurementData(JNIEnv* env, jobject clock, jobjectArray measurementArray);
};
};




Return<void> GnssMeasurementCallback::GnssMeasurementCb(
Return<void> GnssMeasurementCallback::gnssMeasurementCb(
        const IGnssMeasurementCallback::GnssData& data) {
        const IGnssMeasurementCallback::GnssData& data) {
    JNIEnv* env = getJniEnv();
    JNIEnv* env = getJniEnv();


@@ -722,7 +727,7 @@ Return<void> GnssMeasurementCallback::GnssMeasurementCb(


    clock = translateGnssClock(env, &data.clock);
    clock = translateGnssClock(env, &data.clock);
    measurementArray = translateGnssMeasurements(
    measurementArray = translateGnssMeasurements(
        env, data.measurements.data(), data.measurementCount);
        env, data.measurements.data(), NULL, data.measurements.size());
    setMeasurementData(env, clock, measurementArray);
    setMeasurementData(env, clock, measurementArray);


    env->DeleteLocalRef(clock);
    env->DeleteLocalRef(clock);
@@ -730,10 +735,27 @@ Return<void> GnssMeasurementCallback::GnssMeasurementCb(
    return Void();
    return Void();
}
}


jobject GnssMeasurementCallback::translateGnssMeasurement(
Return<void> GnssMeasurementCallback::GnssMeasurementCb(
        JNIEnv* env, const IGnssMeasurementCallback::GnssMeasurement* measurement) {
        const IGnssMeasurementCallback_V1_0::GnssData& data) {
    JavaObject object(env, "android/location/GnssMeasurement");
    JNIEnv* env = getJniEnv();

    jobject clock;
    jobjectArray measurementArray;

    clock = translateGnssClock(env, &data.clock);
    measurementArray = translateGnssMeasurements(
        env, NULL, data.measurements.data(), data.measurementCount);
    setMeasurementData(env, clock, measurementArray);

    env->DeleteLocalRef(clock);
    env->DeleteLocalRef(measurementArray);
    return Void();
}


// preallocate object as: JavaObject object(env, "android/location/GnssMeasurement");
void GnssMeasurementCallback::translateGnssMeasurement_V1_0(
        JNIEnv* env, const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurement,
        JavaObject object) {
    uint32_t flags = static_cast<uint32_t>(measurement->flags);
    uint32_t flags = static_cast<uint32_t>(measurement->flags);


    SET(Svid, static_cast<int32_t>(measurement->svid));
    SET(Svid, static_cast<int32_t>(measurement->svid));
@@ -757,13 +779,8 @@ jobject GnssMeasurementCallback::translateGnssMeasurement(
        SET(CarrierFrequencyHz, measurement->carrierFrequencyHz);
        SET(CarrierFrequencyHz, measurement->carrierFrequencyHz);
    }
    }


    if (flags & static_cast<uint32_t>(GnssMeasurementFlags::HAS_CARRIER_PHASE)) {
    // Intentionally not copying deprecated fields of carrierCycles,
        SET(CarrierPhase, measurement->carrierPhase);
    // carrierPhase, carrierPhaseUncertainty
    }

    if (flags & static_cast<uint32_t>(GnssMeasurementFlags::HAS_CARRIER_PHASE_UNCERTAINTY)) {
        SET(CarrierPhaseUncertainty, measurement->carrierPhaseUncertainty);
    }


    SET(MultipathIndicator, static_cast<int32_t>(measurement->multipathIndicator));
    SET(MultipathIndicator, static_cast<int32_t>(measurement->multipathIndicator));


@@ -774,8 +791,6 @@ jobject GnssMeasurementCallback::translateGnssMeasurement(
    if (flags & static_cast<uint32_t>(GnssMeasurementFlags::HAS_AUTOMATIC_GAIN_CONTROL)) {
    if (flags & static_cast<uint32_t>(GnssMeasurementFlags::HAS_AUTOMATIC_GAIN_CONTROL)) {
        SET(AutomaticGainControlLevelInDb, measurement->agcLevelDb);
        SET(AutomaticGainControlLevelInDb, measurement->agcLevelDb);
    }
    }

    return object.get();
}
}


jobject GnssMeasurementCallback::translateGnssClock(
jobject GnssMeasurementCallback::translateGnssClock(
@@ -818,8 +833,9 @@ jobject GnssMeasurementCallback::translateGnssClock(
}
}


jobjectArray GnssMeasurementCallback::translateGnssMeasurements(JNIEnv* env,
jobjectArray GnssMeasurementCallback::translateGnssMeasurements(JNIEnv* env,
                                       const IGnssMeasurementCallback::GnssMeasurement*
         const IGnssMeasurementCallback::GnssMeasurement* measurements,
                                       measurements, size_t count) {
         const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurements_v1_0,
         size_t count) {
    if (count == 0) {
    if (count == 0) {
        return NULL;
        return NULL;
    }
    }
@@ -831,11 +847,18 @@ jobjectArray GnssMeasurementCallback::translateGnssMeasurements(JNIEnv* env,
            NULL /* initialElement */);
            NULL /* initialElement */);


    for (uint16_t i = 0; i < count; ++i) {
    for (uint16_t i = 0; i < count; ++i) {
        jobject gnssMeasurement = translateGnssMeasurement(
        JavaObject object(env, "android/location/GnssMeasurement");
            env,
        if (measurements != NULL) {
            &measurements[i]);
            translateGnssMeasurement_V1_0(env, &(measurements[i].v1_0), object);
        env->SetObjectArrayElement(gnssMeasurementArray, i, gnssMeasurement);

        env->DeleteLocalRef(gnssMeasurement);
            // Set the V1_1 flag
            SET(AccumulatedDeltaRangeState,
                    static_cast<int32_t>(measurements[i].accumulatedDeltaRangeState));
        } else {
            translateGnssMeasurement_V1_0(env, &(measurements_v1_0[i]), object);
        }

        env->SetObjectArrayElement(gnssMeasurementArray, i, object.get());
    }
    }


    env->DeleteLocalRef(gnssMeasurementClass);
    env->DeleteLocalRef(gnssMeasurementClass);