diff options
author | Mike Cailean <mcailean@codeaurora.org> | 2019-02-04 16:28:51 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-02-21 21:34:40 -0800 |
commit | 4149abcc2df9ac7bd13f38cb5047053a63f7b84b (patch) | |
tree | f472abcbee65d558f9805148494a4cc870f52692 /android/2.0/GnssMeasurement.cpp | |
parent | e78728024dd2b1998811478494319be07458d05e (diff) | |
download | gps-4149abcc2df9ac7bd13f38cb5047053a63f7b84b.tar.gz |
Measurement changes in GNSS HIDL2.0
CRs-fixed: 2385560
Change-Id: I5f4548e6df0cb8ac3f2762020dfdbb49a9022854
Diffstat (limited to 'android/2.0/GnssMeasurement.cpp')
-rw-r--r-- | android/2.0/GnssMeasurement.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/android/2.0/GnssMeasurement.cpp b/android/2.0/GnssMeasurement.cpp index 5984a60..48dabf3 100644 --- a/android/2.0/GnssMeasurement.cpp +++ b/android/2.0/GnssMeasurement.cpp @@ -52,10 +52,10 @@ GnssMeasurement::~GnssMeasurement() { } // Methods from ::android::hardware::gnss::V1_0::IGnssMeasurement follow. -Return<IGnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback( +Return<GnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback( const sp<V1_0::IGnssMeasurementCallback>& callback) { - Return<IGnssMeasurement::GnssMeasurementStatus> ret = + Return<GnssMeasurement::GnssMeasurementStatus> ret = IGnssMeasurement::GnssMeasurementStatus::ERROR_GENERIC; if (mGnssMeasurementCbIface != nullptr) { LOC_LOGE("%s]: GnssMeasurementCallback is already set", __FUNCTION__); @@ -100,7 +100,7 @@ Return<void> GnssMeasurement::close() { Return<GnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback_1_1( const sp<V1_1::IGnssMeasurementCallback>& callback, bool enableFullTracking) { - Return<IGnssMeasurement::GnssMeasurementStatus> ret = + Return<GnssMeasurement::GnssMeasurementStatus> ret = IGnssMeasurement::GnssMeasurementStatus::ERROR_GENERIC; if (mGnssMeasurementCbIface_1_1 != nullptr) { LOC_LOGE("%s]: GnssMeasurementCallback is already set", __FUNCTION__); @@ -128,7 +128,30 @@ Return<GnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback_1_1( Return<V1_0::IGnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback_2_0( const sp<V2_0::IGnssMeasurementCallback>& callback, bool enableFullTracking) { - return V1_0::IGnssMeasurement::GnssMeasurementStatus::SUCCESS; + + Return<GnssMeasurement::GnssMeasurementStatus> ret = + IGnssMeasurement::GnssMeasurementStatus::ERROR_GENERIC; + if (mGnssMeasurementCbIface_2_0 != nullptr) { + LOC_LOGE("%s]: GnssMeasurementCallback is already set", __FUNCTION__); + return IGnssMeasurement::GnssMeasurementStatus::ERROR_ALREADY_INIT; + } + + if (callback == nullptr) { + LOC_LOGE("%s]: callback is nullptr", __FUNCTION__); + return ret; + } + if (nullptr == mApi) { + LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__); + return ret; + } + + mGnssMeasurementCbIface_2_0 = callback; + mGnssMeasurementCbIface_2_0->linkToDeath(mGnssMeasurementDeathRecipient, 0); + + GnssPowerMode powerMode = enableFullTracking ? + GNSS_POWER_MODE_M1 : GNSS_POWER_MODE_M2; + + return mApi->measurementSetCallback_2_0(callback, powerMode); } } // namespace implementation |