summaryrefslogtreecommitdiff
path: root/gps/android
diff options
context:
space:
mode:
Diffstat (limited to 'gps/android')
-rw-r--r--gps/android/AGnss.cpp203
-rw-r--r--gps/android/AGnss.h79
-rw-r--r--gps/android/AGnssRil.cpp93
-rw-r--r--gps/android/AGnssRil.h83
-rw-r--r--gps/android/Android.mk91
-rw-r--r--gps/android/Gnss.cpp343
-rw-r--r--gps/android/Gnss.h143
-rw-r--r--gps/android/GnssBatching.cpp130
-rw-r--r--gps/android/GnssBatching.h80
-rw-r--r--gps/android/GnssConfiguration.cpp227
-rw-r--r--gps/android/GnssConfiguration.h71
-rw-r--r--gps/android/GnssDebug.cpp190
-rw-r--r--gps/android/GnssDebug.h59
-rw-r--r--gps/android/GnssGeofencing.cpp141
-rw-r--r--gps/android/GnssGeofencing.h91
-rw-r--r--gps/android/GnssMeasurement.cpp101
-rw-r--r--gps/android/GnssMeasurement.h77
-rw-r--r--gps/android/GnssNi.cpp85
-rw-r--r--gps/android/GnssNi.h75
-rw-r--r--gps/android/android.hardware.gnss@1.1-service-qti.rc4
-rw-r--r--gps/android/location_api/BatchingAPIClient.cpp196
-rw-r--r--gps/android/location_api/BatchingAPIClient.h74
-rw-r--r--gps/android/location_api/GeofenceAPIClient.cpp275
-rw-r--r--gps/android/location_api/GeofenceAPIClient.h76
-rw-r--r--gps/android/location_api/GnssAPIClient.cpp537
-rw-r--r--gps/android/location_api/GnssAPIClient.h108
-rw-r--r--gps/android/location_api/LocationUtil.cpp188
-rw-r--r--gps/android/location_api/LocationUtil.h55
-rw-r--r--gps/android/location_api/MeasurementAPIClient.cpp275
-rw-r--r--gps/android/location_api/MeasurementAPIClient.h76
-rw-r--r--gps/android/service.cpp31
31 files changed, 0 insertions, 4257 deletions
diff --git a/gps/android/AGnss.cpp b/gps/android/AGnss.cpp
deleted file mode 100644
index faaf75e..0000000
--- a/gps/android/AGnss.cpp
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc_AGnssInterface"
-
-#include <log_util.h>
-#include "Gnss.h"
-#include "AGnss.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-static AGnss* spAGnss = nullptr;
-
-AGnss::AGnss(Gnss* gnss) : mGnss(gnss) {
- spAGnss = this;
-}
-
-AGnss::~AGnss() {
- spAGnss = nullptr;
-}
-
-void AGnss::agnssStatusIpV4Cb(AGnssExtStatusIpV4 status){
- if (nullptr != spAGnss) {
- spAGnss->statusIpV4Cb(status);
- }
-}
-
-void AGnss::statusIpV4Cb(AGnssExtStatusIpV4 status) {
- IAGnssCallback::AGnssStatusIpV4 st = {};
-
- switch (status.type) {
- case LOC_AGPS_TYPE_SUPL:
- st.type = IAGnssCallback::AGnssType::TYPE_SUPL;
- break;
- case LOC_AGPS_TYPE_C2K:
- st.type = IAGnssCallback::AGnssType::TYPE_C2K;
- break;
- default:
- LOC_LOGE("invalid type: %d", status.type);
- return;
- }
-
- switch (status.status) {
- case LOC_GPS_REQUEST_AGPS_DATA_CONN:
- st.status = IAGnssCallback::AGnssStatusValue::REQUEST_AGNSS_DATA_CONN;
- break;
- case LOC_GPS_RELEASE_AGPS_DATA_CONN:
- st.status = IAGnssCallback::AGnssStatusValue::RELEASE_AGNSS_DATA_CONN;
- break;
- case LOC_GPS_AGPS_DATA_CONNECTED:
- st.status = IAGnssCallback::AGnssStatusValue::AGNSS_DATA_CONNECTED;
- break;
- case LOC_GPS_AGPS_DATA_CONN_DONE:
- st.status = IAGnssCallback::AGnssStatusValue::AGNSS_DATA_CONN_DONE;
- break;
- case LOC_GPS_AGPS_DATA_CONN_FAILED:
- st.status = IAGnssCallback::AGnssStatusValue::AGNSS_DATA_CONN_FAILED;
- break;
- default:
- LOC_LOGE("invalid status: %d", status.status);
- return;
- }
- st.ipV4Addr = status.ipV4Addr;
-
- if (mAGnssCbIface != nullptr) {
- auto r = mAGnssCbIface->agnssStatusIpV4Cb(st);
- if (!r.isOk()) {
- LOC_LOGw("Error invoking AGNSS status cb %s", r.description().c_str());
- }
- } else {
- LOC_LOGw("setCallback has not been called yet");
- }
-}
-
-Return<void> AGnss::setCallback(const sp<IAGnssCallback>& callback) {
-
- if(mGnss == nullptr || mGnss->getGnssInterface() == nullptr){
- LOC_LOGE("Null GNSS interface");
- return Void();
- }
-
- // Save the interface
- mAGnssCbIface = callback;
-
- AgpsCbInfo cbInfo = {};
- cbInfo.statusV4Cb = (void*)agnssStatusIpV4Cb;
- cbInfo.cbPriority = AGPS_CB_PRIORITY_LOW;
-
- mGnss->getGnssInterface()->agpsInit(cbInfo);
- return Void();
-}
-
-Return<bool> AGnss::dataConnClosed() {
-
- if(mGnss == nullptr || mGnss->getGnssInterface() == nullptr){
- LOC_LOGE("Null GNSS interface");
- return false;
- }
-
- mGnss->getGnssInterface()->agpsDataConnClosed(LOC_AGPS_TYPE_SUPL);
- return true;
-}
-
-Return<bool> AGnss::dataConnFailed() {
-
- if(mGnss == nullptr || mGnss->getGnssInterface() == nullptr){
- LOC_LOGE("Null GNSS interface");
- return false;
- }
-
- mGnss->getGnssInterface()->agpsDataConnFailed(LOC_AGPS_TYPE_SUPL);
- return true;
-}
-
-Return<bool> AGnss::dataConnOpen(const hidl_string& apn,
- IAGnss::ApnIpType apnIpType) {
-
- if(mGnss == nullptr || mGnss->getGnssInterface() == nullptr){
- LOC_LOGE("Null GNSS interface");
- return false;
- }
-
- /* Validate */
- if(apn.empty()){
- LOC_LOGE("Invalid APN");
- return false;
- }
-
- LOC_LOGD("dataConnOpen APN name = [%s]", apn.c_str());
-
- AGpsBearerType bearerType;
- switch (apnIpType) {
- case IAGnss::ApnIpType::IPV4:
- bearerType = AGPS_APN_BEARER_IPV4;
- break;
- case IAGnss::ApnIpType::IPV6:
- bearerType = AGPS_APN_BEARER_IPV6;
- break;
- case IAGnss::ApnIpType::IPV4V6:
- bearerType = AGPS_APN_BEARER_IPV4V6;
- break;
- default:
- bearerType = AGPS_APN_BEARER_IPV4;
- break;
- }
-
- mGnss->getGnssInterface()->agpsDataConnOpen(
- LOC_AGPS_TYPE_SUPL, apn.c_str(), apn.size(), (int)bearerType);
- return true;
-}
-
-Return<bool> AGnss::setServer(IAGnssCallback::AGnssType type,
- const hidl_string& hostname,
- int32_t port) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
- config.flags = GNSS_CONFIG_FLAGS_SET_ASSISTANCE_DATA_VALID_BIT;
- config.assistanceServer.size = sizeof(GnssConfigSetAssistanceServer);
- if (type == IAGnssCallback::AGnssType::TYPE_SUPL) {
- config.assistanceServer.type = GNSS_ASSISTANCE_TYPE_SUPL;
- } else if (type == IAGnssCallback::AGnssType::TYPE_C2K) {
- config.assistanceServer.type = GNSS_ASSISTANCE_TYPE_C2K;
- } else {
- LOC_LOGE("%s]: invalid AGnssType: %d", __FUNCTION__, static_cast<int>(type));
- return false;
- }
- config.assistanceServer.hostName = strdup(hostname.c_str());
- config.assistanceServer.port = port;
- return mGnss->updateConfiguration(config);
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/AGnss.h b/gps/android/AGnss.h
deleted file mode 100644
index cdd5931..0000000
--- a/gps/android/AGnss.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_AGNSS_H
-#define ANDROID_HARDWARE_GNSS_V1_0_AGNSS_H
-
-#include <android/hardware/gnss/1.0/IAGnss.h>
-#include <hidl/Status.h>
-#include <gps_extended_c.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IAGnss;
-using ::android::hardware::gnss::V1_0::IAGnssCallback;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
-struct Gnss;
-struct AGnss : public IAGnss {
-
- AGnss(Gnss* gnss);
- ~AGnss();
- /*
- * Methods from ::android::hardware::gnss::V1_0::IAGnss interface follow.
- * These declarations were generated from IAGnss.hal.
- */
- Return<void> setCallback(const sp<IAGnssCallback>& callback) override;
-
- Return<bool> dataConnClosed() override;
-
- Return<bool> dataConnFailed() override;
-
- Return<bool> dataConnOpen(const hidl_string& apn,
- IAGnss::ApnIpType apnIpType) override;
-
- Return<bool> setServer(IAGnssCallback::AGnssType type,
- const hidl_string& hostname, int32_t port) override;
-
- void statusIpV4Cb(AGnssExtStatusIpV4 status);
-
- /* Data call setup callback passed down to GNSS HAL implementation */
- static void agnssStatusIpV4Cb(AGnssExtStatusIpV4 status);
-
- private:
- Gnss* mGnss = nullptr;
- sp<IAGnssCallback> mAGnssCbIface = nullptr;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_AGNSS_H
diff --git a/gps/android/AGnssRil.cpp b/gps/android/AGnssRil.cpp
deleted file mode 100644
index f4b9849..0000000
--- a/gps/android/AGnssRil.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc__AGnssRilInterface"
-
-#include <log_util.h>
-#include <dlfcn.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sstream>
-#include <string>
-#include "Gnss.h"
-#include "AGnssRil.h"
-#include <DataItemConcreteTypesBase.h>
-
-typedef void* (getLocationInterface)();
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-
-AGnssRil::AGnssRil(Gnss* gnss) : mGnss(gnss) {
- ENTRY_LOG_CALLFLOW();
-}
-
-AGnssRil::~AGnssRil() {
- ENTRY_LOG_CALLFLOW();
-}
-
-Return<bool> AGnssRil::updateNetworkState(bool connected, NetworkType type, bool /*roaming*/) {
- ENTRY_LOG_CALLFLOW();
-
- // for XTRA
- if (nullptr != mGnss && ( nullptr != mGnss->getGnssInterface() )) {
- int8_t typeout = loc_core::NetworkInfoDataItemBase::TYPE_UNKNOWN;
- switch(type)
- {
- case IAGnssRil::NetworkType::MOBILE:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_MOBILE;
- break;
- case IAGnssRil::NetworkType::WIFI:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_WIFI;
- break;
- case IAGnssRil::NetworkType::MMS:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_MMS;
- break;
- case IAGnssRil::NetworkType::SUPL:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_SUPL;
- break;
- case IAGnssRil::NetworkType::DUN:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_DUN;
- break;
- case IAGnssRil::NetworkType::HIPRI:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_HIPRI;
- break;
- case IAGnssRil::NetworkType::WIMAX:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_WIMAX;
- break;
- default:
- typeout = loc_core::NetworkInfoDataItemBase::TYPE_UNKNOWN;
- break;
- }
- mGnss->getGnssInterface()->updateConnectionStatus(connected, typeout);
- }
- return true;
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/AGnssRil.h b/gps/android/AGnssRil.h
deleted file mode 100644
index 7f18c57..0000000
--- a/gps/android/AGnssRil.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_AGNSSRIL_H_
-#define ANDROID_HARDWARE_GNSS_V1_0_AGNSSRIL_H_
-
-#include <android/hardware/gnss/1.0/IAGnssRil.h>
-#include <hidl/Status.h>
-#include <location_interface.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IAGnssRil;
-using ::android::hardware::gnss::V1_0::IAGnssRilCallback;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
-struct Gnss;
-/*
- * Extended interface for AGNSS RIL support. An Assisted GNSS Radio Interface Layer interface
- * allows the GNSS chipset to request radio interface layer information from Android platform.
- * Examples of such information are reference location, unique subscriber ID, phone number string
- * and network availability changes. Also contains wrapper methods to allow methods from
- * IAGnssiRilCallback interface to be passed into the conventional implementation of the GNSS HAL.
- */
-struct AGnssRil : public IAGnssRil {
- AGnssRil(Gnss* gnss);
- ~AGnssRil();
-
- /*
- * Methods from ::android::hardware::gnss::V1_0::IAGnssRil follow.
- * These declarations were generated from IAGnssRil.hal.
- */
- Return<void> setCallback(const sp<IAGnssRilCallback>& /*callback*/) override {
- return Void();
- }
- Return<void> setRefLocation(const IAGnssRil::AGnssRefLocation& /*agnssReflocation*/) override {
- return Void();
- }
- Return<bool> setSetId(IAGnssRil::SetIDType /*type*/, const hidl_string& /*setid*/) override {
- return false;
- }
- Return<bool> updateNetworkAvailability(bool /*available*/,
- const hidl_string& /*apn*/) override {
- return false;
- }
- Return<bool> updateNetworkState(bool connected, NetworkType type, bool roaming) override;
-
- private:
- Gnss* mGnss = nullptr;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_AGNSSRIL_H_
diff --git a/gps/android/Android.mk b/gps/android/Android.mk
deleted file mode 100644
index dc721db..0000000
--- a/gps/android/Android.mk
+++ /dev/null
@@ -1,91 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.gnss@1.0-impl-qti
-LOCAL_VENDOR_MODULE := true
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SRC_FILES := \
- AGnss.cpp \
- Gnss.cpp \
- GnssBatching.cpp \
- GnssGeofencing.cpp \
- GnssMeasurement.cpp \
- GnssNi.cpp \
- GnssConfiguration.cpp \
- GnssDebug.cpp \
- AGnssRil.cpp
-
-LOCAL_SRC_FILES += \
- location_api/LocationUtil.cpp \
- location_api/GnssAPIClient.cpp \
- location_api/GeofenceAPIClient.cpp \
- location_api/BatchingAPIClient.cpp \
- location_api/MeasurementAPIClient.cpp \
-
-LOCAL_C_INCLUDES:= \
- $(LOCAL_PATH)/location_api
-LOCAL_HEADER_LIBRARIES := \
- libgps.utils_headers \
- libloc_core_headers \
- libloc_pla_headers \
- liblocation_api_headers
-
-LOCAL_SHARED_LIBRARIES := \
- liblog \
- libhidlbase \
- libhidltransport \
- libhwbinder \
- libcutils \
- libutils \
- android.hardware.gnss@1.0 \
-
-LOCAL_SHARED_LIBRARIES += \
- libloc_core \
- libgps.utils \
- libdl \
- liblocation_api \
-
-LOCAL_CFLAGS += $(GNSS_CFLAGS)
-include $(BUILD_SHARED_LIBRARY)
-
-BUILD_GNSS_HIDL_SERVICE := true
-ifneq ($(BOARD_VENDOR_QCOM_LOC_PDK_FEATURE_SET), true)
-ifneq ($(LW_FEATURE_SET),true)
-BUILD_GNSS_HIDL_SERVICE := false
-endif # LW_FEATURE_SET
-endif # BOARD_VENDOR_QCOM_LOC_PDK_FEATURE_SET
-
-ifeq ($(BUILD_GNSS_HIDL_SERVICE), true)
-include $(CLEAR_VARS)
-LOCAL_MODULE := android.hardware.gnss@1.0-service-qti
-LOCAL_VENDOR_MODULE := true
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_INIT_RC := android.hardware.gnss@1.0-service-qti.rc
-LOCAL_SRC_FILES := \
- service.cpp \
-
-LOCAL_C_INCLUDES:= \
- $(LOCAL_PATH)/location_api
-LOCAL_HEADER_LIBRARIES := \
- libgps.utils_headers \
- libloc_core_headers \
- libloc_pla_headers \
- liblocation_api_headers
-
-
-LOCAL_SHARED_LIBRARIES := \
- liblog \
- libcutils \
- libdl \
- libbase \
- libutils \
-
-LOCAL_SHARED_LIBRARIES += \
- libhwbinder \
- libhidlbase \
- libhidltransport \
- android.hardware.gnss@1.0 \
-
-LOCAL_CFLAGS += $(GNSS_CFLAGS)
-include $(BUILD_EXECUTABLE)
-endif # BUILD_GNSS_HIDL_SERVICE
diff --git a/gps/android/Gnss.cpp b/gps/android/Gnss.cpp
deleted file mode 100644
index c844118..0000000
--- a/gps/android/Gnss.cpp
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc_GnssInterface"
-
-#include <fstream>
-#include <log_util.h>
-#include <dlfcn.h>
-#include <cutils/properties.h>
-#include "Gnss.h"
-#include <LocationUtil.h>
-
-typedef void* (getLocationInterface)();
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-void Gnss::GnssDeathRecipient::serviceDied(uint64_t cookie, const wp<IBase>& who) {
- LOC_LOGE("%s] service died. cookie: %llu, who: %p",
- __FUNCTION__, static_cast<unsigned long long>(cookie), &who);
- if (mGnss != nullptr) {
- mGnss->stop();
- mGnss->cleanup();
- }
-}
-
-Gnss::Gnss() {
- ENTRY_LOG_CALLFLOW();
- // clear pending GnssConfig
- memset(&mPendingConfig, 0, sizeof(GnssConfig));
-
- mGnssDeathRecipient = new GnssDeathRecipient(this);
-}
-
-Gnss::~Gnss() {
- ENTRY_LOG_CALLFLOW();
- if (mApi != nullptr) {
- delete mApi;
- mApi = nullptr;
- }
-}
-
-GnssAPIClient* Gnss::getApi() {
- if (mApi == nullptr && (mGnssCbIface != nullptr || mGnssNiCbIface != nullptr)) {
- mApi = new GnssAPIClient(mGnssCbIface, mGnssNiCbIface);
- if (mApi == nullptr) {
- LOC_LOGE("%s] faild to create GnssAPIClient", __FUNCTION__);
- return mApi;
- }
-
- if (mPendingConfig.size == sizeof(GnssConfig)) {
- // we have pending GnssConfig
- mApi->gnssConfigurationUpdate(mPendingConfig);
- // clear size to invalid mPendingConfig
- mPendingConfig.size = 0;
- if (mPendingConfig.assistanceServer.hostName != nullptr) {
- free((void*)mPendingConfig.assistanceServer.hostName);
- }
- }
- }
- if (mApi == nullptr) {
- LOC_LOGW("%s] GnssAPIClient is not ready", __FUNCTION__);
- }
- return mApi;
-}
-
-GnssInterface* Gnss::getGnssInterface() {
- static bool getGnssInterfaceFailed = false;
- if (nullptr == mGnssInterface && !getGnssInterfaceFailed) {
- LOC_LOGD("%s]: loading libgnss.so::getGnssInterface ...", __func__);
- getLocationInterface* getter = NULL;
- const char *error = NULL;
- dlerror();
- void *handle = dlopen("libgnss.so", RTLD_NOW);
- if (NULL == handle || (error = dlerror()) != NULL) {
- LOC_LOGW("dlopen for libgnss.so failed, error = %s", error);
- } else {
- getter = (getLocationInterface*)dlsym(handle, "getGnssInterface");
- if ((error = dlerror()) != NULL) {
- LOC_LOGW("dlsym for libgnss.so::getGnssInterface failed, error = %s", error);
- getter = NULL;
- }
- }
-
- if (NULL == getter) {
- getGnssInterfaceFailed = true;
- } else {
- mGnssInterface = (GnssInterface*)(*getter)();
- }
- }
- return mGnssInterface;
-}
-
-Return<bool> Gnss::setCallback(const sp<V1_0::IGnssCallback>& callback) {
- ENTRY_LOG_CALLFLOW();
- if (mGnssCbIface != nullptr) {
- mGnssCbIface->unlinkToDeath(mGnssDeathRecipient);
- }
- mGnssCbIface = callback;
- if (mGnssCbIface != nullptr) {
- mGnssCbIface->linkToDeath(mGnssDeathRecipient, 0 /*cookie*/);
- }
-
- GnssAPIClient* api = getApi();
- if (api != nullptr) {
- api->gnssUpdateCallbacks(mGnssCbIface, mGnssNiCbIface);
- api->gnssEnable(LOCATION_TECHNOLOGY_TYPE_GNSS);
- api->requestCapabilities();
- }
- return true;
-}
-
-Return<bool> Gnss::setGnssNiCb(const sp<IGnssNiCallback>& callback) {
- ENTRY_LOG_CALLFLOW();
- mGnssNiCbIface = callback;
- GnssAPIClient* api = getApi();
- if (api != nullptr) {
- api->gnssUpdateCallbacks(mGnssCbIface, mGnssNiCbIface);
- }
- return true;
-}
-
-Return<bool> Gnss::updateConfiguration(GnssConfig& gnssConfig) {
- ENTRY_LOG_CALLFLOW();
- GnssAPIClient* api = getApi();
- if (api) {
- api->gnssConfigurationUpdate(gnssConfig);
- } else if (gnssConfig.flags != 0) {
- // api is not ready yet, update mPendingConfig with gnssConfig
- mPendingConfig.size = sizeof(GnssConfig);
-
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_GPS_LOCK_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_GPS_LOCK_VALID_BIT;
- mPendingConfig.gpsLock = gnssConfig.gpsLock;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_SUPL_VERSION_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_SUPL_VERSION_VALID_BIT;
- mPendingConfig.suplVersion = gnssConfig.suplVersion;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_SET_ASSISTANCE_DATA_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_SET_ASSISTANCE_DATA_VALID_BIT;
- mPendingConfig.assistanceServer.size = sizeof(GnssConfigSetAssistanceServer);
- mPendingConfig.assistanceServer.type = gnssConfig.assistanceServer.type;
- if (mPendingConfig.assistanceServer.hostName != nullptr) {
- free((void*)mPendingConfig.assistanceServer.hostName);
- mPendingConfig.assistanceServer.hostName =
- strdup(gnssConfig.assistanceServer.hostName);
- }
- mPendingConfig.assistanceServer.port = gnssConfig.assistanceServer.port;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT;
- mPendingConfig.lppProfile = gnssConfig.lppProfile;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_LPPE_CONTROL_PLANE_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_LPPE_CONTROL_PLANE_VALID_BIT;
- mPendingConfig.lppeControlPlaneMask = gnssConfig.lppeControlPlaneMask;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_LPPE_USER_PLANE_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_LPPE_USER_PLANE_VALID_BIT;
- mPendingConfig.lppeUserPlaneMask = gnssConfig.lppeUserPlaneMask;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT;
- mPendingConfig.aGlonassPositionProtocolMask = gnssConfig.aGlonassPositionProtocolMask;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_EM_PDN_FOR_EM_SUPL_VALID_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_EM_PDN_FOR_EM_SUPL_VALID_BIT;
- mPendingConfig.emergencyPdnForEmergencySupl = gnssConfig.emergencyPdnForEmergencySupl;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_SUPL_EM_SERVICES_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_SUPL_EM_SERVICES_BIT;
- mPendingConfig.suplEmergencyServices = gnssConfig.suplEmergencyServices;
- }
- if (gnssConfig.flags & GNSS_CONFIG_FLAGS_SUPL_MODE_BIT) {
- mPendingConfig.flags |= GNSS_CONFIG_FLAGS_SUPL_MODE_BIT;
- mPendingConfig.suplModeMask = gnssConfig.suplModeMask;
- }
- }
- return true;
-}
-
-Return<bool> Gnss::start() {
- ENTRY_LOG_CALLFLOW();
- bool retVal = false;
- GnssAPIClient* api = getApi();
- if (api) {
- retVal = api->gnssStart();
- }
- return retVal;
-}
-
-Return<bool> Gnss::stop() {
- ENTRY_LOG_CALLFLOW();
- bool retVal = false;
- GnssAPIClient* api = getApi();
- if (api) {
- retVal = api->gnssStop();
- }
- return retVal;
-}
-
-Return<void> Gnss::cleanup() {
- ENTRY_LOG_CALLFLOW();
-
- if (mApi != nullptr) {
- mApi->gnssDisable();
- }
-
- return Void();
-}
-
-Return<bool> Gnss::injectLocation(double latitudeDegrees,
- double longitudeDegrees,
- float accuracyMeters) {
- ENTRY_LOG_CALLFLOW();
- GnssInterface* gnssInterface = getGnssInterface();
- if (nullptr != gnssInterface) {
- gnssInterface->injectLocation(latitudeDegrees, longitudeDegrees, accuracyMeters);
- return true;
- } else {
- return false;
- }
-}
-
-Return<bool> Gnss::injectTime(int64_t timeMs, int64_t timeReferenceMs,
- int32_t uncertaintyMs) {
- ENTRY_LOG_CALLFLOW();
- GnssInterface* gnssInterface = getGnssInterface();
- if (nullptr != gnssInterface) {
- gnssInterface->injectTime(timeMs, timeReferenceMs, uncertaintyMs);
- return true;
- } else {
- return false;
- }
-}
-
-Return<void> Gnss::deleteAidingData(V1_0::IGnss::GnssAidingData aidingDataFlags) {
- ENTRY_LOG_CALLFLOW();
- GnssAPIClient* api = getApi();
- if (api) {
- api->gnssDeleteAidingData(aidingDataFlags);
- }
- return Void();
-}
-
-Return<bool> Gnss::setPositionMode(V1_0::IGnss::GnssPositionMode mode,
- V1_0::IGnss::GnssPositionRecurrence recurrence,
- uint32_t minIntervalMs,
- uint32_t preferredAccuracyMeters,
- uint32_t preferredTimeMs) {
- ENTRY_LOG_CALLFLOW();
- bool retVal = false;
- GnssAPIClient* api = getApi();
- if (api) {
- retVal = api->gnssSetPositionMode(mode, recurrence, minIntervalMs,
- preferredAccuracyMeters, preferredTimeMs);
- }
- return retVal;
-}
-
-Return<sp<V1_0::IAGnss>> Gnss::getExtensionAGnss() {
- ENTRY_LOG_CALLFLOW();
- mAGnssIface = new AGnss(this);
- return mAGnssIface;
-}
-
-Return<sp<V1_0::IGnssNi>> Gnss::getExtensionGnssNi() {
- ENTRY_LOG_CALLFLOW();
- mGnssNi = new GnssNi(this);
- return mGnssNi;
-}
-
-Return<sp<V1_0::IGnssMeasurement>> Gnss::getExtensionGnssMeasurement() {
- ENTRY_LOG_CALLFLOW();
- if (mGnssMeasurement == nullptr)
- mGnssMeasurement = new GnssMeasurement();
- return mGnssMeasurement;
-}
-
-Return<sp<V1_0::IGnssConfiguration>> Gnss::getExtensionGnssConfiguration() {
- ENTRY_LOG_CALLFLOW();
- mGnssConfig = new GnssConfiguration(this);
- return mGnssConfig;
-}
-
-Return<sp<V1_0::IGnssGeofencing>> Gnss::getExtensionGnssGeofencing() {
- ENTRY_LOG_CALLFLOW();
- mGnssGeofencingIface = new GnssGeofencing();
- return mGnssGeofencingIface;
-}
-
-Return<sp<V1_0::IGnssBatching>> Gnss::getExtensionGnssBatching() {
- mGnssBatching = new GnssBatching();
- return mGnssBatching;
-}
-
-Return<sp<V1_0::IGnssDebug>> Gnss::getExtensionGnssDebug() {
- ENTRY_LOG_CALLFLOW();
- mGnssDebug = new GnssDebug(this);
- return mGnssDebug;
-}
-
-Return<sp<V1_0::IAGnssRil>> Gnss::getExtensionAGnssRil() {
- mGnssRil = new AGnssRil(this);
- return mGnssRil;
-}
-
-IGnss* HIDL_FETCH_IGnss(const char* hal) {
- ENTRY_LOG_CALLFLOW();
- IGnss* iface = nullptr;
- iface = new Gnss();
- if (iface == nullptr) {
- LOC_LOGE("%s]: failed to get %s", __FUNCTION__, hal);
- }
- return iface;
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/Gnss.h b/gps/android/Gnss.h
deleted file mode 100644
index 03ef170..0000000
--- a/gps/android/Gnss.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2017-2018-2018-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_GNSS_H
-#define ANDROID_HARDWARE_GNSS_V1_0_GNSS_H
-
-#include <AGnss.h>
-#include <AGnssRil.h>
-#include <GnssBatching.h>
-#include <GnssConfiguration.h>
-#include <GnssGeofencing.h>
-#include <GnssMeasurement.h>
-#include <GnssNi.h>
-#include <GnssDebug.h>
-
-#include <android/hardware/gnss/1.0/IGnss.h>
-#include <hidl/MQDescriptor.h>
-#include <hidl/Status.h>
-
-#include <GnssAPIClient.h>
-#include <location_interface.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::hidl_array;
-using ::android::hardware::hidl_memory;
-using ::android::hardware::hidl_string;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::sp;
-using ::android::hardware::gnss::V1_0::GnssLocation;
-
-struct Gnss : public IGnss {
- Gnss();
- ~Gnss();
-
- /*
- * Methods from ::android::hardware::gnss::V1_0::IGnss follow.
- * These declarations were generated from Gnss.hal.
- */
- Return<bool> setCallback(const sp<V1_0::IGnssCallback>& callback) override;
- Return<bool> start() override;
- Return<bool> stop() override;
- Return<void> cleanup() override;
- Return<bool> injectLocation(double latitudeDegrees,
- double longitudeDegrees,
- float accuracyMeters) override;
- Return<bool> injectTime(int64_t timeMs,
- int64_t timeReferenceMs,
- int32_t uncertaintyMs) override;
- Return<void> deleteAidingData(V1_0::IGnss::GnssAidingData aidingDataFlags) override;
- Return<bool> setPositionMode(V1_0::IGnss::GnssPositionMode mode,
- V1_0::IGnss::GnssPositionRecurrence recurrence,
- uint32_t minIntervalMs,
- uint32_t preferredAccuracyMeters,
- uint32_t preferredTimeMs) override;
- Return<sp<V1_0::IAGnss>> getExtensionAGnss() override;
- Return<sp<V1_0::IGnssNi>> getExtensionGnssNi() override;
- Return<sp<V1_0::IGnssMeasurement>> getExtensionGnssMeasurement() override;
- Return<sp<V1_0::IGnssConfiguration>> getExtensionGnssConfiguration() override;
- Return<sp<V1_0::IGnssGeofencing>> getExtensionGnssGeofencing() override;
- Return<sp<V1_0::IGnssBatching>> getExtensionGnssBatching() override;
-
- Return<sp<V1_0::IAGnssRil>> getExtensionAGnssRil() override;
-
- inline Return<sp<V1_0::IGnssNavigationMessage>> getExtensionGnssNavigationMessage() override {
- return nullptr;
- }
-
- inline Return<sp<V1_0::IGnssXtra>> getExtensionXtra() override {
- return nullptr;
- }
-
- Return<sp<V1_0::IGnssDebug>> getExtensionGnssDebug() override;
-
- // These methods are not part of the IGnss base class.
- GnssAPIClient* getApi();
- Return<bool> setGnssNiCb(const sp<IGnssNiCallback>& niCb);
- Return<bool> updateConfiguration(GnssConfig& gnssConfig);
- GnssInterface* getGnssInterface();
-
- // Callback for ODCPI request
- void odcpiRequestCb(const OdcpiRequestInfo& request);
-
- private:
- struct GnssDeathRecipient : hidl_death_recipient {
- GnssDeathRecipient(sp<Gnss> gnss) : mGnss(gnss) {
- }
- ~GnssDeathRecipient() = default;
- virtual void serviceDied(uint64_t cookie, const wp<IBase>& who) override;
- sp<Gnss> mGnss;
- };
-
- private:
- sp<GnssDeathRecipient> mGnssDeathRecipient = nullptr;
-
- sp<AGnss> mAGnssIface = nullptr;
- sp<GnssNi> mGnssNi = nullptr;
- sp<GnssMeasurement> mGnssMeasurement = nullptr;
- sp<GnssConfiguration> mGnssConfig = nullptr;
- sp<GnssGeofencing> mGnssGeofencingIface = nullptr;
- sp<GnssBatching> mGnssBatching = nullptr;
- sp<IGnssDebug> mGnssDebug = nullptr;
- sp<AGnssRil> mGnssRil = nullptr;
-
- GnssAPIClient* mApi = nullptr;
- sp<V1_0::IGnssCallback> mGnssCbIface = nullptr;
- sp<V1_0::IGnssNiCallback> mGnssNiCbIface = nullptr;
- GnssConfig mPendingConfig;
- GnssInterface* mGnssInterface = nullptr;
-};
-
-extern "C" IGnss* HIDL_FETCH_IGnss(const char* name);
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_GNSS_H
diff --git a/gps/android/GnssBatching.cpp b/gps/android/GnssBatching.cpp
deleted file mode 100644
index 3e5a9f4..0000000
--- a/gps/android/GnssBatching.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc_GnssBatchingInterface"
-
-#include <log_util.h>
-#include <BatchingAPIClient.h>
-#include "GnssBatching.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-void GnssBatching::GnssBatchingDeathRecipient::serviceDied(
- uint64_t cookie, const wp<IBase>& who) {
- LOC_LOGE("%s] service died. cookie: %llu, who: %p",
- __FUNCTION__, static_cast<unsigned long long>(cookie), &who);
- if (mGnssBatching != nullptr) {
- mGnssBatching->stop();
- mGnssBatching->cleanup();
- }
-}
-
-GnssBatching::GnssBatching() : mApi(nullptr) {
- mGnssBatchingDeathRecipient = new GnssBatchingDeathRecipient(this);
-}
-
-GnssBatching::~GnssBatching() {
- if (mApi != nullptr) {
- delete mApi;
- mApi = nullptr;
- }
-}
-
-
-// Methods from ::android::hardware::gnss::V1_0::IGnssBatching follow.
-Return<bool> GnssBatching::init(const sp<IGnssBatchingCallback>& callback) {
- if (mApi != nullptr) {
- LOC_LOGD("%s]: mApi is NOT nullptr, delete it first", __FUNCTION__);
- delete mApi;
- mApi = nullptr;
- }
-
- mApi = new BatchingAPIClient(callback);
- if (mApi == nullptr) {
- LOC_LOGE("%s]: failed to create mApi", __FUNCTION__);
- return false;
- }
-
- if (mGnssBatchingCbIface != nullptr) {
- mGnssBatchingCbIface->unlinkToDeath(mGnssBatchingDeathRecipient);
- }
- mGnssBatchingCbIface = callback;
- if (mGnssBatchingCbIface != nullptr) {
- mGnssBatchingCbIface->linkToDeath(mGnssBatchingDeathRecipient, 0 /*cookie*/);
- }
-
- return true;
-}
-
-Return<uint16_t> GnssBatching::getBatchSize() {
- uint16_t ret = 0;
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- ret = mApi->getBatchSize();
- }
- return ret;
-}
-
-Return<bool> GnssBatching::start(const IGnssBatching::Options& options) {
- bool ret = false;
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- ret = mApi->startSession(options);
- }
- return ret;
-}
-
-Return<void> GnssBatching::flush() {
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- mApi->flushBatchedLocations();
- }
- return Void();
-}
-
-Return<bool> GnssBatching::stop() {
- bool ret = false;
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- ret = mApi->stopSession();
- }
- return ret;
-}
-
-Return<void> GnssBatching::cleanup() {
- if (mGnssBatchingCbIface != nullptr) {
- mGnssBatchingCbIface->unlinkToDeath(mGnssBatchingDeathRecipient);
- }
- return Void();
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/GnssBatching.h b/gps/android/GnssBatching.h
deleted file mode 100644
index 8fab857..0000000
--- a/gps/android/GnssBatching.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_GNSSBATCHING_H
-#define ANDROID_HARDWARE_GNSS_V1_0_GNSSBATCHING_H
-
-#include <android/hardware/gnss/1.0/IGnssBatching.h>
-#include <hidl/Status.h>
-
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssBatching;
-using ::android::hardware::gnss::V1_0::IGnssBatchingCallback;
-using ::android::hidl::base::V1_0::IBase;
-using ::android::hardware::hidl_array;
-using ::android::hardware::hidl_memory;
-using ::android::hardware::hidl_string;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::sp;
-
-class BatchingAPIClient;
-struct GnssBatching : public IGnssBatching {
- GnssBatching();
- ~GnssBatching();
-
- // Methods from ::android::hardware::gnss::V1_0::IGnssBatching follow.
- Return<bool> init(const sp<IGnssBatchingCallback>& callback) override;
- Return<uint16_t> getBatchSize() override;
- Return<bool> start(const IGnssBatching::Options& options ) override;
- Return<void> flush() override;
- Return<bool> stop() override;
- Return<void> cleanup() override;
-
- private:
- struct GnssBatchingDeathRecipient : hidl_death_recipient {
- GnssBatchingDeathRecipient(sp<GnssBatching> gnssBatching) :
- mGnssBatching(gnssBatching) {
- }
- ~GnssBatchingDeathRecipient() = default;
- virtual void serviceDied(uint64_t cookie, const wp<IBase>& who) override;
- sp<GnssBatching> mGnssBatching;
- };
-
- private:
- sp<GnssBatchingDeathRecipient> mGnssBatchingDeathRecipient = nullptr;
- sp<IGnssBatchingCallback> mGnssBatchingCbIface = nullptr;
- BatchingAPIClient* mApi = nullptr;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_GNSSBATCHING_H
diff --git a/gps/android/GnssConfiguration.cpp b/gps/android/GnssConfiguration.cpp
deleted file mode 100644
index 15153dd..0000000
--- a/gps/android/GnssConfiguration.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc_GnssConfigurationInterface"
-
-#include <log_util.h>
-#include "Gnss.h"
-#include "GnssConfiguration.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-GnssConfiguration::GnssConfiguration(Gnss* gnss) : mGnss(gnss) {
-}
-
-// Methods from ::android::hardware::gps::V1_0::IGnssConfiguration follow.
-Return<bool> GnssConfiguration::setSuplEs(bool enabled) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
- config.flags = GNSS_CONFIG_FLAGS_SUPL_EM_SERVICES_BIT;
- config.suplEmergencyServices = (enabled ?
- GNSS_CONFIG_SUPL_EMERGENCY_SERVICES_YES :
- GNSS_CONFIG_SUPL_EMERGENCY_SERVICES_NO);
-
- return mGnss->updateConfiguration(config);
-}
-
-Return<bool> GnssConfiguration::setSuplVersion(uint32_t version) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
- config.flags = GNSS_CONFIG_FLAGS_SUPL_VERSION_VALID_BIT;
- switch (version) {
- case 0x00020002:
- config.suplVersion = GNSS_CONFIG_SUPL_VERSION_2_0_2;
- break;
- case 0x00020000:
- config.suplVersion = GNSS_CONFIG_SUPL_VERSION_2_0_0;
- break;
- case 0x00010000:
- config.suplVersion = GNSS_CONFIG_SUPL_VERSION_1_0_0;
- break;
- default:
- LOC_LOGE("%s]: invalid version: 0x%x.", __FUNCTION__, version);
- return false;
- break;
- }
-
- return mGnss->updateConfiguration(config);
-}
-
-Return<bool> GnssConfiguration::setSuplMode(uint8_t mode) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
- config.flags = GNSS_CONFIG_FLAGS_SUPL_MODE_BIT;
- switch (mode) {
- case 0:
- config.suplModeMask = 0; // STANDALONE ONLY
- break;
- case 1:
- config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSB_BIT;
- break;
- case 2:
- config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSA_BIT;
- break;
- case 3:
- config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSB_BIT | GNSS_CONFIG_SUPL_MODE_MSA_BIT;
- break;
- default:
- LOC_LOGE("%s]: invalid mode: %d.", __FUNCTION__, mode);
- return false;
- break;
- }
-
- return mGnss->updateConfiguration(config);
-}
-
-Return<bool> GnssConfiguration::setLppProfile(uint8_t lppProfile) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
- config.flags = GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT;
- switch (lppProfile) {
- case 0:
- config.lppProfile = GNSS_CONFIG_LPP_PROFILE_RRLP_ON_LTE;
- break;
- case 1:
- config.lppProfile = GNSS_CONFIG_LPP_PROFILE_USER_PLANE;
- break;
- case 2:
- config.lppProfile = GNSS_CONFIG_LPP_PROFILE_CONTROL_PLANE;
- break;
- case 3:
- config.lppProfile = GNSS_CONFIG_LPP_PROFILE_USER_PLANE_AND_CONTROL_PLANE;
- break;
- default:
- LOC_LOGE("%s]: invalid lppProfile: %d.", __FUNCTION__, lppProfile);
- return false;
- break;
- }
-
- return mGnss->updateConfiguration(config);
-}
-
-Return<bool> GnssConfiguration::setGlonassPositioningProtocol(uint8_t protocol) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
-
- config.flags = GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT;
- if (protocol & (1<<0)) {
- config.aGlonassPositionProtocolMask |= GNSS_CONFIG_RRC_CONTROL_PLANE_BIT;
- }
- if (protocol & (1<<1)) {
- config.aGlonassPositionProtocolMask |= GNSS_CONFIG_RRLP_USER_PLANE_BIT;
- }
- if (protocol & (1<<2)) {
- config.aGlonassPositionProtocolMask |= GNSS_CONFIG_LLP_USER_PLANE_BIT;
- }
- if (protocol & (1<<3)) {
- config.aGlonassPositionProtocolMask |= GNSS_CONFIG_LLP_CONTROL_PLANE_BIT;
- }
-
- return mGnss->updateConfiguration(config);
-}
-
-Return<bool> GnssConfiguration::setGpsLock(uint8_t lock) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
- config.flags = GNSS_CONFIG_FLAGS_GPS_LOCK_VALID_BIT;
- switch (lock) {
- case 0:
- config.gpsLock = GNSS_CONFIG_GPS_LOCK_NONE;
- break;
- case 1:
- config.gpsLock = GNSS_CONFIG_GPS_LOCK_MO;
- break;
- case 2:
- config.gpsLock = GNSS_CONFIG_GPS_LOCK_NI;
- break;
- case 3:
- config.gpsLock = GNSS_CONFIG_GPS_LOCK_MO_AND_NI;
- break;
- default:
- LOC_LOGE("%s]: invalid lock: %d.", __FUNCTION__, lock);
- return false;
- break;
- }
-
- return mGnss->updateConfiguration(config);
-}
-
-Return<bool> GnssConfiguration::setEmergencySuplPdn(bool enabled) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return false;
- }
-
- GnssConfig config;
- memset(&config, 0, sizeof(GnssConfig));
- config.size = sizeof(GnssConfig);
- config.flags = GNSS_CONFIG_FLAGS_EM_PDN_FOR_EM_SUPL_VALID_BIT;
- config.emergencyPdnForEmergencySupl = (enabled ?
- GNSS_CONFIG_EMERGENCY_PDN_FOR_EMERGENCY_SUPL_YES :
- GNSS_CONFIG_EMERGENCY_PDN_FOR_EMERGENCY_SUPL_NO);
-
- return mGnss->updateConfiguration(config);
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/GnssConfiguration.h b/gps/android/GnssConfiguration.h
deleted file mode 100644
index 1629e06..0000000
--- a/gps/android/GnssConfiguration.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-
- /* Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_GNSSCONFIGURATION_H
-#define ANDROID_HARDWARE_GNSS_V1_0_GNSSCONFIGURATION_H
-
-#include <android/hardware/gnss/1.0/IGnssConfiguration.h>
-#include <hidl/Status.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssConfiguration;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
-/*
- * Interface for passing GNSS configuration info from platform to HAL.
- */
-struct Gnss;
-struct GnssConfiguration : public IGnssConfiguration {
- GnssConfiguration(Gnss* gnss);
- ~GnssConfiguration() = default;
-
- /*
- * Methods from ::android::hardware::gnss::V1_0::IGnssConfiguration follow.
- * These declarations were generated from IGnssConfiguration.hal.
- */
- Return<bool> setSuplVersion(uint32_t version) override;
- Return<bool> setSuplMode(uint8_t mode) override;
- Return<bool> setSuplEs(bool enabled) override;
- Return<bool> setLppProfile(uint8_t lppProfile) override;
- Return<bool> setGlonassPositioningProtocol(uint8_t protocol) override;
- Return<bool> setEmergencySuplPdn(bool enable) override;
- Return<bool> setGpsLock(uint8_t lock) override;
-
- private:
- Gnss* mGnss = nullptr;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_GNSSCONFIGURATION_H
diff --git a/gps/android/GnssDebug.cpp b/gps/android/GnssDebug.cpp
deleted file mode 100644
index 3d8e055..0000000
--- a/gps/android/GnssDebug.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc_GnssDebugInterface"
-
-#include <log/log.h>
-#include <log_util.h>
-#include "Gnss.h"
-#include "GnssDebug.h"
-#include "LocationUtil.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::hidl_vec;
-
-#define GNSS_DEBUG_UNKNOWN_HORIZONTAL_ACCURACY_METERS (20000000)
-#define GNSS_DEBUG_UNKNOWN_VERTICAL_ACCURACY_METERS (20000)
-#define GNSS_DEBUG_UNKNOWN_SPEED_ACCURACY_PER_SEC (500)
-#define GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG (180)
-
-#define GNSS_DEBUG_UNKNOWN_UTC_TIME (1483228800000LL) // 1/1/2017 00:00 GMT
-#define GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC (1.57783680E17) // 5 years in ns
-#define GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC (2.0e5) // ppm
-
-GnssDebug::GnssDebug(Gnss* gnss) : mGnss(gnss)
-{
-}
-
-/*
- * This methods requests position, time and satellite ephemeris debug information
- * from the HAL.
- *
- * @return void
-*/
-Return<void> GnssDebug::getDebugData(getDebugData_cb _hidl_cb)
-{
- LOC_LOGD("%s]: ", __func__);
-
- DebugData data = { };
-
- if((nullptr == mGnss) || (nullptr == mGnss->getGnssInterface())){
- LOC_LOGE("GnssDebug - Null GNSS interface");
- _hidl_cb(data);
- return Void();
- }
-
- // get debug report snapshot via hal interface
- GnssDebugReport reports = { };
- mGnss->getGnssInterface()->getDebugReport(reports);
-
- // location block
- if (reports.mLocation.mValid) {
- data.position.valid = true;
- data.position.latitudeDegrees = reports.mLocation.mLocation.latitude;
- data.position.longitudeDegrees = reports.mLocation.mLocation.longitude;
- data.position.altitudeMeters = reports.mLocation.mLocation.altitude;
-
- data.position.speedMetersPerSec =
- (double)(reports.mLocation.mLocation.speed);
- data.position.bearingDegrees =
- (double)(reports.mLocation.mLocation.bearing);
- data.position.horizontalAccuracyMeters =
- (double)(reports.mLocation.mLocation.accuracy);
- data.position.verticalAccuracyMeters =
- reports.mLocation.verticalAccuracyMeters;
- data.position.speedAccuracyMetersPerSecond =
- reports.mLocation.speedAccuracyMetersPerSecond;
- data.position.bearingAccuracyDegrees =
- reports.mLocation.bearingAccuracyDegrees;
-
- timeval tv_now, tv_report;
- tv_report.tv_sec = reports.mLocation.mUtcReported.tv_sec;
- tv_report.tv_usec = reports.mLocation.mUtcReported.tv_nsec / 1000ULL;
- gettimeofday(&tv_now, NULL);
- data.position.ageSeconds =
- (tv_now.tv_sec - tv_report.tv_sec) +
- (float)((tv_now.tv_usec - tv_report.tv_usec)) / 1000000;
- }
- else {
- data.position.valid = false;
- }
-
- if (data.position.horizontalAccuracyMeters <= 0 ||
- data.position.horizontalAccuracyMeters > GNSS_DEBUG_UNKNOWN_HORIZONTAL_ACCURACY_METERS) {
- data.position.horizontalAccuracyMeters = GNSS_DEBUG_UNKNOWN_HORIZONTAL_ACCURACY_METERS;
- }
- if (data.position.verticalAccuracyMeters <= 0 ||
- data.position.verticalAccuracyMeters > GNSS_DEBUG_UNKNOWN_VERTICAL_ACCURACY_METERS) {
- data.position.verticalAccuracyMeters = GNSS_DEBUG_UNKNOWN_VERTICAL_ACCURACY_METERS;
- }
- if (data.position.speedAccuracyMetersPerSecond <= 0 ||
- data.position.speedAccuracyMetersPerSecond > GNSS_DEBUG_UNKNOWN_SPEED_ACCURACY_PER_SEC) {
- data.position.speedAccuracyMetersPerSecond = GNSS_DEBUG_UNKNOWN_SPEED_ACCURACY_PER_SEC;
- }
- if (data.position.bearingAccuracyDegrees <= 0 ||
- data.position.bearingAccuracyDegrees > GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG) {
- data.position.bearingAccuracyDegrees = GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG;
- }
-
- if (data.position.horizontalAccuracyMeters <= 0 ||
- data.position.horizontalAccuracyMeters > GNSS_DEBUG_UNKNOWN_HORIZONTAL_ACCURACY_METERS) {
- data.position.horizontalAccuracyMeters = GNSS_DEBUG_UNKNOWN_HORIZONTAL_ACCURACY_METERS;
- }
- if (data.position.verticalAccuracyMeters <= 0 ||
- data.position.verticalAccuracyMeters > GNSS_DEBUG_UNKNOWN_VERTICAL_ACCURACY_METERS) {
- data.position.verticalAccuracyMeters = GNSS_DEBUG_UNKNOWN_VERTICAL_ACCURACY_METERS;
- }
- if (data.position.speedAccuracyMetersPerSecond <= 0 ||
- data.position.speedAccuracyMetersPerSecond > GNSS_DEBUG_UNKNOWN_SPEED_ACCURACY_PER_SEC) {
- data.position.speedAccuracyMetersPerSecond = GNSS_DEBUG_UNKNOWN_SPEED_ACCURACY_PER_SEC;
- }
- if (data.position.bearingAccuracyDegrees <= 0 ||
- data.position.bearingAccuracyDegrees > GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG) {
- data.position.bearingAccuracyDegrees = GNSS_DEBUG_UNKNOWN_BEARING_ACCURACY_DEG;
- }
-
- // time block
- if (reports.mTime.mValid) {
- data.time.timeEstimate = reports.mTime.timeEstimate;
- data.time.timeUncertaintyNs = reports.mTime.timeUncertaintyNs;
- data.time.frequencyUncertaintyNsPerSec =
- reports.mTime.frequencyUncertaintyNsPerSec;
- }
-
- if (data.time.timeEstimate < GNSS_DEBUG_UNKNOWN_UTC_TIME) {
- data.time.timeEstimate = GNSS_DEBUG_UNKNOWN_UTC_TIME;
- }
- if (data.time.timeUncertaintyNs <= 0 ||
- data.time.timeUncertaintyNs > (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC) {
- data.time.timeUncertaintyNs = (float)GNSS_DEBUG_UNKNOWN_UTC_TIME_UNC;
- }
- if (data.time.frequencyUncertaintyNsPerSec <= 0 ||
- data.time.frequencyUncertaintyNsPerSec > (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC) {
- data.time.frequencyUncertaintyNsPerSec = (float)GNSS_DEBUG_UNKNOWN_FREQ_UNC_NS_PER_SEC;
- }
-
- // satellite data block
- SatelliteData s = { };
- std::vector<SatelliteData> s_array = { };
-
- for (uint32_t i=0; i<reports.mSatelliteInfo.size(); i++) {
- memset(&s, 0, sizeof(s));
- s.svid = reports.mSatelliteInfo[i].svid;
- convertGnssConstellationType(
- reports.mSatelliteInfo[i].constellation, s.constellation);
- convertGnssEphemerisType(
- reports.mSatelliteInfo[i].mEphemerisType, s.ephemerisType);
- convertGnssEphemerisSource(
- reports.mSatelliteInfo[i].mEphemerisSource, s.ephemerisSource);
- convertGnssEphemerisHealth(
- reports.mSatelliteInfo[i].mEphemerisHealth, s.ephemerisHealth);
-
- s.ephemerisAgeSeconds =
- reports.mSatelliteInfo[i].ephemerisAgeSeconds;
- s.serverPredictionIsAvailable =
- reports.mSatelliteInfo[i].serverPredictionIsAvailable;
- s.serverPredictionAgeSeconds =
- reports.mSatelliteInfo[i].serverPredictionAgeSeconds;
-
- s_array.push_back(s);
- }
- data.satelliteDataArray = s_array;
-
- // callback HIDL with collected debug data
- _hidl_cb(data);
- return Void();
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/GnssDebug.h b/gps/android/GnssDebug.h
deleted file mode 100644
index a7116cb..0000000
--- a/gps/android/GnssDebug.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_GNSSDEBUG_H
-#define ANDROID_HARDWARE_GNSS_V1_0_GNSSDEBUG_H
-
-
-#include <android/hardware/gnss/1.0/IGnssDebug.h>
-#include <hidl/Status.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssDebug;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
-/* Interface for GNSS Debug support. */
-struct Gnss;
-struct GnssDebug : public IGnssDebug {
- GnssDebug(Gnss* gnss);
- ~GnssDebug() {};
-
- /*
- * Methods from ::android::hardware::gnss::V1_0::IGnssDebug follow.
- * These declarations were generated from IGnssDebug.hal.
- */
- Return<void> getDebugData(getDebugData_cb _hidl_cb) override;
-
-private:
- Gnss* mGnss = nullptr;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_GNSSDEBUG_H
diff --git a/gps/android/GnssGeofencing.cpp b/gps/android/GnssGeofencing.cpp
deleted file mode 100644
index 2a8ff88..0000000
--- a/gps/android/GnssGeofencing.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "GnssHal_GnssGeofencing"
-
-#include <log_util.h>
-#include <GeofenceAPIClient.h>
-#include "GnssGeofencing.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-void GnssGeofencing::GnssGeofencingDeathRecipient::serviceDied(
- uint64_t cookie, const wp<IBase>& who) {
- LOC_LOGE("%s] service died. cookie: %llu, who: %p",
- __FUNCTION__, static_cast<unsigned long long>(cookie), &who);
- if (mGnssGeofencing != nullptr) {
- mGnssGeofencing->removeAllGeofences();
- }
-}
-
-GnssGeofencing::GnssGeofencing() : mApi(nullptr) {
- mGnssGeofencingDeathRecipient = new GnssGeofencingDeathRecipient(this);
-}
-
-GnssGeofencing::~GnssGeofencing() {
- if (mApi != nullptr) {
- delete mApi;
- mApi = nullptr;
- }
-}
-
-// Methods from ::android::hardware::gnss::V1_0::IGnssGeofencing follow.
-Return<void> GnssGeofencing::setCallback(const sp<IGnssGeofenceCallback>& callback) {
- if (mApi != nullptr) {
- LOC_LOGE("%s]: mApi is NOT nullptr", __FUNCTION__);
- return Void();
- }
-
- mApi = new GeofenceAPIClient(callback);
- if (mApi == nullptr) {
- LOC_LOGE("%s]: failed to create mApi", __FUNCTION__);
- }
-
- if (mGnssGeofencingCbIface != nullptr) {
- mGnssGeofencingCbIface->unlinkToDeath(mGnssGeofencingDeathRecipient);
- }
- mGnssGeofencingCbIface = callback;
- if (mGnssGeofencingCbIface != nullptr) {
- mGnssGeofencingCbIface->linkToDeath(mGnssGeofencingDeathRecipient, 0 /*cookie*/);
- }
-
- return Void();
-}
-
-Return<void> GnssGeofencing::addGeofence(
- int32_t geofenceId,
- double latitudeDegrees,
- double longitudeDegrees,
- double radiusMeters,
- IGnssGeofenceCallback::GeofenceTransition lastTransition,
- int32_t monitorTransitions,
- uint32_t notificationResponsivenessMs,
- uint32_t unknownTimerMs) {
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- mApi->geofenceAdd(
- geofenceId,
- latitudeDegrees,
- longitudeDegrees,
- radiusMeters,
- static_cast<int32_t>(lastTransition),
- monitorTransitions,
- notificationResponsivenessMs,
- unknownTimerMs);
- }
- return Void();
-}
-
-Return<void> GnssGeofencing::pauseGeofence(int32_t geofenceId) {
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- mApi->geofencePause(geofenceId);
- }
- return Void();
-}
-
-Return<void> GnssGeofencing::resumeGeofence(int32_t geofenceId, int32_t monitorTransitions) {
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- mApi->geofenceResume(geofenceId, monitorTransitions);
- }
- return Void();
-}
-
-Return<void> GnssGeofencing::removeGeofence(int32_t geofenceId) {
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- } else {
- mApi->geofenceRemove(geofenceId);
- }
- return Void();
-}
-
-Return<void> GnssGeofencing::removeAllGeofences() {
- if (mApi == nullptr) {
- LOC_LOGD("%s]: mApi is nullptr, do nothing", __FUNCTION__);
- } else {
- mApi->geofenceRemoveAll();
- }
- return Void();
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/GnssGeofencing.h b/gps/android/GnssGeofencing.h
deleted file mode 100644
index db5f9d2..0000000
--- a/gps/android/GnssGeofencing.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_GNSSGEOFENCING_H
-#define ANDROID_HARDWARE_GNSS_V1_0_GNSSGEOFENCING_H
-
-#include <android/hardware/gnss/1.0/IGnssGeofencing.h>
-#include <hidl/Status.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssGeofenceCallback;
-using ::android::hardware::gnss::V1_0::IGnssGeofencing;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
-class GeofenceAPIClient;
-struct GnssGeofencing : public IGnssGeofencing {
- GnssGeofencing();
- ~GnssGeofencing();
-
- /*
- * Methods from ::android::hardware::gnss::V1_0::IGnssGeofencing follow.
- * These declarations were generated from IGnssGeofencing.hal.
- */
- Return<void> setCallback(const sp<IGnssGeofenceCallback>& callback) override;
- Return<void> addGeofence(int32_t geofenceId,
- double latitudeDegrees,
- double longitudeDegrees,
- double radiusMeters,
- IGnssGeofenceCallback::GeofenceTransition lastTransition,
- int32_t monitorTransitions,
- uint32_t notificationResponsivenessMs,
- uint32_t unknownTimerMs) override;
-
- Return<void> pauseGeofence(int32_t geofenceId) override;
- Return<void> resumeGeofence(int32_t geofenceId, int32_t monitorTransitions) override;
- Return<void> removeGeofence(int32_t geofenceId) override;
-
- private:
- // This method is not part of the IGnss base class.
- // It is called by GnssGeofencingDeathRecipient to remove all geofences added so far.
- Return<void> removeAllGeofences();
-
- private:
- struct GnssGeofencingDeathRecipient : hidl_death_recipient {
- GnssGeofencingDeathRecipient(sp<GnssGeofencing> gnssGeofencing) :
- mGnssGeofencing(gnssGeofencing) {
- }
- ~GnssGeofencingDeathRecipient() = default;
- virtual void serviceDied(uint64_t cookie, const wp<IBase>& who) override;
- sp<GnssGeofencing> mGnssGeofencing;
- };
-
- private:
- sp<GnssGeofencingDeathRecipient> mGnssGeofencingDeathRecipient = nullptr;
- sp<IGnssGeofenceCallback> mGnssGeofencingCbIface = nullptr;
- GeofenceAPIClient* mApi = nullptr;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_GNSSGEOFENCING_H
diff --git a/gps/android/GnssMeasurement.cpp b/gps/android/GnssMeasurement.cpp
deleted file mode 100644
index 1c65bd6..0000000
--- a/gps/android/GnssMeasurement.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc_GnssMeasurementInterface"
-
-#include <log_util.h>
-#include <MeasurementAPIClient.h>
-#include "GnssMeasurement.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-void GnssMeasurement::GnssMeasurementDeathRecipient::serviceDied(
- uint64_t cookie, const wp<IBase>& who) {
- LOC_LOGE("%s] service died. cookie: %llu, who: %p",
- __FUNCTION__, static_cast<unsigned long long>(cookie), &who);
- if (mGnssMeasurement != nullptr) {
- mGnssMeasurement->close();
- }
-}
-
-GnssMeasurement::GnssMeasurement() {
- mGnssMeasurementDeathRecipient = new GnssMeasurementDeathRecipient(this);
- mApi = new MeasurementAPIClient();
-}
-
-GnssMeasurement::~GnssMeasurement() {
- if (mApi) {
- delete mApi;
- mApi = nullptr;
- }
-}
-
-// Methods from ::android::hardware::gnss::V1_0::IGnssMeasurement follow.
-
-Return<IGnssMeasurement::GnssMeasurementStatus> GnssMeasurement::setCallback(
- const sp<V1_0::IGnssMeasurementCallback>& callback) {
-
- Return<IGnssMeasurement::GnssMeasurementStatus> ret =
- IGnssMeasurement::GnssMeasurementStatus::ERROR_GENERIC;
- if (mGnssMeasurementCbIface != 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 = callback;
- mGnssMeasurementCbIface->linkToDeath(mGnssMeasurementDeathRecipient, 0);
-
- return mApi->measurementSetCallback(callback);
-
-}
-
-Return<void> GnssMeasurement::close() {
- if (mApi == nullptr) {
- LOC_LOGE("%s]: mApi is nullptr", __FUNCTION__);
- return Void();
- }
-
- if (mGnssMeasurementCbIface != nullptr) {
- mGnssMeasurementCbIface->unlinkToDeath(mGnssMeasurementDeathRecipient);
- mGnssMeasurementCbIface = nullptr;
- }
- mApi->measurementClose();
-
- return Void();
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/GnssMeasurement.h b/gps/android/GnssMeasurement.h
deleted file mode 100644
index 4247dbf..0000000
--- a/gps/android/GnssMeasurement.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_GNSSMEASUREMENT_H
-#define ANDROID_HARDWARE_GNSS_V1_0_GNSSMEASUREMENT_H
-
-#include <android/hardware/gnss/1.0/IGnssMeasurement.h>
-#include <hidl/MQDescriptor.h>
-#include <hidl/Status.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssMeasurement;
-using ::android::hardware::gnss::V1_0::IGnssMeasurementCallback;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
-class MeasurementAPIClient;
-struct GnssMeasurement : public IGnssMeasurement {
- GnssMeasurement();
- ~GnssMeasurement();
-
- /*
- * Methods from ::android::hardware::gnss::V1_0::IGnssMeasurement follow.
- * These declarations were generated from IGnssMeasurement.hal.
- */
- Return<GnssMeasurement::GnssMeasurementStatus> setCallback(
- const sp<V1_0::IGnssMeasurementCallback>& callback) override;
- Return<void> close() override;
-
- private:
- struct GnssMeasurementDeathRecipient : hidl_death_recipient {
- GnssMeasurementDeathRecipient(sp<GnssMeasurement> gnssMeasurement) :
- mGnssMeasurement(gnssMeasurement) {
- }
- ~GnssMeasurementDeathRecipient() = default;
- virtual void serviceDied(uint64_t cookie, const wp<IBase>& who) override;
- sp<GnssMeasurement> mGnssMeasurement;
- };
-
- private:
- sp<GnssMeasurementDeathRecipient> mGnssMeasurementDeathRecipient = nullptr;
- sp<V1_0::IGnssMeasurementCallback> mGnssMeasurementCbIface = nullptr;
- MeasurementAPIClient* mApi;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_GNSSMEASUREMENT_H
diff --git a/gps/android/GnssNi.cpp b/gps/android/GnssNi.cpp
deleted file mode 100644
index d06cc20..0000000
--- a/gps/android/GnssNi.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "LocSvc_GnssNiInterface"
-
-#include <log_util.h>
-#include "Gnss.h"
-#include "GnssNi.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-void GnssNi::GnssNiDeathRecipient::serviceDied(uint64_t cookie, const wp<IBase>& who) {
- LOC_LOGE("%s] service died. cookie: %llu, who: %p",
- __FUNCTION__, static_cast<unsigned long long>(cookie), &who);
- // we do nothing here
- // Gnss::GnssDeathRecipient will stop the session
-}
-
-GnssNi::GnssNi(Gnss* gnss) : mGnss(gnss) {
- mGnssNiDeathRecipient = new GnssNiDeathRecipient(this);
-}
-
-// Methods from ::android::hardware::gnss::V1_0::IGnssNi follow.
-Return<void> GnssNi::setCallback(const sp<IGnssNiCallback>& callback) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return Void();
- }
-
- mGnss->setGnssNiCb(callback);
-
- if (mGnssNiCbIface != nullptr) {
- mGnssNiCbIface->unlinkToDeath(mGnssNiDeathRecipient);
- }
- mGnssNiCbIface = callback;
- if (mGnssNiCbIface != nullptr) {
- mGnssNiCbIface->linkToDeath(mGnssNiDeathRecipient, 0 /*cookie*/);
- }
-
- return Void();
-}
-
-Return<void> GnssNi::respond(int32_t notifId, IGnssNiCallback::GnssUserResponseType userResponse) {
- if (mGnss == nullptr) {
- LOC_LOGE("%s]: mGnss is nullptr", __FUNCTION__);
- return Void();
- }
-
- GnssAPIClient* api = mGnss->getApi();
- if (api == nullptr) {
- LOC_LOGE("%s]: api is nullptr", __FUNCTION__);
- return Void();
- }
-
- api->gnssNiRespond(notifId, userResponse);
-
- return Void();
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/GnssNi.h b/gps/android/GnssNi.h
deleted file mode 100644
index 90f62d5..0000000
--- a/gps/android/GnssNi.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_GNSS_V1_0_GNSSNI_H
-#define ANDROID_HARDWARE_GNSS_V1_0_GNSSNI_H
-
-#include <android/hardware/gnss/1.0/IGnssNi.h>
-#include <hidl/Status.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssNi;
-using ::android::hardware::gnss::V1_0::IGnssNiCallback;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::hidl_string;
-using ::android::sp;
-
-struct Gnss;
-struct GnssNi : public IGnssNi {
- GnssNi(Gnss* gnss);
- ~GnssNi() = default;
-
- /*
- * Methods from ::android::hardware::gnss::V1_0::IGnssNi follow.
- * These declarations were generated from IGnssNi.hal.
- */
- Return<void> setCallback(const sp<IGnssNiCallback>& callback) override;
- Return<void> respond(int32_t notifId,
- IGnssNiCallback::GnssUserResponseType userResponse) override;
-
- private:
- struct GnssNiDeathRecipient : hidl_death_recipient {
- GnssNiDeathRecipient(sp<GnssNi> gnssNi) : mGnssNi(gnssNi) {
- }
- ~GnssNiDeathRecipient() = default;
- virtual void serviceDied(uint64_t cookie, const wp<IBase>& who) override;
- sp<GnssNi> mGnssNi;
- };
-
- private:
- sp<GnssNiDeathRecipient> mGnssNiDeathRecipient = nullptr;
- sp<IGnssNiCallback> mGnssNiCbIface = nullptr;
- Gnss* mGnss = nullptr;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-
-#endif // ANDROID_HARDWARE_GNSS_V1_0_GNSSNI_H
diff --git a/gps/android/android.hardware.gnss@1.1-service-qti.rc b/gps/android/android.hardware.gnss@1.1-service-qti.rc
deleted file mode 100644
index b5da6f9..0000000
--- a/gps/android/android.hardware.gnss@1.1-service-qti.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service gnss_service /vendor/bin/hw/android.hardware.gnss@1.0-service-qti
- class hal
- user gps
- group system gps radio
diff --git a/gps/android/location_api/BatchingAPIClient.cpp b/gps/android/location_api/BatchingAPIClient.cpp
deleted file mode 100644
index 264ab83..0000000
--- a/gps/android/location_api/BatchingAPIClient.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#define LOG_NDEBUG 0
-#define LOG_TAG "LocSvc_BatchingAPIClient"
-
-#include <log_util.h>
-#include <loc_cfg.h>
-
-#include "LocationUtil.h"
-#include "BatchingAPIClient.h"
-
-#include "limits.h"
-
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssBatching;
-using ::android::hardware::gnss::V1_0::IGnssBatchingCallback;
-using ::android::hardware::gnss::V1_0::GnssLocation;
-
-static void convertBatchOption(const IGnssBatching::Options& in, LocationOptions& out,
- LocationCapabilitiesMask mask);
-
-BatchingAPIClient::BatchingAPIClient(const sp<IGnssBatchingCallback>& callback) :
- LocationAPIClientBase(),
- mGnssBatchingCbIface(callback),
- mDefaultId(UINT_MAX),
- mLocationCapabilitiesMask(0)
-{
- LOC_LOGD("%s]: (%p)", __FUNCTION__, &callback);
-
- LocationCallbacks locationCallbacks;
- memset(&locationCallbacks, 0, sizeof(LocationCallbacks));
- locationCallbacks.size = sizeof(LocationCallbacks);
-
- locationCallbacks.trackingCb = nullptr;
- locationCallbacks.batchingCb = nullptr;
- if (mGnssBatchingCbIface != nullptr) {
- locationCallbacks.batchingCb = [this](size_t count, Location* location,
- BatchingOptions batchOptions) {
- onBatchingCb(count, location, batchOptions);
- };
- }
- locationCallbacks.geofenceBreachCb = nullptr;
- locationCallbacks.geofenceStatusCb = nullptr;
- locationCallbacks.gnssLocationInfoCb = nullptr;
- locationCallbacks.gnssNiCb = nullptr;
- locationCallbacks.gnssSvCb = nullptr;
- locationCallbacks.gnssNmeaCb = nullptr;
- locationCallbacks.gnssMeasurementsCb = nullptr;
-
- locAPISetCallbacks(locationCallbacks);
-}
-
-BatchingAPIClient::~BatchingAPIClient()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
-}
-
-int BatchingAPIClient::getBatchSize()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
- return locAPIGetBatchSize();
-}
-
-int BatchingAPIClient::startSession(const IGnssBatching::Options& opts)
-{
- LOC_LOGD("%s]: (%lld %d)", __FUNCTION__,
- static_cast<long long>(opts.periodNanos), static_cast<uint8_t>(opts.flags));
- int retVal = -1;
- LocationOptions options;
- convertBatchOption(opts, options, mLocationCapabilitiesMask);
- uint32_t mode = 0;
- if (opts.flags == static_cast<uint8_t>(IGnssBatching::Flag::WAKEUP_ON_FIFO_FULL)) {
- mode = SESSION_MODE_ON_FULL;
- }
- if (locAPIStartSession(mDefaultId, mode, options) == LOCATION_ERROR_SUCCESS) {
- retVal = 1;
- }
- return retVal;
-}
-
-int BatchingAPIClient::updateSessionOptions(const IGnssBatching::Options& opts)
-{
- LOC_LOGD("%s]: (%lld %d)", __FUNCTION__,
- static_cast<long long>(opts.periodNanos), static_cast<uint8_t>(opts.flags));
- int retVal = -1;
- LocationOptions options;
- convertBatchOption(opts, options, mLocationCapabilitiesMask);
-
- uint32_t mode = 0;
- if (opts.flags == static_cast<uint8_t>(IGnssBatching::Flag::WAKEUP_ON_FIFO_FULL)) {
- mode = SESSION_MODE_ON_FULL;
- }
- if (locAPIUpdateSessionOptions(mDefaultId, mode, options) == LOCATION_ERROR_SUCCESS) {
- retVal = 1;
- }
- return retVal;
-}
-
-int BatchingAPIClient::stopSession()
-{
- LOC_LOGD("%s]: ", __FUNCTION__);
- int retVal = -1;
- if (locAPIStopSession(mDefaultId) == LOCATION_ERROR_SUCCESS) {
- retVal = 1;
- }
- return retVal;
-}
-
-void BatchingAPIClient::getBatchedLocation(int last_n_locations)
-{
- LOC_LOGD("%s]: (%d)", __FUNCTION__, last_n_locations);
- locAPIGetBatchedLocations(mDefaultId, last_n_locations);
-}
-
-void BatchingAPIClient::flushBatchedLocations()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
- locAPIGetBatchedLocations(mDefaultId, SIZE_MAX);
-}
-
-void BatchingAPIClient::onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask)
-{
- LOC_LOGD("%s]: (%02x)", __FUNCTION__, capabilitiesMask);
- mLocationCapabilitiesMask = capabilitiesMask;
-}
-
-void BatchingAPIClient::onBatchingCb(size_t count, Location* location,
- BatchingOptions /*batchOptions*/)
-{
- LOC_LOGD("%s]: (count: %zu)", __FUNCTION__, count);
- if (mGnssBatchingCbIface != nullptr && count > 0) {
- hidl_vec<GnssLocation> locationVec;
- locationVec.resize(count);
- for (size_t i = 0; i < count; i++) {
- convertGnssLocation(location[i], locationVec[i]);
- }
- auto r = mGnssBatchingCbIface->gnssLocationBatchCb(locationVec);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssLocationBatchCb description=%s",
- __func__, r.description().c_str());
- }
- }
-}
-
-static void convertBatchOption(const IGnssBatching::Options& in, LocationOptions& out,
- LocationCapabilitiesMask mask)
-{
- memset(&out, 0, sizeof(LocationOptions));
- out.size = sizeof(LocationOptions);
- out.minInterval = (uint32_t)(in.periodNanos / 1000000L);
- out.minDistance = 0;
- out.mode = GNSS_SUPL_MODE_STANDALONE;
- if (mask & LOCATION_CAPABILITIES_GNSS_MSA_BIT)
- out.mode = GNSS_SUPL_MODE_MSA;
- if (mask & LOCATION_CAPABILITIES_GNSS_MSB_BIT)
- out.mode = GNSS_SUPL_MODE_MSB;
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/location_api/BatchingAPIClient.h b/gps/android/location_api/BatchingAPIClient.h
deleted file mode 100644
index 5d64df3..0000000
--- a/gps/android/location_api/BatchingAPIClient.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef BATCHING_API_CLINET_H
-#define BATCHING_API_CLINET_H
-
-#include <android/hardware/gnss/1.0/IGnssBatching.h>
-#include <android/hardware/gnss/1.0/IGnssBatchingCallback.h>
-#include <pthread.h>
-
-#include <LocationAPIClientBase.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-class BatchingAPIClient : public LocationAPIClientBase
-{
-public:
- BatchingAPIClient(const sp<V1_0::IGnssBatchingCallback>& callback);
- ~BatchingAPIClient();
- int getBatchSize();
- int startSession(const V1_0::IGnssBatching::Options& options);
- int updateSessionOptions(const V1_0::IGnssBatching::Options& options);
- int stopSession();
- void getBatchedLocation(int last_n_locations);
- void flushBatchedLocations();
-
- inline LocationCapabilitiesMask getCapabilities() { return mLocationCapabilitiesMask; }
-
- // callbacks
- void onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask) final;
- void onBatchingCb(size_t count, Location* location, BatchingOptions batchOptions) final;
-
-private:
- sp<V1_0::IGnssBatchingCallback> mGnssBatchingCbIface;
- uint32_t mDefaultId;
- LocationCapabilitiesMask mLocationCapabilitiesMask;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-#endif // BATCHING_API_CLINET_H
diff --git a/gps/android/location_api/GeofenceAPIClient.cpp b/gps/android/location_api/GeofenceAPIClient.cpp
deleted file mode 100644
index 774a049..0000000
--- a/gps/android/location_api/GeofenceAPIClient.cpp
+++ /dev/null
@@ -1,275 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#define LOG_NDEBUG 0
-#define LOG_TAG "LocSvc_GeofenceApiClient"
-
-#include <log_util.h>
-#include <loc_cfg.h>
-
-#include "LocationUtil.h"
-#include "GeofenceAPIClient.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssGeofenceCallback;
-using ::android::hardware::gnss::V1_0::GnssLocation;
-
-GeofenceAPIClient::GeofenceAPIClient(const sp<IGnssGeofenceCallback>& callback) :
- LocationAPIClientBase(),
- mGnssGeofencingCbIface(callback)
-{
- LOC_LOGD("%s]: (%p)", __FUNCTION__, &callback);
-
- LocationCallbacks locationCallbacks;
- memset(&locationCallbacks, 0, sizeof(LocationCallbacks));
- locationCallbacks.size = sizeof(LocationCallbacks);
-
- locationCallbacks.trackingCb = nullptr;
- locationCallbacks.batchingCb = nullptr;
-
- locationCallbacks.geofenceBreachCb = nullptr;
- if (mGnssGeofencingCbIface != nullptr) {
- locationCallbacks.geofenceBreachCb =
- [this](GeofenceBreachNotification geofenceBreachNotification) {
- onGeofenceBreachCb(geofenceBreachNotification);
- };
-
- locationCallbacks.geofenceStatusCb =
- [this](GeofenceStatusNotification geofenceStatusNotification) {
- onGeofenceStatusCb(geofenceStatusNotification);
- };
- }
-
- locationCallbacks.gnssLocationInfoCb = nullptr;
- locationCallbacks.gnssNiCb = nullptr;
- locationCallbacks.gnssSvCb = nullptr;
- locationCallbacks.gnssNmeaCb = nullptr;
- locationCallbacks.gnssMeasurementsCb = nullptr;
-
- locAPISetCallbacks(locationCallbacks);
-}
-
-void GeofenceAPIClient::geofenceAdd(uint32_t geofence_id, double latitude, double longitude,
- double radius_meters, int32_t last_transition, int32_t monitor_transitions,
- uint32_t notification_responsiveness_ms, uint32_t unknown_timer_ms)
-{
- LOC_LOGD("%s]: (%d %f %f %f %d %d %d %d)", __FUNCTION__,
- geofence_id, latitude, longitude, radius_meters,
- last_transition, monitor_transitions, notification_responsiveness_ms, unknown_timer_ms);
-
- GeofenceOption options;
- memset(&options, 0, sizeof(GeofenceOption));
- options.size = sizeof(GeofenceOption);
- if (monitor_transitions & IGnssGeofenceCallback::GeofenceTransition::ENTERED)
- options.breachTypeMask |= GEOFENCE_BREACH_ENTER_BIT;
- if (monitor_transitions & IGnssGeofenceCallback::GeofenceTransition::EXITED)
- options.breachTypeMask |= GEOFENCE_BREACH_EXIT_BIT;
- options.responsiveness = notification_responsiveness_ms;
-
- GeofenceInfo data;
- data.size = sizeof(GeofenceInfo);
- data.latitude = latitude;
- data.longitude = longitude;
- data.radius = radius_meters;
-
- LocationError err = (LocationError)locAPIAddGeofences(1, &geofence_id, &options, &data);
- if (LOCATION_ERROR_SUCCESS != err) {
- onAddGeofencesCb(1, &err, &geofence_id);
- }
-}
-
-void GeofenceAPIClient::geofencePause(uint32_t geofence_id)
-{
- LOC_LOGD("%s]: (%d)", __FUNCTION__, geofence_id);
- locAPIPauseGeofences(1, &geofence_id);
-}
-
-void GeofenceAPIClient::geofenceResume(uint32_t geofence_id, int32_t monitor_transitions)
-{
- LOC_LOGD("%s]: (%d %d)", __FUNCTION__, geofence_id, monitor_transitions);
- GeofenceBreachTypeMask mask = 0;
- if (monitor_transitions & IGnssGeofenceCallback::GeofenceTransition::ENTERED)
- mask |= GEOFENCE_BREACH_ENTER_BIT;
- if (monitor_transitions & IGnssGeofenceCallback::GeofenceTransition::EXITED)
- mask |= GEOFENCE_BREACH_EXIT_BIT;
- locAPIResumeGeofences(1, &geofence_id, &mask);
-}
-
-void GeofenceAPIClient::geofenceRemove(uint32_t geofence_id)
-{
- LOC_LOGD("%s]: (%d)", __FUNCTION__, geofence_id);
- locAPIRemoveGeofences(1, &geofence_id);
-}
-
-void GeofenceAPIClient::geofenceRemoveAll()
-{
- LOC_LOGD("%s]", __FUNCTION__);
- // TODO locAPIRemoveAllGeofences();
-}
-
-// callbacks
-void GeofenceAPIClient::onGeofenceBreachCb(GeofenceBreachNotification geofenceBreachNotification)
-{
- LOC_LOGD("%s]: (%zu)", __FUNCTION__, geofenceBreachNotification.count);
- if (mGnssGeofencingCbIface != nullptr) {
- for (size_t i = 0; i < geofenceBreachNotification.count; i++) {
- GnssLocation gnssLocation;
- convertGnssLocation(geofenceBreachNotification.location, gnssLocation);
-
- IGnssGeofenceCallback::GeofenceTransition transition;
- if (geofenceBreachNotification.type == GEOFENCE_BREACH_ENTER)
- transition = IGnssGeofenceCallback::GeofenceTransition::ENTERED;
- else if (geofenceBreachNotification.type == GEOFENCE_BREACH_EXIT)
- transition = IGnssGeofenceCallback::GeofenceTransition::EXITED;
- else {
- // continue with other breach if transition is
- // nether GPS_GEOFENCE_ENTERED nor GPS_GEOFENCE_EXITED
- continue;
- }
-
- auto r = mGnssGeofencingCbIface->gnssGeofenceTransitionCb(
- geofenceBreachNotification.ids[i], gnssLocation, transition,
- static_cast<V1_0::GnssUtcTime>(geofenceBreachNotification.timestamp));
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssGeofenceTransitionCb description=%s",
- __func__, r.description().c_str());
- }
- }
- }
-}
-
-void GeofenceAPIClient::onGeofenceStatusCb(GeofenceStatusNotification geofenceStatusNotification)
-{
- LOC_LOGD("%s]: (%d)", __FUNCTION__, geofenceStatusNotification.available);
- if (mGnssGeofencingCbIface != nullptr) {
- IGnssGeofenceCallback::GeofenceAvailability status =
- IGnssGeofenceCallback::GeofenceAvailability::UNAVAILABLE;
- if (geofenceStatusNotification.available == GEOFENCE_STATUS_AVAILABILE_YES) {
- status = IGnssGeofenceCallback::GeofenceAvailability::AVAILABLE;
- }
- GnssLocation gnssLocation;
- memset(&gnssLocation, 0, sizeof(GnssLocation));
- auto r = mGnssGeofencingCbIface->gnssGeofenceStatusCb(status, gnssLocation);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssGeofenceStatusCb description=%s",
- __func__, r.description().c_str());
- }
- }
-}
-
-void GeofenceAPIClient::onAddGeofencesCb(size_t count, LocationError* errors, uint32_t* ids)
-{
- LOC_LOGD("%s]: (%zu)", __FUNCTION__, count);
- if (mGnssGeofencingCbIface != nullptr) {
- for (size_t i = 0; i < count; i++) {
- IGnssGeofenceCallback::GeofenceStatus status =
- IGnssGeofenceCallback::GeofenceStatus::ERROR_GENERIC;
- if (errors[i] == LOCATION_ERROR_SUCCESS)
- status = IGnssGeofenceCallback::GeofenceStatus::OPERATION_SUCCESS;
- else if (errors[i] == LOCATION_ERROR_ID_EXISTS)
- status = IGnssGeofenceCallback::GeofenceStatus::ERROR_ID_EXISTS;
- auto r = mGnssGeofencingCbIface->gnssGeofenceAddCb(ids[i], status);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssGeofenceAddCb description=%s",
- __func__, r.description().c_str());
- }
- }
- }
-}
-
-void GeofenceAPIClient::onRemoveGeofencesCb(size_t count, LocationError* errors, uint32_t* ids)
-{
- LOC_LOGD("%s]: (%zu)", __FUNCTION__, count);
- if (mGnssGeofencingCbIface != nullptr) {
- for (size_t i = 0; i < count; i++) {
- IGnssGeofenceCallback::GeofenceStatus status =
- IGnssGeofenceCallback::GeofenceStatus::ERROR_GENERIC;
- if (errors[i] == LOCATION_ERROR_SUCCESS)
- status = IGnssGeofenceCallback::GeofenceStatus::OPERATION_SUCCESS;
- else if (errors[i] == LOCATION_ERROR_ID_UNKNOWN)
- status = IGnssGeofenceCallback::GeofenceStatus::ERROR_ID_UNKNOWN;
- auto r = mGnssGeofencingCbIface->gnssGeofenceRemoveCb(ids[i], status);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssGeofenceRemoveCb description=%s",
- __func__, r.description().c_str());
- }
- }
- }
-}
-
-void GeofenceAPIClient::onPauseGeofencesCb(size_t count, LocationError* errors, uint32_t* ids)
-{
- LOC_LOGD("%s]: (%zu)", __FUNCTION__, count);
- if (mGnssGeofencingCbIface != nullptr) {
- for (size_t i = 0; i < count; i++) {
- IGnssGeofenceCallback::GeofenceStatus status =
- IGnssGeofenceCallback::GeofenceStatus::ERROR_GENERIC;
- if (errors[i] == LOCATION_ERROR_SUCCESS)
- status = IGnssGeofenceCallback::GeofenceStatus::OPERATION_SUCCESS;
- else if (errors[i] == LOCATION_ERROR_ID_UNKNOWN)
- status = IGnssGeofenceCallback::GeofenceStatus::ERROR_ID_UNKNOWN;
- auto r = mGnssGeofencingCbIface->gnssGeofencePauseCb(ids[i], status);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssGeofencePauseCb description=%s",
- __func__, r.description().c_str());
- }
- }
- }
-}
-
-void GeofenceAPIClient::onResumeGeofencesCb(size_t count, LocationError* errors, uint32_t* ids)
-{
- LOC_LOGD("%s]: (%zu)", __FUNCTION__, count);
- if (mGnssGeofencingCbIface != nullptr) {
- for (size_t i = 0; i < count; i++) {
- IGnssGeofenceCallback::GeofenceStatus status =
- IGnssGeofenceCallback::GeofenceStatus::ERROR_GENERIC;
- if (errors[i] == LOCATION_ERROR_SUCCESS)
- status = IGnssGeofenceCallback::GeofenceStatus::OPERATION_SUCCESS;
- else if (errors[i] == LOCATION_ERROR_ID_UNKNOWN)
- status = IGnssGeofenceCallback::GeofenceStatus::ERROR_ID_UNKNOWN;
- auto r = mGnssGeofencingCbIface->gnssGeofenceResumeCb(ids[i], status);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssGeofenceResumeCb description=%s",
- __func__, r.description().c_str());
- }
- }
- }
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/location_api/GeofenceAPIClient.h b/gps/android/location_api/GeofenceAPIClient.h
deleted file mode 100644
index dc99ddd..0000000
--- a/gps/android/location_api/GeofenceAPIClient.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GEOFENCE_API_CLINET_H
-#define GEOFENCE_API_CLINET_H
-
-
-#include <android/hardware/gnss/1.0/IGnssGeofenceCallback.h>
-#include <LocationAPIClientBase.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::sp;
-
-class GeofenceAPIClient : public LocationAPIClientBase
-{
-public:
- GeofenceAPIClient(const sp<V1_0::IGnssGeofenceCallback>& callback);
- virtual ~GeofenceAPIClient() = default;
-
- void geofenceAdd(uint32_t geofence_id, double latitude, double longitude,
- double radius_meters, int32_t last_transition, int32_t monitor_transitions,
- uint32_t notification_responsiveness_ms, uint32_t unknown_timer_ms);
- void geofencePause(uint32_t geofence_id);
- void geofenceResume(uint32_t geofence_id, int32_t monitor_transitions);
- void geofenceRemove(uint32_t geofence_id);
- void geofenceRemoveAll();
-
- // callbacks
- void onGeofenceBreachCb(GeofenceBreachNotification geofenceBreachNotification) final;
- void onGeofenceStatusCb(GeofenceStatusNotification geofenceStatusNotification) final;
- void onAddGeofencesCb(size_t count, LocationError* errors, uint32_t* ids) final;
- void onRemoveGeofencesCb(size_t count, LocationError* errors, uint32_t* ids) final;
- void onPauseGeofencesCb(size_t count, LocationError* errors, uint32_t* ids) final;
- void onResumeGeofencesCb(size_t count, LocationError* errors, uint32_t* ids) final;
-
-private:
- sp<V1_0::IGnssGeofenceCallback> mGnssGeofencingCbIface;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-#endif // GEOFENCE_API_CLINET_H
diff --git a/gps/android/location_api/GnssAPIClient.cpp b/gps/android/location_api/GnssAPIClient.cpp
deleted file mode 100644
index 320ae15..0000000
--- a/gps/android/location_api/GnssAPIClient.cpp
+++ /dev/null
@@ -1,537 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#define LOG_NDEBUG 0
-#define LOG_TAG "LocSvc_GnssAPIClient"
-
-#include <log_util.h>
-#include <loc_cfg.h>
-
-#include "LocationUtil.h"
-#include "GnssAPIClient.h"
-#include <LocDualContext.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnss;
-using ::android::hardware::gnss::V1_0::IGnssCallback;
-using ::android::hardware::gnss::V1_0::IGnssNiCallback;
-using ::android::hardware::gnss::V1_0::GnssLocation;
-
-static void convertGnssSvStatus(GnssSvNotification& in, IGnssCallback::GnssSvStatus& out);
-
-GnssAPIClient::GnssAPIClient(const sp<IGnssCallback>& gpsCb,
- const sp<IGnssNiCallback>& niCb) :
- LocationAPIClientBase(),
- mGnssCbIface(nullptr),
- mGnssNiCbIface(nullptr),
- mControlClient(new LocationAPIControlClient()),
- mLocationCapabilitiesMask(0),
- mLocationCapabilitiesCached(false)
-{
- LOC_LOGD("%s]: (%p %p)", __FUNCTION__, &gpsCb, &niCb);
-
- // set default LocationOptions.
- memset(&mLocationOptions, 0, sizeof(LocationOptions));
- mLocationOptions.size = sizeof(LocationOptions);
- mLocationOptions.minInterval = 1000;
- mLocationOptions.minDistance = 0;
- mLocationOptions.mode = GNSS_SUPL_MODE_STANDALONE;
-
- gnssUpdateCallbacks(gpsCb, niCb);
-}
-
-GnssAPIClient::~GnssAPIClient()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
- if (mControlClient) {
- delete mControlClient;
- mControlClient = nullptr;
- }
-}
-
-// for GpsInterface
-void GnssAPIClient::gnssUpdateCallbacks(const sp<IGnssCallback>& gpsCb,
- const sp<IGnssNiCallback>& niCb)
-{
- LOC_LOGD("%s]: (%p %p)", __FUNCTION__, &gpsCb, &niCb);
-
- mMutex.lock();
- mGnssCbIface = gpsCb;
- mGnssNiCbIface = niCb;
- mMutex.unlock();
-
- LocationCallbacks locationCallbacks;
- memset(&locationCallbacks, 0, sizeof(LocationCallbacks));
- locationCallbacks.size = sizeof(LocationCallbacks);
-
- locationCallbacks.trackingCb = nullptr;
- if (mGnssCbIface != nullptr) {
- locationCallbacks.trackingCb = [this](Location location) {
- onTrackingCb(location);
- };
- }
-
- locationCallbacks.batchingCb = nullptr;
- locationCallbacks.geofenceBreachCb = nullptr;
- locationCallbacks.geofenceStatusCb = nullptr;
- locationCallbacks.gnssLocationInfoCb = nullptr;
-
- locationCallbacks.gnssNiCb = nullptr;
- loc_core::ContextBase* context =
- loc_core::LocDualContext::getLocFgContext(
- NULL, NULL,
- loc_core::LocDualContext::mLocationHalName, false);
- if (mGnssNiCbIface != nullptr && !context->hasAgpsExtendedCapabilities()) {
- LOC_LOGD("Registering NI CB");
- locationCallbacks.gnssNiCb = [this](uint32_t id, GnssNiNotification gnssNiNotification) {
- onGnssNiCb(id, gnssNiNotification);
- };
- }
-
- locationCallbacks.gnssSvCb = nullptr;
- if (mGnssCbIface != nullptr) {
- locationCallbacks.gnssSvCb = [this](GnssSvNotification gnssSvNotification) {
- onGnssSvCb(gnssSvNotification);
- };
- }
-
- locationCallbacks.gnssNmeaCb = nullptr;
- if (mGnssCbIface != nullptr) {
- locationCallbacks.gnssNmeaCb = [this](GnssNmeaNotification gnssNmeaNotification) {
- onGnssNmeaCb(gnssNmeaNotification);
- };
- }
-
- locationCallbacks.gnssMeasurementsCb = nullptr;
-
- locAPISetCallbacks(locationCallbacks);
-}
-
-bool GnssAPIClient::gnssStart()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
- bool retVal = true;
- locAPIStartTracking(mLocationOptions);
- return retVal;
-}
-
-bool GnssAPIClient::gnssStop()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
- bool retVal = true;
- locAPIStopTracking();
- return retVal;
-}
-
-bool GnssAPIClient::gnssSetPositionMode(IGnss::GnssPositionMode mode,
- IGnss::GnssPositionRecurrence recurrence, uint32_t minIntervalMs,
- uint32_t preferredAccuracyMeters, uint32_t preferredTimeMs)
-{
- LOC_LOGD("%s]: (%d %d %d %d %d)", __FUNCTION__,
- (int)mode, recurrence, minIntervalMs, preferredAccuracyMeters, preferredTimeMs);
- bool retVal = true;
- memset(&mLocationOptions, 0, sizeof(LocationOptions));
- mLocationOptions.size = sizeof(LocationOptions);
- mLocationOptions.minInterval = minIntervalMs;
- mLocationOptions.minDistance = preferredAccuracyMeters;
- if (IGnss::GnssPositionRecurrence::RECURRENCE_SINGLE == recurrence) {
- mLocationOptions.minInterval =
- std::numeric_limits<decltype(mLocationOptions.minInterval)>::max();
- }
- if (mode == IGnss::GnssPositionMode::STANDALONE)
- mLocationOptions.mode = GNSS_SUPL_MODE_STANDALONE;
- else if (mode == IGnss::GnssPositionMode::MS_BASED)
- mLocationOptions.mode = GNSS_SUPL_MODE_MSB;
- else if (mode == IGnss::GnssPositionMode::MS_ASSISTED)
- mLocationOptions.mode = GNSS_SUPL_MODE_MSA;
- else {
- LOC_LOGD("%s]: invalid GnssPositionMode: %d", __FUNCTION__, (int)mode);
- retVal = false;
- }
- locAPIUpdateTrackingOptions(mLocationOptions);
- return retVal;
-}
-
-// for GpsNiInterface
-void GnssAPIClient::gnssNiRespond(int32_t notifId,
- IGnssNiCallback::GnssUserResponseType userResponse)
-{
- LOC_LOGD("%s]: (%d %d)", __FUNCTION__, notifId, static_cast<int>(userResponse));
- GnssNiResponse data = GNSS_NI_RESPONSE_IGNORE;
- if (userResponse == IGnssNiCallback::GnssUserResponseType::RESPONSE_ACCEPT)
- data = GNSS_NI_RESPONSE_ACCEPT;
- else if (userResponse == IGnssNiCallback::GnssUserResponseType::RESPONSE_DENY)
- data = GNSS_NI_RESPONSE_DENY;
- else if (userResponse == IGnssNiCallback::GnssUserResponseType::RESPONSE_NORESP)
- data = GNSS_NI_RESPONSE_NO_RESPONSE;
- else {
- LOC_LOGD("%s]: invalid GnssUserResponseType: %d", __FUNCTION__, (int)userResponse);
- return;
- }
- locAPIGnssNiResponse(notifId, data);
-}
-
-// these apis using LocationAPIControlClient
-void GnssAPIClient::gnssDeleteAidingData(IGnss::GnssAidingData aidingDataFlags)
-{
- LOC_LOGD("%s]: (%02hx)", __FUNCTION__, aidingDataFlags);
- if (mControlClient == nullptr) {
- return;
- }
- GnssAidingData data;
- memset(&data, 0, sizeof (GnssAidingData));
- data.sv.svTypeMask = GNSS_AIDING_DATA_SV_TYPE_GPS_BIT |
- GNSS_AIDING_DATA_SV_TYPE_GLONASS_BIT |
- GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT |
- GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT |
- GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT;
-
- if (aidingDataFlags == IGnss::GnssAidingData::DELETE_ALL)
- data.deleteAll = true;
- else {
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_EPHEMERIS)
- data.sv.svMask |= GNSS_AIDING_DATA_SV_EPHEMERIS_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_ALMANAC)
- data.sv.svMask |= GNSS_AIDING_DATA_SV_ALMANAC_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_POSITION)
- data.common.mask |= GNSS_AIDING_DATA_COMMON_POSITION_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_TIME)
- data.common.mask |= GNSS_AIDING_DATA_COMMON_TIME_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_IONO)
- data.sv.svMask |= GNSS_AIDING_DATA_SV_IONOSPHERE_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_UTC)
- data.common.mask |= GNSS_AIDING_DATA_COMMON_UTC_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_HEALTH)
- data.sv.svMask |= GNSS_AIDING_DATA_SV_HEALTH_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_SVDIR)
- data.sv.svMask |= GNSS_AIDING_DATA_SV_DIRECTION_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_SVSTEER)
- data.sv.svMask |= GNSS_AIDING_DATA_SV_STEER_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_SADATA)
- data.sv.svMask |= GNSS_AIDING_DATA_SV_SA_DATA_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_RTI)
- data.common.mask |= GNSS_AIDING_DATA_COMMON_RTI_BIT;
- if (aidingDataFlags & IGnss::GnssAidingData::DELETE_CELLDB_INFO)
- data.common.mask |= GNSS_AIDING_DATA_COMMON_CELLDB_BIT;
- }
- mControlClient->locAPIGnssDeleteAidingData(data);
-}
-
-void GnssAPIClient::gnssEnable(LocationTechnologyType techType)
-{
- LOC_LOGD("%s]: (%0d)", __FUNCTION__, techType);
- if (mControlClient == nullptr) {
- return;
- }
- mControlClient->locAPIEnable(techType);
-}
-
-void GnssAPIClient::gnssDisable()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
- if (mControlClient == nullptr) {
- return;
- }
- mControlClient->locAPIDisable();
-}
-
-void GnssAPIClient::gnssConfigurationUpdate(const GnssConfig& gnssConfig)
-{
- LOC_LOGD("%s]: (%02x)", __FUNCTION__, gnssConfig.flags);
- if (mControlClient == nullptr) {
- return;
- }
- mControlClient->locAPIGnssUpdateConfig(gnssConfig);
-}
-
-void GnssAPIClient::requestCapabilities() {
- // only send capablities if it's already cached, otherwise the first time LocationAPI
- // is initialized, capabilities will be sent by LocationAPI
- if (mLocationCapabilitiesCached) {
- onCapabilitiesCb(mLocationCapabilitiesMask);
- }
-}
-
-// callbacks
-void GnssAPIClient::onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask)
-{
- LOC_LOGD("%s]: (%02x)", __FUNCTION__, capabilitiesMask);
- mLocationCapabilitiesMask = capabilitiesMask;
- mLocationCapabilitiesCached = true;
-
- mMutex.lock();
- auto gnssCbIface(mGnssCbIface);
- mMutex.unlock();
-
- if (gnssCbIface != nullptr) {
- uint32_t data = 0;
- if ((capabilitiesMask & LOCATION_CAPABILITIES_TIME_BASED_TRACKING_BIT) ||
- (capabilitiesMask & LOCATION_CAPABILITIES_TIME_BASED_BATCHING_BIT) ||
- (capabilitiesMask & LOCATION_CAPABILITIES_DISTANCE_BASED_TRACKING_BIT) ||
- (capabilitiesMask & LOCATION_CAPABILITIES_DISTANCE_BASED_BATCHING_BIT))
- data |= IGnssCallback::Capabilities::SCHEDULING;
- if (capabilitiesMask & LOCATION_CAPABILITIES_GEOFENCE_BIT)
- data |= IGnssCallback::Capabilities::GEOFENCING;
- if (capabilitiesMask & LOCATION_CAPABILITIES_GNSS_MEASUREMENTS_BIT)
- data |= IGnssCallback::Capabilities::MEASUREMENTS;
- if (capabilitiesMask & LOCATION_CAPABILITIES_GNSS_MSB_BIT)
- data |= IGnssCallback::Capabilities::MSB;
- if (capabilitiesMask & LOCATION_CAPABILITIES_GNSS_MSA_BIT)
- data |= IGnssCallback::Capabilities::MSA;
- auto r = gnssCbIface->gnssSetCapabilitesCb(data);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssSetCapabilitesCb description=%s",
- __func__, r.description().c_str());
- }
- }
- if (gnssCbIface != nullptr) {
- IGnssCallback::GnssSystemInfo gnssInfo;
- if (capabilitiesMask & LOCATION_CAPABILITIES_DEBUG_NMEA_BIT) {
- gnssInfo.yearOfHw = 2017;
- } else if (capabilitiesMask & LOCATION_CAPABILITIES_GNSS_MEASUREMENTS_BIT) {
- gnssInfo.yearOfHw = 2016;
- } else {
- gnssInfo.yearOfHw = 2015;
- }
- LOC_LOGV("%s:%d] set_system_info_cb (%d)", __FUNCTION__, __LINE__, gnssInfo.yearOfHw);
- auto r = gnssCbIface->gnssSetSystemInfoCb(gnssInfo);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssSetSystemInfoCb description=%s",
- __func__, r.description().c_str());
- }
- }
-}
-
-void GnssAPIClient::onTrackingCb(Location location)
-{
- LOC_LOGD("%s]: (flags: %02x)", __FUNCTION__, location.flags);
- mMutex.lock();
- auto gnssCbIface(mGnssCbIface);
- mMutex.unlock();
-
- if (gnssCbIface != nullptr) {
- GnssLocation gnssLocation;
- convertGnssLocation(location, gnssLocation);
- auto r = gnssCbIface->gnssLocationCb(gnssLocation);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssLocationCb description=%s",
- __func__, r.description().c_str());
- }
- }
-}
-
-void GnssAPIClient::onGnssNiCb(uint32_t id, GnssNiNotification gnssNiNotification)
-{
- LOC_LOGD("%s]: (id: %d)", __FUNCTION__, id);
- mMutex.lock();
- auto gnssNiCbIface(mGnssNiCbIface);
- mMutex.unlock();
-
- if (gnssNiCbIface == nullptr) {
- LOC_LOGE("%s]: mGnssNiCbIface is nullptr", __FUNCTION__);
- return;
- }
-
- IGnssNiCallback::GnssNiNotification notificationGnss = {};
-
- notificationGnss.notificationId = id;
-
- if (gnssNiNotification.type == GNSS_NI_TYPE_VOICE)
- notificationGnss.niType = IGnssNiCallback::GnssNiType::VOICE;
- else if (gnssNiNotification.type == GNSS_NI_TYPE_SUPL)
- notificationGnss.niType = IGnssNiCallback::GnssNiType::UMTS_SUPL;
- else if (gnssNiNotification.type == GNSS_NI_TYPE_CONTROL_PLANE)
- notificationGnss.niType = IGnssNiCallback::GnssNiType::UMTS_CTRL_PLANE;
- else if (gnssNiNotification.type == GNSS_NI_TYPE_EMERGENCY_SUPL)
- notificationGnss.niType = IGnssNiCallback::GnssNiType::EMERGENCY_SUPL;
-
- if (gnssNiNotification.options & GNSS_NI_OPTIONS_NOTIFICATION_BIT)
- notificationGnss.notifyFlags |= IGnssNiCallback::GnssNiNotifyFlags::NEED_NOTIFY;
- if (gnssNiNotification.options & GNSS_NI_OPTIONS_VERIFICATION_BIT)
- notificationGnss.notifyFlags |= IGnssNiCallback::GnssNiNotifyFlags::NEED_VERIFY;
- if (gnssNiNotification.options & GNSS_NI_OPTIONS_PRIVACY_OVERRIDE_BIT)
- notificationGnss.notifyFlags |= IGnssNiCallback::GnssNiNotifyFlags::PRIVACY_OVERRIDE;
-
- notificationGnss.timeoutSec = gnssNiNotification.timeout;
-
- if (gnssNiNotification.timeoutResponse == GNSS_NI_RESPONSE_ACCEPT)
- notificationGnss.defaultResponse = IGnssNiCallback::GnssUserResponseType::RESPONSE_ACCEPT;
- else if (gnssNiNotification.timeoutResponse == GNSS_NI_RESPONSE_DENY)
- notificationGnss.defaultResponse = IGnssNiCallback::GnssUserResponseType::RESPONSE_DENY;
- else if (gnssNiNotification.timeoutResponse == GNSS_NI_RESPONSE_NO_RESPONSE ||
- gnssNiNotification.timeoutResponse == GNSS_NI_RESPONSE_IGNORE)
- notificationGnss.defaultResponse = IGnssNiCallback::GnssUserResponseType::RESPONSE_NORESP;
-
- notificationGnss.requestorId = gnssNiNotification.requestor;
-
- notificationGnss.notificationMessage = gnssNiNotification.message;
-
- if (gnssNiNotification.requestorEncoding == GNSS_NI_ENCODING_TYPE_NONE)
- notificationGnss.requestorIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_NONE;
- else if (gnssNiNotification.requestorEncoding == GNSS_NI_ENCODING_TYPE_GSM_DEFAULT)
- notificationGnss.requestorIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_SUPL_GSM_DEFAULT;
- else if (gnssNiNotification.requestorEncoding == GNSS_NI_ENCODING_TYPE_UTF8)
- notificationGnss.requestorIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_SUPL_UTF8;
- else if (gnssNiNotification.requestorEncoding == GNSS_NI_ENCODING_TYPE_UCS2)
- notificationGnss.requestorIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_SUPL_UCS2;
-
- if (gnssNiNotification.messageEncoding == GNSS_NI_ENCODING_TYPE_NONE)
- notificationGnss.notificationIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_NONE;
- else if (gnssNiNotification.messageEncoding == GNSS_NI_ENCODING_TYPE_GSM_DEFAULT)
- notificationGnss.notificationIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_SUPL_GSM_DEFAULT;
- else if (gnssNiNotification.messageEncoding == GNSS_NI_ENCODING_TYPE_UTF8)
- notificationGnss.notificationIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_SUPL_UTF8;
- else if (gnssNiNotification.messageEncoding == GNSS_NI_ENCODING_TYPE_UCS2)
- notificationGnss.notificationIdEncoding =
- IGnssNiCallback::GnssNiEncodingType::ENC_SUPL_UCS2;
-
- gnssNiCbIface->niNotifyCb(notificationGnss);
-}
-
-void GnssAPIClient::onGnssSvCb(GnssSvNotification gnssSvNotification)
-{
- LOC_LOGD("%s]: (count: %zu)", __FUNCTION__, gnssSvNotification.count);
- mMutex.lock();
- auto gnssCbIface(mGnssCbIface);
- mMutex.unlock();
-
- if (gnssCbIface != nullptr) {
- IGnssCallback::GnssSvStatus svStatus;
- convertGnssSvStatus(gnssSvNotification, svStatus);
- auto r = gnssCbIface->gnssSvStatusCb(svStatus);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssSvStatusCb description=%s",
- __func__, r.description().c_str());
- }
- }
-}
-
-void GnssAPIClient::onGnssNmeaCb(GnssNmeaNotification gnssNmeaNotification)
-{
- mMutex.lock();
- auto gnssCbIface(mGnssCbIface);
- mMutex.unlock();
-
- if (gnssCbIface != nullptr) {
- android::hardware::hidl_string nmeaString;
- nmeaString.setToExternal(gnssNmeaNotification.nmea, gnssNmeaNotification.length);
- auto r = gnssCbIface->gnssNmeaCb(
- static_cast<V1_0::GnssUtcTime>(gnssNmeaNotification.timestamp), nmeaString);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssNmeaCb nmea=%s length=%zu description=%s", __func__,
- gnssNmeaNotification.nmea, gnssNmeaNotification.length, r.description().c_str());
- }
- }
-}
-
-void GnssAPIClient::onStartTrackingCb(LocationError error)
-{
- LOC_LOGD("%s]: (%d)", __FUNCTION__, error);
- mMutex.lock();
- auto gnssCbIface(mGnssCbIface);
- mMutex.unlock();
-
- if (error == LOCATION_ERROR_SUCCESS && gnssCbIface != nullptr) {
- auto r = gnssCbIface->gnssStatusCb(IGnssCallback::GnssStatusValue::ENGINE_ON);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssStatusCb ENGINE_ON description=%s",
- __func__, r.description().c_str());
- }
- r = gnssCbIface->gnssStatusCb(IGnssCallback::GnssStatusValue::SESSION_BEGIN);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssStatusCb SESSION_BEGIN description=%s",
- __func__, r.description().c_str());
- }
- }
-}
-
-void GnssAPIClient::onStopTrackingCb(LocationError error)
-{
- LOC_LOGD("%s]: (%d)", __FUNCTION__, error);
- mMutex.lock();
- auto gnssCbIface(mGnssCbIface);
- mMutex.unlock();
-
- if (error == LOCATION_ERROR_SUCCESS && gnssCbIface != nullptr) {
- auto r = gnssCbIface->gnssStatusCb(IGnssCallback::GnssStatusValue::SESSION_END);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssStatusCb SESSION_END description=%s",
- __func__, r.description().c_str());
- }
- r = gnssCbIface->gnssStatusCb(IGnssCallback::GnssStatusValue::ENGINE_OFF);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from gnssStatusCb ENGINE_OFF description=%s",
- __func__, r.description().c_str());
- }
- }
-}
-
-static void convertGnssSvStatus(GnssSvNotification& in, IGnssCallback::GnssSvStatus& out)
-{
- memset(&out, 0, sizeof(IGnssCallback::GnssSvStatus));
- out.numSvs = in.count;
- if (out.numSvs > static_cast<uint32_t>(V1_0::GnssMax::SVS_COUNT)) {
- LOC_LOGW("%s]: Too many satellites %u. Clamps to %d.",
- __FUNCTION__, out.numSvs, V1_0::GnssMax::SVS_COUNT);
- out.numSvs = static_cast<uint32_t>(V1_0::GnssMax::SVS_COUNT);
- }
- for (size_t i = 0; i < out.numSvs; i++) {
- IGnssCallback::GnssSvInfo& info = out.gnssSvList[i];
- info.svid = in.gnssSvs[i].svId;
- convertGnssConstellationType(in.gnssSvs[i].type, info.constellation);
- info.cN0Dbhz = in.gnssSvs[i].cN0Dbhz;
- info.elevationDegrees = in.gnssSvs[i].elevation;
- info.azimuthDegrees = in.gnssSvs[i].azimuth;
- info.svFlag = static_cast<uint8_t>(IGnssCallback::GnssSvFlags::NONE);
- if (in.gnssSvs[i].gnssSvOptionsMask & GNSS_SV_OPTIONS_HAS_EPHEMER_BIT)
- info.svFlag |= IGnssCallback::GnssSvFlags::HAS_EPHEMERIS_DATA;
- if (in.gnssSvs[i].gnssSvOptionsMask & GNSS_SV_OPTIONS_HAS_ALMANAC_BIT)
- info.svFlag |= IGnssCallback::GnssSvFlags::HAS_ALMANAC_DATA;
- if (in.gnssSvs[i].gnssSvOptionsMask & GNSS_SV_OPTIONS_USED_IN_FIX_BIT)
- info.svFlag |= IGnssCallback::GnssSvFlags::USED_IN_FIX;
- }
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/location_api/GnssAPIClient.h b/gps/android/location_api/GnssAPIClient.h
deleted file mode 100644
index 923cb48..0000000
--- a/gps/android/location_api/GnssAPIClient.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GNSS_API_CLINET_H
-#define GNSS_API_CLINET_H
-
-
-#include <mutex>
-#include <android/hardware/gnss/1.0/IGnss.h>
-#include <android/hardware/gnss/1.0/IGnssCallback.h>
-#include <android/hardware/gnss/1.0/IGnssNiCallback.h>
-#include <LocationAPIClientBase.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::sp;
-
-class GnssAPIClient : public LocationAPIClientBase
-{
-public:
- GnssAPIClient(const sp<V1_0::IGnssCallback>& gpsCb,
- const sp<V1_0::IGnssNiCallback>& niCb);
- virtual ~GnssAPIClient();
- GnssAPIClient(const GnssAPIClient&) = delete;
- GnssAPIClient& operator=(const GnssAPIClient&) = delete;
-
- // for GpsInterface
- void gnssUpdateCallbacks(const sp<V1_0::IGnssCallback>& gpsCb,
- const sp<V1_0::IGnssNiCallback>& niCb);
- bool gnssStart();
- bool gnssStop();
- bool gnssSetPositionMode(V1_0::IGnss::GnssPositionMode mode,
- V1_0::IGnss::GnssPositionRecurrence recurrence,
- uint32_t minIntervalMs,
- uint32_t preferredAccuracyMeters,
- uint32_t preferredTimeMs);
-
- // for GpsNiInterface
- void gnssNiRespond(int32_t notifId, V1_0::IGnssNiCallback::GnssUserResponseType userResponse);
-
- // these apis using LocationAPIControlClient
- void gnssDeleteAidingData(V1_0::IGnss::GnssAidingData aidingDataFlags);
- void gnssEnable(LocationTechnologyType techType);
- void gnssDisable();
- void gnssConfigurationUpdate(const GnssConfig& gnssConfig);
-
- inline LocationCapabilitiesMask gnssGetCapabilities() const {
- return mLocationCapabilitiesMask;
- }
- void requestCapabilities();
-
- // callbacks we are interested in
- void onCapabilitiesCb(LocationCapabilitiesMask capabilitiesMask) final;
- void onTrackingCb(Location location) final;
- void onGnssNiCb(uint32_t id, GnssNiNotification gnssNiNotification) final;
- void onGnssSvCb(GnssSvNotification gnssSvNotification) final;
- void onGnssNmeaCb(GnssNmeaNotification gnssNmeaNotification) final;
-
- void onStartTrackingCb(LocationError error) final;
- void onStopTrackingCb(LocationError error) final;
-
-private:
- sp<V1_0::IGnssCallback> mGnssCbIface;
- sp<V1_0::IGnssNiCallback> mGnssNiCbIface;
- std::mutex mMutex;
- LocationAPIControlClient* mControlClient;
- LocationCapabilitiesMask mLocationCapabilitiesMask;
- bool mLocationCapabilitiesCached;
-
- LocationOptions mLocationOptions;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-#endif // GNSS_API_CLINET_H
diff --git a/gps/android/location_api/LocationUtil.cpp b/gps/android/location_api/LocationUtil.cpp
deleted file mode 100644
index 89681f2..0000000
--- a/gps/android/location_api/LocationUtil.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include <LocationUtil.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::GnssLocation;
-using ::android::hardware::gnss::V1_0::GnssConstellationType;
-using ::android::hardware::gnss::V1_0::GnssLocationFlags;
-
-void convertGnssLocation(Location& in, GnssLocation& out)
-{
- memset(&out, 0, sizeof(GnssLocation));
- if (in.flags & LOCATION_HAS_LAT_LONG_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_LAT_LONG;
- if (in.flags & LOCATION_HAS_ALTITUDE_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_ALTITUDE;
- if (in.flags & LOCATION_HAS_SPEED_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_SPEED;
- if (in.flags & LOCATION_HAS_BEARING_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_BEARING;
- if (in.flags & LOCATION_HAS_ACCURACY_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_HORIZONTAL_ACCURACY;
- if (in.flags & LOCATION_HAS_VERTICAL_ACCURACY_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_VERTICAL_ACCURACY;
- if (in.flags & LOCATION_HAS_SPEED_ACCURACY_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_SPEED_ACCURACY;
- if (in.flags & LOCATION_HAS_BEARING_ACCURACY_BIT)
- out.gnssLocationFlags |= GnssLocationFlags::HAS_BEARING_ACCURACY;
- out.latitudeDegrees = in.latitude;
- out.longitudeDegrees = in.longitude;
- out.altitudeMeters = in.altitude;
- out.speedMetersPerSec = in.speed;
- out.bearingDegrees = in.bearing;
- out.horizontalAccuracyMeters = in.accuracy;
- out.verticalAccuracyMeters = in.verticalAccuracy;
- out.speedAccuracyMetersPerSecond = in.speedAccuracy;
- out.bearingAccuracyDegrees = in.bearingAccuracy;
- out.timestamp = static_cast<V1_0::GnssUtcTime>(in.timestamp);
-}
-
-void convertGnssLocation(const GnssLocation& in, Location& out)
-{
- memset(&out, 0, sizeof(out));
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_LAT_LONG)
- out.flags |= LOCATION_HAS_LAT_LONG_BIT;
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_ALTITUDE)
- out.flags |= LOCATION_HAS_ALTITUDE_BIT;
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_SPEED)
- out.flags |= LOCATION_HAS_SPEED_BIT;
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_BEARING)
- out.flags |= LOCATION_HAS_BEARING_BIT;
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_HORIZONTAL_ACCURACY)
- out.flags |= LOCATION_HAS_ACCURACY_BIT;
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_VERTICAL_ACCURACY)
- out.flags |= LOCATION_HAS_VERTICAL_ACCURACY_BIT;
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_SPEED_ACCURACY)
- out.flags |= LOCATION_HAS_SPEED_ACCURACY_BIT;
- if (in.gnssLocationFlags & GnssLocationFlags::HAS_BEARING_ACCURACY)
- out.flags |= LOCATION_HAS_BEARING_ACCURACY_BIT;
- out.latitude = in.latitudeDegrees;
- out.longitude = in.longitudeDegrees;
- out.altitude = in.altitudeMeters;
- out.speed = in.speedMetersPerSec;
- out.bearing = in.bearingDegrees;
- out.accuracy = in.horizontalAccuracyMeters;
- out.verticalAccuracy = in.verticalAccuracyMeters;
- out.speedAccuracy = in.speedAccuracyMetersPerSecond;
- out.bearingAccuracy = in.bearingAccuracyDegrees;
- out.timestamp = static_cast<uint64_t>(in.timestamp);
-}
-
-void convertGnssConstellationType(GnssSvType& in, GnssConstellationType& out)
-{
- switch(in) {
- case GNSS_SV_TYPE_GPS:
- out = GnssConstellationType::GPS;
- break;
- case GNSS_SV_TYPE_SBAS:
- out = GnssConstellationType::SBAS;
- break;
- case GNSS_SV_TYPE_GLONASS:
- out = GnssConstellationType::GLONASS;
- break;
- case GNSS_SV_TYPE_QZSS:
- out = GnssConstellationType::QZSS;
- break;
- case GNSS_SV_TYPE_BEIDOU:
- out = GnssConstellationType::BEIDOU;
- break;
- case GNSS_SV_TYPE_GALILEO:
- out = GnssConstellationType::GALILEO;
- break;
- case GNSS_SV_TYPE_UNKNOWN:
- default:
- out = GnssConstellationType::UNKNOWN;
- break;
- }
-}
-
-void convertGnssEphemerisType(GnssEphemerisType& in, GnssDebug::SatelliteEphemerisType& out)
-{
- switch(in) {
- case GNSS_EPH_TYPE_EPHEMERIS:
- out = GnssDebug::SatelliteEphemerisType::EPHEMERIS;
- break;
- case GNSS_EPH_TYPE_ALMANAC:
- out = GnssDebug::SatelliteEphemerisType::ALMANAC_ONLY;
- break;
- case GNSS_EPH_TYPE_UNKNOWN:
- default:
- out = GnssDebug::SatelliteEphemerisType::NOT_AVAILABLE;
- break;
- }
-}
-
-void convertGnssEphemerisSource(GnssEphemerisSource& in, GnssDebug::SatelliteEphemerisSource& out)
-{
- switch(in) {
- case GNSS_EPH_SOURCE_DEMODULATED:
- out = GnssDebug::SatelliteEphemerisSource::DEMODULATED;
- break;
- case GNSS_EPH_SOURCE_SUPL_PROVIDED:
- out = GnssDebug::SatelliteEphemerisSource::SUPL_PROVIDED;
- break;
- case GNSS_EPH_SOURCE_OTHER_SERVER_PROVIDED:
- out = GnssDebug::SatelliteEphemerisSource::OTHER_SERVER_PROVIDED;
- break;
- case GNSS_EPH_SOURCE_LOCAL:
- case GNSS_EPH_SOURCE_UNKNOWN:
- default:
- out = GnssDebug::SatelliteEphemerisSource::OTHER;
- break;
- }
-}
-
-void convertGnssEphemerisHealth(GnssEphemerisHealth& in, GnssDebug::SatelliteEphemerisHealth& out)
-{
- switch(in) {
- case GNSS_EPH_HEALTH_GOOD:
- out = GnssDebug::SatelliteEphemerisHealth::GOOD;
- break;
- case GNSS_EPH_HEALTH_BAD:
- out = GnssDebug::SatelliteEphemerisHealth::BAD;
- break;
- case GNSS_EPH_HEALTH_UNKNOWN:
- default:
- out = GnssDebug::SatelliteEphemerisHealth::UNKNOWN;
- break;
- }
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/location_api/LocationUtil.h b/gps/android/location_api/LocationUtil.h
deleted file mode 100644
index 9e0cd36..0000000
--- a/gps/android/location_api/LocationUtil.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef LOCATION_UTIL_H
-#define LOCATION_UTIL_H
-
-#include <android/hardware/gnss/1.0/types.h>
-#include <LocationAPI.h>
-#include <GnssDebug.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-void convertGnssLocation(Location& in, V1_0::GnssLocation& out);
-void convertGnssLocation(const V1_0::GnssLocation& in, Location& out);
-void convertGnssConstellationType(GnssSvType& in, V1_0::GnssConstellationType& out);
-void convertGnssEphemerisType(GnssEphemerisType& in, GnssDebug::SatelliteEphemerisType& out);
-void convertGnssEphemerisSource(GnssEphemerisSource& in, GnssDebug::SatelliteEphemerisSource& out);
-void convertGnssEphemerisHealth(GnssEphemerisHealth& in, GnssDebug::SatelliteEphemerisHealth& out);
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-#endif // LOCATION_UTIL_H
diff --git a/gps/android/location_api/MeasurementAPIClient.cpp b/gps/android/location_api/MeasurementAPIClient.cpp
deleted file mode 100644
index 823851d..0000000
--- a/gps/android/location_api/MeasurementAPIClient.cpp
+++ /dev/null
@@ -1,275 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#define LOG_NDEBUG 0
-#define LOG_TAG "LocSvc_MeasurementAPIClient"
-
-#include <log_util.h>
-#include <loc_cfg.h>
-
-#include "LocationUtil.h"
-#include "MeasurementAPIClient.h"
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::hardware::gnss::V1_0::IGnssMeasurement;
-using ::android::hardware::gnss::V1_0::IGnssMeasurementCallback;
-
-static void convertGnssData(GnssMeasurementsNotification& in,
- V1_0::IGnssMeasurementCallback::GnssData& out);
-static void convertGnssMeasurement(GnssMeasurementsData& in,
- V1_0::IGnssMeasurementCallback::GnssMeasurement& out);
-static void convertGnssClock(GnssMeasurementsClock& in, IGnssMeasurementCallback::GnssClock& out);
-
-MeasurementAPIClient::MeasurementAPIClient() :
- mGnssMeasurementCbIface(nullptr),
- mTracking(false)
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
-}
-
-MeasurementAPIClient::~MeasurementAPIClient()
-{
- LOC_LOGD("%s]: ()", __FUNCTION__);
-}
-
-// for GpsInterface
-Return<IGnssMeasurement::GnssMeasurementStatus>
-MeasurementAPIClient::measurementSetCallback(const sp<V1_0::IGnssMeasurementCallback>& callback)
-{
- LOC_LOGD("%s]: (%p)", __FUNCTION__, &callback);
-
- mMutex.lock();
- mGnssMeasurementCbIface = callback;
- mMutex.unlock();
-
- return startTracking();
-}
-
-Return<IGnssMeasurement::GnssMeasurementStatus>
-MeasurementAPIClient::startTracking()
-{
- LocationCallbacks locationCallbacks;
- memset(&locationCallbacks, 0, sizeof(LocationCallbacks));
- locationCallbacks.size = sizeof(LocationCallbacks);
-
- locationCallbacks.trackingCb = nullptr;
- locationCallbacks.batchingCb = nullptr;
- locationCallbacks.geofenceBreachCb = nullptr;
- locationCallbacks.geofenceStatusCb = nullptr;
- locationCallbacks.gnssLocationInfoCb = nullptr;
- locationCallbacks.gnssNiCb = nullptr;
- locationCallbacks.gnssSvCb = nullptr;
- locationCallbacks.gnssNmeaCb = nullptr;
-
- locationCallbacks.gnssMeasurementsCb = nullptr;
- if (mGnssMeasurementCbIface != nullptr) {
- locationCallbacks.gnssMeasurementsCb =
- [this](GnssMeasurementsNotification gnssMeasurementsNotification) {
- onGnssMeasurementsCb(gnssMeasurementsNotification);
- };
- }
-
- locAPISetCallbacks(locationCallbacks);
- LocationOptions options;
- memset(&options, 0, sizeof(LocationOptions));
- options.size = sizeof(LocationOptions);
- options.minInterval = 1000;
- options.mode = GNSS_SUPL_MODE_STANDALONE;
- mTracking = true;
- LOC_LOGD("%s]: start tracking session", __FUNCTION__);
- locAPIStartTracking(options);
-
- return IGnssMeasurement::GnssMeasurementStatus::SUCCESS;
-}
-
-// for GpsMeasurementInterface
-void MeasurementAPIClient::measurementClose() {
- LOC_LOGD("%s]: ()", __FUNCTION__);
- mTracking = false;
- locAPIStopTracking();
-}
-
-// callbacks
-void MeasurementAPIClient::onGnssMeasurementsCb(
- GnssMeasurementsNotification gnssMeasurementsNotification)
-{
- LOC_LOGD("%s]: (count: %zu active: %d)",
- __FUNCTION__, gnssMeasurementsNotification.count, mTracking);
- if (mTracking) {
- mMutex.lock();
- sp<V1_0::IGnssMeasurementCallback> gnssMeasurementCbIface = nullptr;
- if (mGnssMeasurementCbIface != nullptr) {
- gnssMeasurementCbIface = mGnssMeasurementCbIface;
- }
- mMutex.unlock();
-
- if (gnssMeasurementCbIface != nullptr) {
- V1_0::IGnssMeasurementCallback::GnssData gnssData;
- convertGnssData(gnssMeasurementsNotification, gnssData);
- auto r = gnssMeasurementCbIface->GnssMeasurementCb(gnssData);
- if (!r.isOk()) {
- LOC_LOGE("%s] Error from GnssMeasurementCb description=%s",
- __func__, r.description().c_str());
- }
- }
- }
-}
-
-static void convertGnssMeasurement(GnssMeasurementsData& in,
- V1_0::IGnssMeasurementCallback::GnssMeasurement& out)
-{
- memset(&out, 0, sizeof(IGnssMeasurementCallback::GnssMeasurement));
- if (in.flags & GNSS_MEASUREMENTS_DATA_SIGNAL_TO_NOISE_RATIO_BIT)
- out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_SNR;
- if (in.flags & GNSS_MEASUREMENTS_DATA_CARRIER_FREQUENCY_BIT)
- out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_FREQUENCY;
- if (in.flags & GNSS_MEASUREMENTS_DATA_CARRIER_CYCLES_BIT)
- out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_CYCLES;
- if (in.flags & GNSS_MEASUREMENTS_DATA_CARRIER_PHASE_BIT)
- out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_PHASE;
- if (in.flags & GNSS_MEASUREMENTS_DATA_CARRIER_PHASE_UNCERTAINTY_BIT)
- out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_PHASE_UNCERTAINTY;
- if (in.flags & GNSS_MEASUREMENTS_DATA_AUTOMATIC_GAIN_CONTROL_BIT)
- out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_AUTOMATIC_GAIN_CONTROL;
- out.svid = in.svId;
- convertGnssConstellationType(in.svType, out.constellation);
- out.timeOffsetNs = in.timeOffsetNs;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_CODE_LOCK_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_CODE_LOCK;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_BIT_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_BIT_SYNC;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_SUBFRAME_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_SUBFRAME_SYNC;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_TOW_DECODED_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_TOW_DECODED;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_MSEC_AMBIGUOUS_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_MSEC_AMBIGUOUS;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_SYMBOL_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_SYMBOL_SYNC;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_GLO_STRING_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_GLO_STRING_SYNC;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_GLO_TOD_DECODED_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_GLO_TOD_DECODED;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_BDS_D2_BIT_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_BDS_D2_BIT_SYNC;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_BDS_D2_SUBFRAME_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_BDS_D2_SUBFRAME_SYNC;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_GAL_E1BC_CODE_LOCK_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_GAL_E1BC_CODE_LOCK;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_GAL_E1C_2ND_CODE_LOCK_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_GAL_E1C_2ND_CODE_LOCK;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_GAL_E1B_PAGE_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_GAL_E1B_PAGE_SYNC;
- if (in.stateMask & GNSS_MEASUREMENTS_STATE_SBAS_SYNC_BIT)
- out.state |= IGnssMeasurementCallback::GnssMeasurementState::STATE_SBAS_SYNC;
- out.receivedSvTimeInNs = in.receivedSvTimeNs;
- out.receivedSvTimeUncertaintyInNs = in.receivedSvTimeUncertaintyNs;
- out.cN0DbHz = in.carrierToNoiseDbHz;
- out.pseudorangeRateMps = in.pseudorangeRateMps;
- out.pseudorangeRateUncertaintyMps = in.pseudorangeRateUncertaintyMps;
- if (in.adrStateMask & GNSS_MEASUREMENTS_ACCUMULATED_DELTA_RANGE_STATE_VALID_BIT)
- out.accumulatedDeltaRangeState |=
- IGnssMeasurementCallback::GnssAccumulatedDeltaRangeState::ADR_STATE_VALID;
- if (in.adrStateMask & GNSS_MEASUREMENTS_ACCUMULATED_DELTA_RANGE_STATE_RESET_BIT)
- out.accumulatedDeltaRangeState |=
- IGnssMeasurementCallback::GnssAccumulatedDeltaRangeState::ADR_STATE_RESET;
- if (in.adrStateMask & GNSS_MEASUREMENTS_ACCUMULATED_DELTA_RANGE_STATE_CYCLE_SLIP_BIT)
- out.accumulatedDeltaRangeState |=
- IGnssMeasurementCallback::GnssAccumulatedDeltaRangeState::ADR_STATE_CYCLE_SLIP;
- out.accumulatedDeltaRangeM = in.adrMeters;
- out.accumulatedDeltaRangeUncertaintyM = in.adrUncertaintyMeters;
- out.carrierFrequencyHz = in.carrierFrequencyHz;
- out.carrierCycles = in.carrierCycles;
- out.carrierPhase = in.carrierPhase;
- out.carrierPhaseUncertainty = in.carrierPhaseUncertainty;
- uint8_t indicator =
- static_cast<uint8_t>(IGnssMeasurementCallback::GnssMultipathIndicator::INDICATOR_UNKNOWN);
- if (in.multipathIndicator & GNSS_MEASUREMENTS_MULTIPATH_INDICATOR_PRESENT)
- indicator |= IGnssMeasurementCallback::GnssMultipathIndicator::INDICATOR_PRESENT;
- if (in.multipathIndicator & GNSS_MEASUREMENTS_MULTIPATH_INDICATOR_NOT_PRESENT)
- indicator |= IGnssMeasurementCallback::GnssMultipathIndicator::INDICATIOR_NOT_PRESENT;
- out.multipathIndicator =
- static_cast<IGnssMeasurementCallback::GnssMultipathIndicator>(indicator);
- out.snrDb = in.signalToNoiseRatioDb;
- out.agcLevelDb = in.agcLevelDb;
-}
-
-static void convertGnssClock(GnssMeasurementsClock& in, IGnssMeasurementCallback::GnssClock& out)
-{
- memset(&out, 0, sizeof(IGnssMeasurementCallback::GnssClock));
- if (in.flags & GNSS_MEASUREMENTS_CLOCK_FLAGS_LEAP_SECOND_BIT)
- out.gnssClockFlags |= IGnssMeasurementCallback::GnssClockFlags::HAS_LEAP_SECOND;
- if (in.flags & GNSS_MEASUREMENTS_CLOCK_FLAGS_TIME_UNCERTAINTY_BIT)
- out.gnssClockFlags |= IGnssMeasurementCallback::GnssClockFlags::HAS_TIME_UNCERTAINTY;
- if (in.flags & GNSS_MEASUREMENTS_CLOCK_FLAGS_FULL_BIAS_BIT)
- out.gnssClockFlags |= IGnssMeasurementCallback::GnssClockFlags::HAS_FULL_BIAS;
- if (in.flags & GNSS_MEASUREMENTS_CLOCK_FLAGS_BIAS_BIT)
- out.gnssClockFlags |= IGnssMeasurementCallback::GnssClockFlags::HAS_BIAS;
- if (in.flags & GNSS_MEASUREMENTS_CLOCK_FLAGS_BIAS_UNCERTAINTY_BIT)
- out.gnssClockFlags |= IGnssMeasurementCallback::GnssClockFlags::HAS_BIAS_UNCERTAINTY;
- if (in.flags & GNSS_MEASUREMENTS_CLOCK_FLAGS_DRIFT_BIT)
- out.gnssClockFlags |= IGnssMeasurementCallback::GnssClockFlags::HAS_DRIFT;
- if (in.flags & GNSS_MEASUREMENTS_CLOCK_FLAGS_DRIFT_UNCERTAINTY_BIT)
- out.gnssClockFlags |= IGnssMeasurementCallback::GnssClockFlags::HAS_DRIFT_UNCERTAINTY;
- out.leapSecond = in.leapSecond;
- out.timeNs = in.timeNs;
- out.timeUncertaintyNs = in.timeUncertaintyNs;
- out.fullBiasNs = in.fullBiasNs;
- out.biasNs = in.biasNs;
- out.biasUncertaintyNs = in.biasUncertaintyNs;
- out.driftNsps = in.driftNsps;
- out.driftUncertaintyNsps = in.driftUncertaintyNsps;
- out.hwClockDiscontinuityCount = in.hwClockDiscontinuityCount;
-}
-
-static void convertGnssData(GnssMeasurementsNotification& in,
- V1_0::IGnssMeasurementCallback::GnssData& out)
-{
- out.measurementCount = in.count;
- if (out.measurementCount > static_cast<uint32_t>(V1_0::GnssMax::SVS_COUNT)) {
- LOC_LOGW("%s]: Too many measurement %u. Clamps to %d.",
- __FUNCTION__, out.measurementCount, V1_0::GnssMax::SVS_COUNT);
- out.measurementCount = static_cast<uint32_t>(V1_0::GnssMax::SVS_COUNT);
- }
- for (size_t i = 0; i < out.measurementCount; i++) {
- convertGnssMeasurement(in.measurements[i], out.measurements[i]);
- }
- convertGnssClock(in.clock, out.clock);
-}
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
diff --git a/gps/android/location_api/MeasurementAPIClient.h b/gps/android/location_api/MeasurementAPIClient.h
deleted file mode 100644
index 08b4811..0000000
--- a/gps/android/location_api/MeasurementAPIClient.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- * * Neither the name of The Linux Foundation, nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef MEASUREMENT_API_CLINET_H
-#define MEASUREMENT_API_CLINET_H
-
-#include <mutex>
-#include <android/hardware/gnss/1.0/IGnssMeasurement.h>
-#include <android/hardware/gnss/1.0/IGnssMeasurementCallback.h>
-#include <LocationAPIClientBase.h>
-#include <hidl/Status.h>
-
-namespace android {
-namespace hardware {
-namespace gnss {
-namespace V1_0 {
-namespace implementation {
-
-using ::android::sp;
-
-class MeasurementAPIClient : public LocationAPIClientBase
-{
-public:
- MeasurementAPIClient();
- virtual ~MeasurementAPIClient();
- MeasurementAPIClient(const MeasurementAPIClient&) = delete;
- MeasurementAPIClient& operator=(const MeasurementAPIClient&) = delete;
-
- // for GpsMeasurementInterface
- Return<V1_0::IGnssMeasurement::GnssMeasurementStatus> measurementSetCallback(
- const sp<V1_0::IGnssMeasurementCallback>& callback);
- void measurementClose();
- Return<IGnssMeasurement::GnssMeasurementStatus> startTracking();
-
- // callbacks we are interested in
- void onGnssMeasurementsCb(GnssMeasurementsNotification gnssMeasurementsNotification) final;
-
-private:
- std::mutex mMutex;
- sp<V1_0::IGnssMeasurementCallback> mGnssMeasurementCbIface;
-
- bool mTracking;
-};
-
-} // namespace implementation
-} // namespace V1_0
-} // namespace gnss
-} // namespace hardware
-} // namespace android
-#endif // MEASUREMENT_API_CLINET_H
diff --git a/gps/android/service.cpp b/gps/android/service.cpp
deleted file mode 100644
index c03b7ea..0000000
--- a/gps/android/service.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
- * Not a Contribution
- */
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "android.hardware.gnss@1.1-service-qti"
-
-#include <android/hardware/gnss/1.1/IGnss.h>
-#include <hidl/LegacySupport.h>
-
-using android::hardware::gnss::V1_0::IGnss;
-using android::hardware::defaultPassthroughServiceImplementation;
-
-int main() {
- return defaultPassthroughServiceImplementation<IGnss>();
-}