diff options
author | Baili Feng <bailif@codeaurora.org> | 2018-01-08 16:21:29 +0800 |
---|---|---|
committer | Baili Feng <bailif@codeaurora.org> | 2018-04-10 08:24:34 +0800 |
commit | d856a9414d745634c9dff7650a4d3dc48b8563f0 (patch) | |
tree | 5a596bcff98c58d78025c40170f6bddb7888c0f7 /android/GnssMeasurement.cpp | |
parent | ab95d2dc2e128793d6616f65916e40d25a82cedd (diff) | |
download | gps-d856a9414d745634c9dff7650a4d3dc48b8563f0.tar.gz |
hidl gnss hal 1.1 implementation
Implement new apis for IGnss 1.1
Change-Id: I2c98c32355f6d9681d51b709697e49ec735fe1cf
CRs-fixed: 2133458
Diffstat (limited to 'android/GnssMeasurement.cpp')
-rw-r--r-- | android/GnssMeasurement.cpp | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/android/GnssMeasurement.cpp b/android/GnssMeasurement.cpp index 8cbfabd..2578a85 100644 --- a/android/GnssMeasurement.cpp +++ b/android/GnssMeasurement.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, The Linux Foundation. All rights reserved. + * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. * Not a Contribution */ /* @@ -27,7 +27,7 @@ namespace android { namespace hardware { namespace gnss { -namespace V1_0 { +namespace V1_1 { namespace implementation { void GnssMeasurement::GnssMeasurementDeathRecipient::serviceDied( @@ -52,8 +52,9 @@ GnssMeasurement::~GnssMeasurement() { } // Methods from ::android::hardware::gnss::V1_0::IGnssMeasurement follow. + Return<IGnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback( - const sp<IGnssMeasurementCallback>& callback) { + const sp<V1_0::IGnssMeasurementCallback>& callback) { Return<IGnssMeasurement::GnssMeasurementStatus> ret = IGnssMeasurement::GnssMeasurementStatus::ERROR_GENERIC; @@ -72,9 +73,10 @@ Return<IGnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback( } mGnssMeasurementCbIface = callback; - mGnssMeasurementCbIface->linkToDeath(mGnssMeasurementDeathRecipient, 0 /*cookie*/); + mGnssMeasurementCbIface->linkToDeath(mGnssMeasurementDeathRecipient, 0); return mApi->measurementSetCallback(callback); + } Return<void> GnssMeasurement::close() { @@ -87,13 +89,43 @@ Return<void> GnssMeasurement::close() { mGnssMeasurementCbIface->unlinkToDeath(mGnssMeasurementDeathRecipient); mGnssMeasurementCbIface = nullptr; } + if (mGnssMeasurementCbIface_1_1 != nullptr) { + mGnssMeasurementCbIface_1_1->unlinkToDeath(mGnssMeasurementDeathRecipient); + mGnssMeasurementCbIface_1_1 = nullptr; + } mApi->measurementClose(); return Void(); } +// Methods from ::android::hardware::gnss::V1_1::IGnssMeasurement follow. +Return<GnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback_1_1( + const sp<IGnssMeasurementCallback>& callback, bool /*enableFullTracking*/) { + + Return<IGnssMeasurement::GnssMeasurementStatus> ret = + IGnssMeasurement::GnssMeasurementStatus::ERROR_GENERIC; + if (mGnssMeasurementCbIface_1_1 != 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 (mApi == nullptr) { + LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__); + return ret; + } + + mGnssMeasurementCbIface_1_1 = callback; + mGnssMeasurementCbIface_1_1->linkToDeath(mGnssMeasurementDeathRecipient, 0); + + return mApi->measurementSetCallback_1_1(callback); +} + } // namespace implementation -} // namespace V1_0 +} // namespace V1_1 } // namespace gnss } // namespace hardware } // namespace android |