From e8958a3aab0a154db8566b123273ea2dfebe64b0 Mon Sep 17 00:00:00 2001 From: Tushar Janefalkar Date: Tue, 27 May 2014 17:10:23 -0700 Subject: [PATCH] Add option to fallback to LocApiV02 In case the lbs or izat libs are not present, fall back to LocApiV02 to obtain the qmi client handle. This change will enable basic GPS functionality without lbs or izat lib dependencies Change-Id: Ic2c8418d785e891ad0a660a615cd5111fafc4ff2 --- core/ContextBase.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/core/ContextBase.cpp b/core/ContextBase.cpp index e5a50140..c3cb532a 100644 --- a/core/ContextBase.cpp +++ b/core/ContextBase.cpp @@ -65,13 +65,28 @@ LocApiBase* ContextBase::createLocApi(LOC_API_ADAPTER_EVENT_MASK_T exMask) // first if can not be MPQ if (TARGET_MPQ != loc_get_target()) { - if (NULL == (locApi = mLBSProxy->getLocApi(mMsgTask, exMask, this))) { - // only RPC is the option now - void* handle = dlopen("libloc_api-rpc-qc.so", RTLD_NOW); - if (NULL != handle) { + if (NULL == (locApi = mLBSProxy->getLocApi(mMsgTask, exMask))) { + void *handle = NULL; + //try to see if LocApiV02 is present + if((handle = dlopen("libloc_api_v02.so", RTLD_NOW)) != NULL) { + LOC_LOGD("%s:%d]: libloc_api_v02.so is present", __func__, __LINE__); getLocApi_t* getter = (getLocApi_t*)dlsym(handle, "getLocApi"); - if (NULL != getter) { - locApi = (*getter)(mMsgTask, exMask, this); + if(getter != NULL) { + LOC_LOGD("%s:%d]: getter is not NULL for LocApiV02", __func__, __LINE__); + locApi = (*getter)(mMsgTask,exMask); + } + } + // only RPC is the option now + else { + LOC_LOGD("%s:%d]: libloc_api_v02.so is NOT present. Trying RPC", + __func__, __LINE__); + handle = dlopen("libloc_api-rpc-qc.so", RTLD_NOW); + if (NULL != handle) { + getLocApi_t* getter = (getLocApi_t*)dlsym(handle, "getLocApi"); + if (NULL != getter) { + LOC_LOGD("%s:%d]: getter is not NULL in RPC", __func__, __LINE__); + locApi = (*getter)(mMsgTask, exMask); + } } } }