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
This commit is contained in:
parent
dd58e6c795
commit
f78f285721
2 changed files with 31 additions and 8 deletions
|
@ -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
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
#include <errno.h>
|
||||
#include <LocDualContext.h>
|
||||
#include <cutils/properties.h>
|
||||
|
||||
#ifdef MODEM_POWER_VOTE
|
||||
#include <pm-service.h>
|
||||
#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*/
|
||||
|
|
Loading…
Reference in a new issue