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

Commit 01508633 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Pipe SatellitePvt fields in JNI" into tm-dev

parents 1772b0ab 083d0a34
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -730,8 +730,7 @@ static jboolean android_location_gnss_hal_GnssNative_start_measurement_collectio
    options.enableCorrVecOutputs = enableCorrVecOutputs;
    options.intervalMs = intervalMs;

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

+38 −0
Original line number Diff line number Diff line
@@ -73,6 +73,11 @@ jmethodID method_satellitePvtBuilderSetVelocityEcef;
jmethodID method_satellitePvtBuilderSetClockInfo;
jmethodID method_satellitePvtBuilderSetIonoDelayMeters;
jmethodID method_satellitePvtBuilderSetTropoDelayMeters;
jmethodID method_satellitePvtBuilderSetTimeOfClock;
jmethodID method_satellitePvtBuilderSetTimeOfEphemeris;
jmethodID method_satellitePvtBuilderSetIssueOfDataClock;
jmethodID method_satellitePvtBuilderSetIssueOfDataEphemeris;
jmethodID method_satellitePvtBuilderSetEphemerisSource;
jmethodID method_positionEcef;
jmethodID method_velocityEcef;
jmethodID method_clockInfo;
@@ -166,6 +171,21 @@ void GnssMeasurement_class_init_once(JNIEnv* env, jclass& clazz) {
    method_satellitePvtBuilderSetTropoDelayMeters =
            env->GetMethodID(class_satellitePvtBuilder, "setTropoDelayMeters",
                             "(D)Landroid/location/SatellitePvt$Builder;");
    method_satellitePvtBuilderSetTimeOfClock =
            env->GetMethodID(class_satellitePvtBuilder, "setTimeOfClockSeconds",
                             "(J)Landroid/location/SatellitePvt$Builder;");
    method_satellitePvtBuilderSetTimeOfEphemeris =
            env->GetMethodID(class_satellitePvtBuilder, "setTimeOfEphemerisSeconds",
                             "(J)Landroid/location/SatellitePvt$Builder;");
    method_satellitePvtBuilderSetIssueOfDataClock =
            env->GetMethodID(class_satellitePvtBuilder, "setIssueOfDataClock",
                             "(I)Landroid/location/SatellitePvt$Builder;");
    method_satellitePvtBuilderSetIssueOfDataEphemeris =
            env->GetMethodID(class_satellitePvtBuilder, "setIssueOfDataEphemeris",
                             "(I)Landroid/location/SatellitePvt$Builder;");
    method_satellitePvtBuilderSetEphemerisSource =
            env->GetMethodID(class_satellitePvtBuilder, "setEphemerisSource",
                             "(I)Landroid/location/SatellitePvt$Builder;");
    method_satellitePvtBuilderBuild = env->GetMethodID(class_satellitePvtBuilder, "build",
                                                       "()Landroid/location/SatellitePvt;");

@@ -429,6 +449,24 @@ void GnssMeasurementCallbackAidl::translateSingleGnssMeasurement(JNIEnv* env,
                                           satellitePvt.tropoDelayMeters);
        }

        if (this->getInterfaceVersion() >= 2) {
            callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
                                           method_satellitePvtBuilderSetTimeOfClock,
                                           satellitePvt.timeOfClockSeconds);
            callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
                                           method_satellitePvtBuilderSetTimeOfEphemeris,
                                           satellitePvt.timeOfEphemerisSeconds);
            callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
                                           method_satellitePvtBuilderSetIssueOfDataClock,
                                           satellitePvt.issueOfDataClock);
            callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
                                           method_satellitePvtBuilderSetIssueOfDataEphemeris,
                                           satellitePvt.issueOfDataEphemeris);
            callObjectMethodIgnoringResult(env, satellitePvtBuilderObject,
                                           method_satellitePvtBuilderSetEphemerisSource,
                                           static_cast<int>(satellitePvt.ephemerisSource));
        }

        jobject satellitePvtObject =
                env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderBuild);
        env->CallVoidMethod(object.get(), method_gnssMeasurementsSetSatellitePvt,
+5 −6
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ void setMeasurementData(JNIEnv* env, jobject& callbacksObj, jobject clock,

class GnssMeasurementCallbackAidl : public hardware::gnss::BnGnssMeasurementCallback {
public:
    GnssMeasurementCallbackAidl(jobject& callbacksObj) : mCallbacksObj(callbacksObj) {}
    GnssMeasurementCallbackAidl() : mCallbacksObj(getCallbacksObj()) {}
    android::binder::Status gnssMeasurementCb(const hardware::gnss::GnssData& data) override;

private:
@@ -78,7 +78,7 @@ private:
 */
class GnssMeasurementCallbackHidl : public hardware::gnss::V2_1::IGnssMeasurementCallback {
public:
    GnssMeasurementCallbackHidl(jobject& callbacksObj) : mCallbacksObj(callbacksObj) {}
    GnssMeasurementCallbackHidl() : mCallbacksObj(getCallbacksObj()) {}
    hardware::Return<void> gnssMeasurementCb_2_1(
            const hardware::gnss::V2_1::IGnssMeasurementCallback::GnssData& data) override;
    hardware::Return<void> gnssMeasurementCb_2_0(
@@ -109,23 +109,22 @@ private:

class GnssMeasurementCallback {
public:
    GnssMeasurementCallback(jobject& callbacksObj) : mCallbacksObj(callbacksObj) {}
    GnssMeasurementCallback() {}
    sp<GnssMeasurementCallbackAidl> getAidl() {
        if (callbackAidl == nullptr) {
            callbackAidl = sp<GnssMeasurementCallbackAidl>::make(mCallbacksObj);
            callbackAidl = sp<GnssMeasurementCallbackAidl>::make();
        }
        return callbackAidl;
    }

    sp<GnssMeasurementCallbackHidl> getHidl() {
        if (callbackHidl == nullptr) {
            callbackHidl = sp<GnssMeasurementCallbackHidl>::make(mCallbacksObj);
            callbackHidl = sp<GnssMeasurementCallbackHidl>::make();
        }
        return callbackHidl;
    }

private:
    jobject& mCallbacksObj;
    sp<GnssMeasurementCallbackAidl> callbackAidl;
    sp<GnssMeasurementCallbackHidl> callbackHidl;
};