From c1c257bc9d2b949f3460d0ca7c001b2cd260ae7e Mon Sep 17 00:00:00 2001 From: Sasha Kuznetsov Date: Fri, 13 Dec 2019 13:08:16 -0800 Subject: [PATCH] Implement some methods in 2.1 default implementation Test: atest VtsHalGnssV2_0TargetTest builds and runs Bug: 146216289 Change-Id: I8b024bff5b04b97298813293e39ee865eaf389b4 --- gnss/2.1/default/Gnss.cpp | 44 ++++++++++++++++++++++++++++++++------- gnss/2.1/default/Gnss.h | 1 + 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/gnss/2.1/default/Gnss.cpp b/gnss/2.1/default/Gnss.cpp index 384fd49cf6..fd7a9dfd0d 100644 --- a/gnss/2.1/default/Gnss.cpp +++ b/gnss/2.1/default/Gnss.cpp @@ -31,6 +31,7 @@ namespace V2_1 { namespace implementation { sp Gnss::sGnssCallback_2_1 = nullptr; +sp Gnss::sGnssCallback_2_0 = nullptr; Gnss::Gnss() : mMinIntervalMs(1000), mGnssConfiguration{new GnssConfiguration()} {} @@ -190,14 +191,42 @@ Return Gnss::injectBestLocation(const V1_0::GnssLocation&) { } // Methods from V2_0::IGnss follow. -Return Gnss::setCallback_2_0(const sp&) { - // TODO implement - return bool{}; +Return Gnss::setCallback_2_0(const sp& callback) { + ALOGD("Gnss::setCallback_2_0"); + if (callback == nullptr) { + ALOGE("%s: Null callback ignored", __func__); + return false; + } + + sGnssCallback_2_0 = callback; + + using Capabilities = V2_0::IGnssCallback::Capabilities; + const auto capabilities = Capabilities::MEASUREMENTS | Capabilities::MEASUREMENT_CORRECTIONS | + Capabilities::LOW_POWER_MODE | Capabilities::SATELLITE_BLACKLIST; + auto ret = sGnssCallback_2_0->gnssSetCapabilitiesCb_2_0(capabilities); + if (!ret.isOk()) { + ALOGE("%s: Unable to invoke callback", __func__); + } + + V1_1::IGnssCallback::GnssSystemInfo gnssInfo = {.yearOfHw = 2019}; + + ret = sGnssCallback_2_0->gnssSetSystemInfoCb(gnssInfo); + if (!ret.isOk()) { + ALOGE("%s: Unable to invoke callback", __func__); + } + + auto gnssName = "Google Mock GNSS Implementation v2.0"; + ret = sGnssCallback_2_0->gnssNameCb(gnssName); + if (!ret.isOk()) { + ALOGE("%s: Unable to invoke callback", __func__); + } + + return true; } Return> Gnss::getExtensionGnssConfiguration_2_0() { - // TODO implement - return ::android::sp{}; + ALOGD("Gnss::getExtensionGnssConfiguration_2_0"); + return mGnssConfiguration; } Return> Gnss::getExtensionGnssDebug_2_0() { @@ -216,8 +245,8 @@ Return> Gnss::getExtensionAGnssRil_2_0() { } Return> Gnss::getExtensionGnssMeasurement_2_0() { - // TODO implement - return ::android::sp{}; + ALOGD("Gnss::getExtensionGnssMeasurement_2_0"); + return new GnssMeasurement(); } Return> @@ -281,6 +310,7 @@ Return> Gnss::getExtensionGnssMeasurement_2_1() { } Return> Gnss::getExtensionGnssConfiguration_2_1() { + ALOGD("Gnss::getExtensionGnssConfiguration_2_1"); return mGnssConfiguration; } diff --git a/gnss/2.1/default/Gnss.h b/gnss/2.1/default/Gnss.h index 674b070d99..7917bbd6a2 100644 --- a/gnss/2.1/default/Gnss.h +++ b/gnss/2.1/default/Gnss.h @@ -95,6 +95,7 @@ struct Gnss : public IGnss { void reportSvStatus(const hidl_vec&) const; static sp sGnssCallback_2_1; + static sp sGnssCallback_2_0; std::atomic mMinIntervalMs; sp mGnssConfiguration; std::atomic mIsActive;