From 809dec4e92deee31551fae7dc9754daf80d20697 Mon Sep 17 00:00:00 2001 From: Kevin Tang Date: Wed, 3 Sep 2014 10:00:50 -0700 Subject: [PATCH] allow reconfiguration update happen before HAL init currently HAL does not allow gps paremeter reconfiguration before HAL init. This change allows that. The new config items will be cached only. Upon HAL init, the parameters that interest modem will be injected. Bug: 17110478 CRs-fixed: 736966 Change-Id: Ie8d180a0ed6a35776f1ee0342f88dfc010ec2746 --- loc_api/libloc_api_50001/loc_eng.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/loc_api/libloc_api_50001/loc_eng.cpp b/loc_api/libloc_api_50001/loc_eng.cpp index e02ae1e5..c40a593c 100644 --- a/loc_api/libloc_api_50001/loc_eng.cpp +++ b/loc_api/libloc_api_50001/loc_eng.cpp @@ -2593,21 +2593,24 @@ void loc_eng_configuration_update (loc_eng_data_s_type &loc_eng_data, const char* config_data, int32_t length) { ENTRY_LOG_CALLFLOW(); - INIT_CHECK(loc_eng_data.adapter, return); if (config_data && length > 0) { loc_gps_cfg_s_type gps_conf_old = gps_conf; UTIL_UPDATE_CONF(config_data, length, loc_parameter_table); LocEngAdapter* adapter = loc_eng_data.adapter; - if (gps_conf_old.SUPL_VER != gps_conf.SUPL_VER) { - adapter->sendMsg(new LocEngSuplVer(adapter, gps_conf.SUPL_VER)); - } - if (gps_conf_old.LPP_PROFILE != gps_conf.LPP_PROFILE) { - adapter->sendMsg(new LocEngLppConfig(adapter, gps_conf.LPP_PROFILE)); - } - if (gps_conf_old.A_GLONASS_POS_PROTOCOL_SELECT != gps_conf.A_GLONASS_POS_PROTOCOL_SELECT) { - adapter->sendMsg(new LocEngAGlonassProtocol(adapter, - gps_conf.A_GLONASS_POS_PROTOCOL_SELECT)); + + // it is possible that HAL is not init'ed at this time + if (adapter) { + if (gps_conf_old.SUPL_VER != gps_conf.SUPL_VER) { + adapter->sendMsg(new LocEngSuplVer(adapter, gps_conf.SUPL_VER)); + } + if (gps_conf_old.LPP_PROFILE != gps_conf.LPP_PROFILE) { + adapter->sendMsg(new LocEngLppConfig(adapter, gps_conf.LPP_PROFILE)); + } + if (gps_conf_old.A_GLONASS_POS_PROTOCOL_SELECT != gps_conf.A_GLONASS_POS_PROTOCOL_SELECT) { + adapter->sendMsg(new LocEngAGlonassProtocol(adapter, + gps_conf.A_GLONASS_POS_PROTOCOL_SELECT)); + } } }