diff options
| -rw-r--r-- | services/core/jni/com_android_server_location_GnssLocationProvider.cpp | 71 |
1 files changed, 38 insertions, 33 deletions
diff --git a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp index 0a1da5719d3e..cf42c0cd00ef 100644 --- a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp +++ b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp @@ -81,13 +81,9 @@ using android::hardware::Return; using android::hardware::Void; using android::hardware::hidl_vec; using android::hardware::hidl_death_recipient; -using android::hidl::base::V1_0::IBase; using android::hardware::gnss::V1_0::GnssLocation; using android::hardware::gnss::V1_0::GnssLocationFlags; -using IGnss_V1_1 = android::hardware::gnss::V1_1::IGnss; -using IGnssMeasurement_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurement; -using IGnssMeasurement_V1_1 = android::hardware::gnss::V1_1::IGnssMeasurement; -using android::hardware::gnss::V1_0::IGnss; + using android::hardware::gnss::V1_0::IAGnss; using android::hardware::gnss::V1_0::IAGnssCallback; using android::hardware::gnss::V1_0::IAGnssCallback; @@ -99,7 +95,6 @@ using android::hardware::gnss::V1_0::IGnssConfiguration; using android::hardware::gnss::V1_0::IGnssDebug; using android::hardware::gnss::V1_0::IGnssGeofenceCallback; using android::hardware::gnss::V1_0::IGnssGeofencing; -using IGnssMeasurementCallback_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurementCallback; using android::hardware::gnss::V1_0::IGnssNavigationMessage; using android::hardware::gnss::V1_0::IGnssNavigationMessageCallback; using android::hardware::gnss::V1_0::IGnssNi; @@ -108,7 +103,16 @@ using android::hardware::gnss::V1_0::IGnssXtra; using android::hardware::gnss::V1_0::IGnssXtraCallback; using android::hardware::gnss::V1_1::IGnssCallback; -using android::hardware::gnss::V1_1::IGnssMeasurementCallback; + +using android::hidl::base::V1_0::IBase; + +using IGnss_V1_0 = android::hardware::gnss::V1_0::IGnss; +using IGnss_V1_1 = android::hardware::gnss::V1_1::IGnss; +using IGnssMeasurement_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurement; +using IGnssMeasurement_V1_1 = android::hardware::gnss::V1_1::IGnssMeasurement; +using IGnssMeasurementCallback_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurementCallback; +using IGnssMeasurementCallback_V1_1 = android::hardware::gnss::V1_1::IGnssMeasurementCallback; + struct GnssDeathRecipient : virtual public hidl_death_recipient { @@ -122,7 +126,7 @@ struct GnssDeathRecipient : virtual public hidl_death_recipient }; sp<GnssDeathRecipient> gnssHalDeathRecipient = nullptr; -sp<IGnss> gnssHal = nullptr; +sp<IGnss_V1_0> gnssHal = nullptr; sp<IGnss_V1_1> gnssHal_V1_1 = nullptr; sp<IGnssXtra> gnssXtraIface = nullptr; sp<IAGnssRil> agnssRilIface = nullptr; @@ -732,32 +736,33 @@ Return<void> GnssNavigationMessageCallback::gnssNavigationMessageCb( * GnssMeasurementCallback implements the callback methods required for the * GnssMeasurement interface. */ -struct GnssMeasurementCallback : public IGnssMeasurementCallback { - Return<void> gnssMeasurementCb(const IGnssMeasurementCallback::GnssData& data) override; +struct GnssMeasurementCallback : public IGnssMeasurementCallback_V1_1 { + Return<void> gnssMeasurementCb(const IGnssMeasurementCallback_V1_1::GnssData& data) override; Return<void> GnssMeasurementCb(const IGnssMeasurementCallback_V1_0::GnssData& data) override; private: void translateGnssMeasurement_V1_0( JNIEnv* env, const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurement, - JavaObject object); + JavaObject& object); jobjectArray translateGnssMeasurements( JNIEnv* env, - const IGnssMeasurementCallback::GnssMeasurement* measurements, + const IGnssMeasurementCallback_V1_1::GnssMeasurement* measurements_v1_1, const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurements_v1_0, size_t count); jobject translateGnssClock( - JNIEnv* env, const IGnssMeasurementCallback::GnssClock* clock); + JNIEnv* env, const IGnssMeasurementCallback_V1_0::GnssClock* clock); void setMeasurementData(JNIEnv* env, jobject clock, jobjectArray measurementArray); }; Return<void> GnssMeasurementCallback::gnssMeasurementCb( - const IGnssMeasurementCallback::GnssData& data) { + const IGnssMeasurementCallback_V1_1::GnssData& data) { JNIEnv* env = getJniEnv(); jobject clock; jobjectArray measurementArray; clock = translateGnssClock(env, &data.clock); + measurementArray = translateGnssMeasurements( env, data.measurements.data(), NULL, data.measurements.size()); setMeasurementData(env, clock, measurementArray); @@ -787,7 +792,7 @@ Return<void> GnssMeasurementCallback::GnssMeasurementCb( // preallocate object as: JavaObject object(env, "android/location/GnssMeasurement"); void GnssMeasurementCallback::translateGnssMeasurement_V1_0( JNIEnv* env, const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurement, - JavaObject object) { + JavaObject& object) { uint32_t flags = static_cast<uint32_t>(measurement->flags); SET(Svid, static_cast<int32_t>(measurement->svid)); @@ -826,7 +831,7 @@ void GnssMeasurementCallback::translateGnssMeasurement_V1_0( } jobject GnssMeasurementCallback::translateGnssClock( - JNIEnv* env, const IGnssMeasurementCallback::GnssClock* clock) { + JNIEnv* env, const IGnssMeasurementCallback_V1_0::GnssClock* clock) { JavaObject object(env, "android/location/GnssClock"); uint32_t flags = static_cast<uint32_t>(clock->gnssClockFlags); @@ -865,7 +870,7 @@ jobject GnssMeasurementCallback::translateGnssClock( } jobjectArray GnssMeasurementCallback::translateGnssMeasurements(JNIEnv* env, - const IGnssMeasurementCallback::GnssMeasurement* measurements, + const IGnssMeasurementCallback_V1_1::GnssMeasurement* measurements_v1_1, const IGnssMeasurementCallback_V1_0::GnssMeasurement* measurements_v1_0, size_t count) { if (count == 0) { @@ -880,12 +885,12 @@ jobjectArray GnssMeasurementCallback::translateGnssMeasurements(JNIEnv* env, for (uint16_t i = 0; i < count; ++i) { JavaObject object(env, "android/location/GnssMeasurement"); - if (measurements != NULL) { - translateGnssMeasurement_V1_0(env, &(measurements[i].v1_0), object); + if (measurements_v1_1 != NULL) { + translateGnssMeasurement_V1_0(env, &(measurements_v1_1[i].v1_0), object); // Set the V1_1 flag SET(AccumulatedDeltaRangeState, - static_cast<int32_t>(measurements[i].accumulatedDeltaRangeState)); + static_cast<int32_t>(measurements_v1_1[i].accumulatedDeltaRangeState)); } else { translateGnssMeasurement_V1_0(env, &(measurements_v1_0[i]), object); } @@ -1169,7 +1174,7 @@ static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, gnssHal_V1_1 = IGnss_V1_1::getService(); if (gnssHal_V1_1 == nullptr) { ALOGD("gnssHal 1.1 was null, trying 1.0"); - gnssHal = IGnss::getService(); + gnssHal = IGnss_V1_0::getService(); } else { gnssHal = gnssHal_V1_1; } @@ -1367,18 +1372,18 @@ static jboolean android_location_GnssLocationProvider_set_position_mode(JNIEnv* jint preferred_time, jboolean low_power_mode) { Return<bool> result = false; if (gnssHal_V1_1 != nullptr) { - result = gnssHal_V1_1->setPositionMode_1_1(static_cast<IGnss::GnssPositionMode>(mode), - static_cast<IGnss::GnssPositionRecurrence>(recurrence), - min_interval, - preferred_accuracy, - preferred_time, - low_power_mode); + result = gnssHal_V1_1->setPositionMode_1_1(static_cast<IGnss_V1_0::GnssPositionMode>(mode), + static_cast<IGnss_V1_0::GnssPositionRecurrence>(recurrence), + min_interval, + preferred_accuracy, + preferred_time, + low_power_mode); } else if (gnssHal != nullptr) { - result = gnssHal->setPositionMode(static_cast<IGnss::GnssPositionMode>(mode), - static_cast<IGnss::GnssPositionRecurrence>(recurrence), - min_interval, - preferred_accuracy, - preferred_time); + result = gnssHal->setPositionMode(static_cast<IGnss_V1_0::GnssPositionMode>(mode), + static_cast<IGnss_V1_0::GnssPositionRecurrence>(recurrence), + min_interval, + preferred_accuracy, + preferred_time); } if (!result.isOk()) { ALOGE("%s: GNSS setPositionMode failed\n", __func__); @@ -1417,7 +1422,7 @@ static void android_location_GnssLocationProvider_delete_aiding_data(JNIEnv* /* jobject /* obj */, jint flags) { if (gnssHal != nullptr) { - auto result = gnssHal->deleteAidingData(static_cast<IGnss::GnssAidingData>(flags)); + auto result = gnssHal->deleteAidingData(static_cast<IGnss_V1_0::GnssAidingData>(flags)); if (!result.isOk()) { ALOGE("Error in deleting aiding data"); } |