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

This commit is contained in:
TreeHugger Robot
2022-03-03 16:35:30 +00:00
committed by Android (Google) Code Review
3 changed files with 44 additions and 8 deletions

View File

@@ -730,8 +730,7 @@ static jboolean android_location_gnss_hal_GnssNative_start_measurement_collectio
options.enableCorrVecOutputs = enableCorrVecOutputs; options.enableCorrVecOutputs = enableCorrVecOutputs;
options.intervalMs = intervalMs; options.intervalMs = intervalMs;
return gnssMeasurementIface->setCallback(std::make_unique<gnss::GnssMeasurementCallback>( return gnssMeasurementIface->setCallback(std::make_unique<gnss::GnssMeasurementCallback>(),
mCallbacksObj),
options); options);
} }

View File

@@ -73,6 +73,11 @@ jmethodID method_satellitePvtBuilderSetVelocityEcef;
jmethodID method_satellitePvtBuilderSetClockInfo; jmethodID method_satellitePvtBuilderSetClockInfo;
jmethodID method_satellitePvtBuilderSetIonoDelayMeters; jmethodID method_satellitePvtBuilderSetIonoDelayMeters;
jmethodID method_satellitePvtBuilderSetTropoDelayMeters; jmethodID method_satellitePvtBuilderSetTropoDelayMeters;
jmethodID method_satellitePvtBuilderSetTimeOfClock;
jmethodID method_satellitePvtBuilderSetTimeOfEphemeris;
jmethodID method_satellitePvtBuilderSetIssueOfDataClock;
jmethodID method_satellitePvtBuilderSetIssueOfDataEphemeris;
jmethodID method_satellitePvtBuilderSetEphemerisSource;
jmethodID method_positionEcef; jmethodID method_positionEcef;
jmethodID method_velocityEcef; jmethodID method_velocityEcef;
jmethodID method_clockInfo; jmethodID method_clockInfo;
@@ -166,6 +171,21 @@ void GnssMeasurement_class_init_once(JNIEnv* env, jclass& clazz) {
method_satellitePvtBuilderSetTropoDelayMeters = method_satellitePvtBuilderSetTropoDelayMeters =
env->GetMethodID(class_satellitePvtBuilder, "setTropoDelayMeters", env->GetMethodID(class_satellitePvtBuilder, "setTropoDelayMeters",
"(D)Landroid/location/SatellitePvt$Builder;"); "(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", method_satellitePvtBuilderBuild = env->GetMethodID(class_satellitePvtBuilder, "build",
"()Landroid/location/SatellitePvt;"); "()Landroid/location/SatellitePvt;");
@@ -429,6 +449,24 @@ void GnssMeasurementCallbackAidl::translateSingleGnssMeasurement(JNIEnv* env,
satellitePvt.tropoDelayMeters); 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 = jobject satellitePvtObject =
env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderBuild); env->CallObjectMethod(satellitePvtBuilderObject, method_satellitePvtBuilderBuild);
env->CallVoidMethod(object.get(), method_gnssMeasurementsSetSatellitePvt, env->CallVoidMethod(object.get(), method_gnssMeasurementsSetSatellitePvt,

View File

@@ -52,7 +52,7 @@ void setMeasurementData(JNIEnv* env, jobject& callbacksObj, jobject clock,
class GnssMeasurementCallbackAidl : public hardware::gnss::BnGnssMeasurementCallback { class GnssMeasurementCallbackAidl : public hardware::gnss::BnGnssMeasurementCallback {
public: public:
GnssMeasurementCallbackAidl(jobject& callbacksObj) : mCallbacksObj(callbacksObj) {} GnssMeasurementCallbackAidl() : mCallbacksObj(getCallbacksObj()) {}
android::binder::Status gnssMeasurementCb(const hardware::gnss::GnssData& data) override; android::binder::Status gnssMeasurementCb(const hardware::gnss::GnssData& data) override;
private: private:
@@ -78,7 +78,7 @@ private:
*/ */
class GnssMeasurementCallbackHidl : public hardware::gnss::V2_1::IGnssMeasurementCallback { class GnssMeasurementCallbackHidl : public hardware::gnss::V2_1::IGnssMeasurementCallback {
public: public:
GnssMeasurementCallbackHidl(jobject& callbacksObj) : mCallbacksObj(callbacksObj) {} GnssMeasurementCallbackHidl() : mCallbacksObj(getCallbacksObj()) {}
hardware::Return<void> gnssMeasurementCb_2_1( hardware::Return<void> gnssMeasurementCb_2_1(
const hardware::gnss::V2_1::IGnssMeasurementCallback::GnssData& data) override; const hardware::gnss::V2_1::IGnssMeasurementCallback::GnssData& data) override;
hardware::Return<void> gnssMeasurementCb_2_0( hardware::Return<void> gnssMeasurementCb_2_0(
@@ -109,23 +109,22 @@ private:
class GnssMeasurementCallback { class GnssMeasurementCallback {
public: public:
GnssMeasurementCallback(jobject& callbacksObj) : mCallbacksObj(callbacksObj) {} GnssMeasurementCallback() {}
sp<GnssMeasurementCallbackAidl> getAidl() { sp<GnssMeasurementCallbackAidl> getAidl() {
if (callbackAidl == nullptr) { if (callbackAidl == nullptr) {
callbackAidl = sp<GnssMeasurementCallbackAidl>::make(mCallbacksObj); callbackAidl = sp<GnssMeasurementCallbackAidl>::make();
} }
return callbackAidl; return callbackAidl;
} }
sp<GnssMeasurementCallbackHidl> getHidl() { sp<GnssMeasurementCallbackHidl> getHidl() {
if (callbackHidl == nullptr) { if (callbackHidl == nullptr) {
callbackHidl = sp<GnssMeasurementCallbackHidl>::make(mCallbacksObj); callbackHidl = sp<GnssMeasurementCallbackHidl>::make();
} }
return callbackHidl; return callbackHidl;
} }
private: private:
jobject& mCallbacksObj;
sp<GnssMeasurementCallbackAidl> callbackAidl; sp<GnssMeasurementCallbackAidl> callbackAidl;
sp<GnssMeasurementCallbackHidl> callbackHidl; sp<GnssMeasurementCallbackHidl> callbackHidl;
}; };