Loading services/core/jni/com_android_server_location_GnssLocationProvider.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading services/core/jni/gnss/GnssMeasurementCallback.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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;"); Loading Loading @@ -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, Loading services/core/jni/gnss/GnssMeasurementCallback.h +5 −6 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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( Loading Loading @@ -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; }; Loading Loading
services/core/jni/com_android_server_location_GnssLocationProvider.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -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); } Loading
services/core/jni/gnss/GnssMeasurementCallback.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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;"); Loading Loading @@ -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, Loading
services/core/jni/gnss/GnssMeasurementCallback.h +5 −6 Original line number Diff line number Diff line Loading @@ -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: Loading @@ -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( Loading Loading @@ -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; }; Loading