summaryrefslogtreecommitdiff
path: root/android/2.0/GnssMeasurement.cpp
diff options
context:
space:
mode:
authorMike Cailean <mcailean@codeaurora.org>2019-02-04 16:28:51 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2019-02-21 21:34:40 -0800
commit4149abcc2df9ac7bd13f38cb5047053a63f7b84b (patch)
treef472abcbee65d558f9805148494a4cc870f52692 /android/2.0/GnssMeasurement.cpp
parente78728024dd2b1998811478494319be07458d05e (diff)
downloadgps-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.cpp31
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