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.intervalMs = intervalMs;
return gnssMeasurementIface->setCallback(std::make_unique<gnss::GnssMeasurementCallback>(
mCallbacksObj),
return gnssMeasurementIface->setCallback(std::make_unique<gnss::GnssMeasurementCallback>(),
options);
}

View File

@@ -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,

View File

@@ -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;
};