From f78f2857219a1281abb25a44e3f0ab8beb5c6c7f Mon Sep 17 00:00:00 2001 From: Tushar Janefalkar Date: Sun, 14 Sep 2014 23:24:22 -0700 Subject: [PATCH] Vote for modem power only on select targets Since libmdmdetect and peripheral manager are not available on all targets, added compilation flags to use these APIs only on supported targets Change-Id: I404e3273718dc7f9e6475f5a1d2c2f0b010cb33f --- loc_api/libloc_api_50001/Android.mk | 20 ++++++++++++++++---- loc_api/libloc_api_50001/loc.cpp | 19 +++++++++++++++---- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/loc_api/libloc_api_50001/Android.mk b/loc_api/libloc_api_50001/Android.mk index 484bcd65..27c53cf2 100644 --- a/loc_api/libloc_api_50001/Android.mk +++ b/loc_api/libloc_api_50001/Android.mk @@ -74,9 +74,10 @@ LOCAL_SHARED_LIBRARIES := \ libloc_eng \ libloc_core \ libgps.utils \ - libdl \ - libmdmdetect \ - libperipheral_client + libdl + +ifneq ($(filter $(TARGET_DEVICE), apq8084 msm8960), false) +endif LOCAL_SRC_FILES += \ loc.cpp \ @@ -93,9 +94,20 @@ endif ## Includes LOCAL_C_INCLUDES:= \ $(TARGET_OUT_HEADERS)/gps.utils \ - $(TARGET_OUT_HEADERS)/libloc_core \ + $(TARGET_OUT_HEADERS)/libloc_core + +ifeq ($(filter $(TARGET_DEVICE), apq8064 msm8960),) +$(call print-vars, $(TARGET_DEVICE)) +LOCAL_SHARED_LIBRARIES += \ + libmdmdetect \ + libperipheral_client + +LOCAL_C_INCLUDES += \ $(TARGET_OUT_HEADERS)/libmdmdetect/inc \ $(TARGET_OUT_HEADERS)/libperipheralclient/inc +LOCAL_CFLAGS += \ + -DMODEM_POWER_VOTE +endif LOCAL_PRELINK_MODULE := false LOCAL_MODULE_RELATIVE_PATH := hw diff --git a/loc_api/libloc_api_50001/loc.cpp b/loc_api/libloc_api_50001/loc.cpp index b3c267e6..2b604ede 100644 --- a/loc_api/libloc_api_50001/loc.cpp +++ b/loc_api/libloc_api_50001/loc.cpp @@ -44,6 +44,8 @@ #include #include #include + +#ifdef MODEM_POWER_VOTE #include #ifdef __cplusplus extern "C" { @@ -52,6 +54,8 @@ extern "C" { #ifdef __cplusplus } #endif /* __cplusplus */ +#endif /*MODEM_POWER_VOTE*/ + using namespace loc_core; #define LOC_PM_CLIENT_NAME "GPS" @@ -130,6 +134,7 @@ const GpsNiInterface sLocEngNiInterface = loc_ni_respond, }; +#ifdef MODEM_POWER_VOTE typedef struct { //MAX_NAME_LEN defined in mdm_detect.h char modem_name[MAX_NAME_LEN]; @@ -142,9 +147,10 @@ typedef struct { bool peripheral_mgr_supported; bool peripheral_mgr_registered; }s_loc_mdm_info; - static s_loc_mdm_info loc_mdm_info; static void loc_pm_event_notifier(void *client_data, enum pm_event event); +#endif /*MODEM_POWER_VOTE*/ + static void loc_agps_ril_init( AGpsRilCallbacks* callbacks ); static void loc_agps_ril_set_ref_location(const AGpsRefLocation *agps_reflocation, size_t sz_struct); static void loc_agps_ril_set_set_id(AGpsSetIDType type, const char* setid); @@ -277,10 +283,11 @@ SIDE EFFECTS static int loc_init(GpsCallbacks* callbacks) { int retVal = -1; +#ifdef MODEM_POWER_VOTE enum pm_event mdm_state; static int mdm_index = -1; int peripheral_mgr_ret = PM_RET_FAILED; - +#endif /*MODEM_POWER_VOTE*/ ENTRY_LOG(); LOC_API_ADAPTER_EVENT_MASK_T event; @@ -330,6 +337,7 @@ static int loc_init(GpsCallbacks* callbacks) LOC_LOGD("loc_eng_init() success!"); +#ifdef MODEM_POWER_VOTE //if index is 0 or more, then we've looked for mdm already LOC_LOGD("%s:%d]: mdm_index: %d", __func__, __LINE__, mdm_index); @@ -412,7 +420,7 @@ static int loc_init(GpsCallbacks* callbacks) else { LOC_LOGD("%s:%d]: Not voted for modem power up due to errors", __func__, __LINE__); } - +#endif /*MODEM_POWER_VOTE*/ err: EXIT_LOG(%d, retVal); return retVal; @@ -437,6 +445,7 @@ SIDE EFFECTS static void loc_close_mdm_node() { ENTRY_LOG(); +#ifdef MODEM_POWER_VOTE if(loc_mdm_info.peripheral_mgr_supported == true) { LOC_LOGD("%s:%d]: Voting for modem power down", __func__, __LINE__); pm_client_disconnect(loc_mdm_info.handle); @@ -450,7 +459,7 @@ static void loc_close_mdm_node() else { LOC_LOGD("powerup node has not been opened yet."); } - +#endif /*MODEM_POWER_VOTE*/ EXIT_LOG(%s, VOID_RET); } @@ -1072,6 +1081,7 @@ static void local_sv_cb(GpsSvStatus* sv_status, void* svExt) EXIT_LOG(%s, VOID_RET); } +#ifdef MODEM_POWER_VOTE static void loc_pm_event_notifier(void *client_data, enum pm_event event) { ENTRY_LOG(); @@ -1079,3 +1089,4 @@ static void loc_pm_event_notifier(void *client_data, enum pm_event event) pm_client_event_acknowledge(loc_mdm_info.handle, event); EXIT_LOG(%s, VOID_RET); } +#endif /*MODEM_POWER_VOTE*/