From 2f13c07c50382428519953e1f434c0e18fb8fea3 Mon Sep 17 00:00:00 2001 From: Donghui Han Date: Thu, 21 Mar 2019 17:41:16 +0000 Subject: [PATCH] Revert "Update GNSS Batching to use new GnssLocation with elapsed realtime (framework)" This reverts commit 4ca5e6c596526395dadfc7680d2ebed284b65616. Reason for revert: Change-Id: I75ed57659ec5b847ce630cd4e7e03ab07bd2a3bc --- ...ndroid_server_location_GnssLocationProvider.cpp | 88 +++++++--------------- 1 file changed, 28 insertions(+), 60 deletions(-) diff --git a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp index 65a7eec60f63..a6e9fdde7735 100644 --- a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp +++ b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp @@ -117,6 +117,8 @@ using android::hardware::hidl_death_recipient; using android::hardware::gnss::V1_0::GnssConstellationType; using android::hardware::gnss::V1_0::GnssLocationFlags; using android::hardware::gnss::V1_0::IAGnssRilCallback; +using android::hardware::gnss::V1_0::IGnssBatching; +using android::hardware::gnss::V1_0::IGnssBatchingCallback; using android::hardware::gnss::V1_0::IGnssGeofenceCallback; using android::hardware::gnss::V1_0::IGnssGeofencing; using android::hardware::gnss::V1_0::IGnssNavigationMessage; @@ -158,10 +160,6 @@ using IAGnss_V1_0 = android::hardware::gnss::V1_0::IAGnss; using IAGnss_V2_0 = android::hardware::gnss::V2_0::IAGnss; using IAGnssCallback_V1_0 = android::hardware::gnss::V1_0::IAGnssCallback; using IAGnssCallback_V2_0 = android::hardware::gnss::V2_0::IAGnssCallback; -using IGnssBatching_V1_0 = android::hardware::gnss::V1_0::IGnssBatching; -using IGnssBatching_V2_0 = android::hardware::gnss::V2_0::IGnssBatching; -using IGnssBatchingCallback_V1_0 = android::hardware::gnss::V1_0::IGnssBatchingCallback; -using IGnssBatchingCallback_V2_0 = android::hardware::gnss::V2_0::IGnssBatchingCallback; using android::hardware::gnss::measurement_corrections::V1_0::IMeasurementCorrections; using android::hardware::gnss::measurement_corrections::V1_0::IMeasurementCorrectionsCallback; @@ -194,8 +192,7 @@ sp agnssRilIface_V2_0 = nullptr; sp gnssGeofencingIface = nullptr; sp agnssIface = nullptr; sp agnssIface_V2_0 = nullptr; -sp gnssBatchingIface = nullptr; -sp gnssBatchingIface_V2_0 = nullptr; +sp gnssBatchingIface = nullptr; sp gnssDebugIface = nullptr; sp gnssDebugIface_V2_0 = nullptr; sp gnssConfigurationIface = nullptr; @@ -1448,15 +1445,20 @@ Return AGnssRilCallback::requestRefLocCb() { return Void(); } -struct GnssBatchingCallbackUtil { - template - static Return gnssLocationBatchCbImpl(const hidl_vec& locations); -private: - GnssBatchingCallbackUtil() = delete; +/* + * GnssBatchingCallback interface implements the callback methods + * required by the IGnssBatching interface. + */ +struct GnssBatchingCallback : public IGnssBatchingCallback { + /* + * Methods from ::android::hardware::gps::V1_0::IGnssBatchingCallback + * follow. + */ + Return gnssLocationBatchCb(const hidl_vec& locations) override; }; -template -Return GnssBatchingCallbackUtil::gnssLocationBatchCbImpl(const hidl_vec& locations) { +Return GnssBatchingCallback::gnssLocationBatchCb( + const hidl_vec& locations) { JNIEnv* env = getJniEnv(); jobjectArray jLocations = env->NewObjectArray(locations.size(), @@ -1476,28 +1478,6 @@ Return GnssBatchingCallbackUtil::gnssLocationBatchCbImpl(const hidl_vec return Void(); } -/* - * GnssBatchingCallback_V1_0 class implements the callback methods required by the - * IGnssBatching 1.0 interface. - */ -struct GnssBatchingCallback_V1_0 : public IGnssBatchingCallback_V1_0 { - /** Methods from ::android::hardware::gps::V1_0::IGnssBatchingCallback follow. */ - Return gnssLocationBatchCb(const hidl_vec& locations) override { - return GnssBatchingCallbackUtil::gnssLocationBatchCbImpl(locations); - } -}; - -/* - * GnssBatchingCallback_V2_0 class implements the callback methods required by the - * IGnssBatching 2.0 interface. - */ -struct GnssBatchingCallback_V2_0 : public IGnssBatchingCallback_V2_0 { - /** Methods from ::android::hardware::gps::V2_0::IGnssBatchingCallback follow. */ - Return gnssLocationBatchCb(const hidl_vec& locations) override { - return GnssBatchingCallbackUtil::gnssLocationBatchCbImpl(locations); - } -}; - static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, jclass clazz) { gnssHal_V2_0 = IGnss_V2_0::getService(); if (gnssHal_V2_0 != nullptr) { @@ -1773,22 +1753,11 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass gnssGeofencingIface = gnssGeofencing; } - // If IGnssBatching.hal@2.0 is not supported, use IGnssBatching.hal@1.0 - if (gnssHal_V2_0 != nullptr) { - auto gnssBatching_V2_0 = gnssHal_V2_0->getExtensionGnssBatching_2_0(); - if (!gnssBatching_V2_0.isOk()) { - ALOGD("Unable to get a handle to GnssBatching_V2_0"); - } else { - gnssBatchingIface_V2_0 = gnssBatching_V2_0; - } - } - if (gnssBatchingIface_V2_0 == nullptr ) { - auto gnssBatching_V1_0 = gnssHal->getExtensionGnssBatching(); - if (!gnssBatching_V1_0.isOk()) { - ALOGD("Unable to get a handle to GnssBatching"); - } else { - gnssBatchingIface = gnssBatching_V1_0; - } + auto gnssBatching = gnssHal->getExtensionGnssBatching(); + if (!gnssBatching.isOk()) { + ALOGD("Unable to get a handle to gnssBatching"); + } else { + gnssBatchingIface = gnssBatching; } if (gnssHal_V2_0 != nullptr) { @@ -2154,6 +2123,8 @@ struct AGnssDispatcher { private: AGnssDispatcher() = delete; + AGnssDispatcher(const AGnssDispatcher&) = delete; + AGnssDispatcher& operator=(const AGnssDispatcher&) = delete; }; void AGnssDispatcher::dataConnOpen(sp agnssIface, JNIEnv* env, jstring apn, @@ -2877,15 +2848,12 @@ static jint android_location_GnssBatchingProvider_get_batch_size(JNIEnv*, jclass } static jboolean android_location_GnssBatchingProvider_init_batching(JNIEnv*, jclass) { - if (gnssBatchingIface_V2_0 != nullptr) { - sp gnssBatchingCbIface_V2_0 = new GnssBatchingCallback_V2_0(); - return static_cast(gnssBatchingIface_V2_0->init_2_0(gnssBatchingCbIface_V2_0)); - } else if (gnssBatchingIface != nullptr) { - sp gnssBatchingCbIface_V1_0 = new GnssBatchingCallback_V1_0(); - return static_cast(gnssBatchingIface->init(gnssBatchingCbIface_V1_0)); - } else { + if (gnssBatchingIface == nullptr) { return JNI_FALSE; // batching not supported } + sp gnssBatchingCbIface = new GnssBatchingCallback(); + + return static_cast(gnssBatchingIface->init(gnssBatchingCbIface)); } static void android_location_GnssBatchingProvider_cleanup_batching(JNIEnv*, jclass) { @@ -2901,10 +2869,10 @@ static jboolean android_location_GnssBatchingProvider_start_batch(JNIEnv*, jclas return JNI_FALSE; // batching not supported } - IGnssBatching_V1_0::Options options; + IGnssBatching::Options options; options.periodNanos = periodNanos; if (wakeOnFifoFull) { - options.flags = static_cast(IGnssBatching_V1_0::Flag::WAKEUP_ON_FIFO_FULL); + options.flags = static_cast(IGnssBatching::Flag::WAKEUP_ON_FIFO_FULL); } else { options.flags = 0; } -- 2.11.0