From 0aa6e3aee910a84f8a410403d8b4276d141cac5b Mon Sep 17 00:00:00 2001 From: Ruifeng Xu Date: Wed, 8 Jun 2016 11:30:39 -0700 Subject: [PATCH] multiple XTRA downloaders could be triggered on boot up Disable loc xtra apis to allow only one XTRA downloader when other XTRA downloader is enabled. Change-Id: I0183608f801cdc6a7d7db730d5d633e556c95386 CRs-fixed: 1022064 --- core/ContextBase.h | 1 + core/LBSProxyBase.h | 1 + loc_api/libloc_api_50001/Android.mk | 4 ++++ loc_api/libloc_api_50001/LocEngAdapter.h | 3 +++ loc_api/libloc_api_50001/loc_eng_xtra.cpp | 7 +++++++ 5 files changed, 16 insertions(+) diff --git a/core/ContextBase.h b/core/ContextBase.h index bd9a19f9..4f8723eb 100644 --- a/core/ContextBase.h +++ b/core/ContextBase.h @@ -116,6 +116,7 @@ public: inline LocApiProxyBase* getLocApiProxy() { return mLocApiProxy; } inline bool hasAgpsExtendedCapabilities() { return mLBSProxy->hasAgpsExtendedCapabilities(); } inline bool hasCPIExtendedCapabilities() { return mLBSProxy->hasCPIExtendedCapabilities(); } + inline bool hasNativeXtraClient() { return mLBSProxy->hasNativeXtraClient(); } inline void modemPowerVote(bool power) const { return mLBSProxy->modemPowerVote(power); } inline void requestUlp(LocAdapterBase* adapter, unsigned long capabilities) { diff --git a/core/LBSProxyBase.h b/core/LBSProxyBase.h index b3736c20..94ddd0fb 100644 --- a/core/LBSProxyBase.h +++ b/core/LBSProxyBase.h @@ -69,6 +69,7 @@ public: (void)context; } + inline virtual bool hasNativeXtraClient() const { return false; } inline virtual IzatDevId_t getIzatDevId() const { return 0; } }; diff --git a/loc_api/libloc_api_50001/Android.mk b/loc_api/libloc_api_50001/Android.mk index cd4888d8..ad14e143 100644 --- a/loc_api/libloc_api_50001/Android.mk +++ b/loc_api/libloc_api_50001/Android.mk @@ -91,6 +91,10 @@ LOCAL_CFLAGS += \ -fno-short-enums \ -D_ANDROID_ \ +ifeq ($(TARGET_BUILD_VARIANT),user) + LOCAL_CFLAGS += -DTARGET_BUILD_VARIANT_USER +endif + ifeq ($(TARGET_USES_QCOM_BSP), true) LOCAL_CFLAGS += -DTARGET_USES_QCOM_BSP endif diff --git a/loc_api/libloc_api_50001/LocEngAdapter.h b/loc_api/libloc_api_50001/LocEngAdapter.h index b7f28f33..446acf4e 100644 --- a/loc_api/libloc_api_50001/LocEngAdapter.h +++ b/loc_api/libloc_api_50001/LocEngAdapter.h @@ -105,6 +105,9 @@ public: inline bool hasCPIExtendedCapabilities() { return mContext->hasCPIExtendedCapabilities(); } + inline bool hasNativeXtraClient() { + return mContext->hasNativeXtraClient(); + } inline const MsgTask* getMsgTask() { return mMsgTask; } inline enum loc_api_adapter_err diff --git a/loc_api/libloc_api_50001/loc_eng_xtra.cpp b/loc_api/libloc_api_50001/loc_eng_xtra.cpp index 9207564b..b5bf4e76 100644 --- a/loc_api/libloc_api_50001/loc_eng_xtra.cpp +++ b/loc_api/libloc_api_50001/loc_eng_xtra.cpp @@ -123,6 +123,13 @@ int loc_eng_xtra_init (loc_eng_data_s_type &loc_eng_data, loc_eng_xtra_data_s_type *xtra_module_data_ptr; ENTRY_LOG(); + if(!loc_eng_data.adapter->mSupportsTimeInjection + || loc_eng_data.adapter->hasNativeXtraClient()) { + LOC_LOGD("XTRA is already supported. disable it here.\n"); + EXIT_LOG(%d, 1); // return 1 denote failure + return 1; + } + if(callbacks == NULL) { LOC_LOGE("loc_eng_xtra_init: failed, cb is NULL"); } else {