diff --git a/etc/gps.conf b/etc/gps.conf index 25242420..c57088a9 100644 --- a/etc/gps.conf +++ b/etc/gps.conf @@ -39,6 +39,11 @@ SUPL_VER=0x10000 # Emergency SUPL, 1=enable, 0=disable SUPL_ES=1 +#Choose PDN for Emergency SUPL +#1 - Use emergency PDN +#0 - Use regular SUPL PDN for Emergency SUPL +USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=1 + # GPS Capabilities bit mask # SCHEDULING = 0x01 # MSB = 0x02 diff --git a/loc_api/libloc_api_50001/loc_eng.cpp b/loc_api/libloc_api_50001/loc_eng.cpp index e552653c..4977100c 100644 --- a/loc_api/libloc_api_50001/loc_eng.cpp +++ b/loc_api/libloc_api_50001/loc_eng.cpp @@ -101,6 +101,7 @@ static loc_param_s_type loc_parameter_table[] = {"NMEA_PROVIDER", &gps_conf.NMEA_PROVIDER, NULL, 'n'}, {"SUPL_VER", &gps_conf.SUPL_VER, NULL, 'n'}, {"CAPABILITIES", &gps_conf.CAPABILITIES, NULL, 'n'}, + {"USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL", &gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL, NULL, 'n'}, {"GYRO_BIAS_RANDOM_WALK", &sap_conf.GYRO_BIAS_RANDOM_WALK, &sap_conf.GYRO_BIAS_RANDOM_WALK_VALID, 'f'}, {"ACCEL_RANDOM_WALK_SPECTRAL_DENSITY", &sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY, &sap_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID, 'f'}, {"ANGLE_RANDOM_WALK_SPECTRAL_DENSITY", &sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY, &sap_conf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID, 'f'}, @@ -141,6 +142,8 @@ static void loc_default_parameters(void) gps_conf.A_GLONASS_POS_PROTOCOL_SELECT = 0; /*XTRA version check is disabled by default*/ gps_conf.XTRA_VERSION_CHECK=0; + /*Use emergency PDN by default*/ + gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL = 1; /*Defaults for sap.conf*/ sap_conf.GYRO_BIAS_RANDOM_WALK = 0; @@ -1108,7 +1111,17 @@ void LocEngRequestSuplEs::proc() const { AgpsStateMachine* sm = locEng->ds_nif; DSSubscriber s(sm, mID); sm->subscribeRsrc((Subscriber*)&s); - } else { + } + else if (locEng->agnss_nif) { + AgpsStateMachine *sm = locEng->agnss_nif; + ATLSubscriber s(mID, + sm, + locEng->adapter, + false); + sm->subscribeRsrc((Subscriber*)&s); + LOC_LOGD("%s:%d]: Using regular ATL for SUPL ES", __func__, __LINE__); + } + else { locEng->adapter->atlOpenStatus(mID, 0, NULL, -1, -1); } } @@ -2191,8 +2204,9 @@ void loc_eng_agps_init(loc_eng_data_s_type &loc_eng_data, AGpsExtCallbacks* call false); if (adapter->mSupportsAgpsRequests) { - loc_eng_data.adapter->sendMsg(new LocEngDataClientInit(&loc_eng_data)); - + if(gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL) { + loc_eng_data.adapter->sendMsg(new LocEngDataClientInit(&loc_eng_data)); + } loc_eng_dmn_conn_loc_api_server_launch(callbacks->create_thread_cb, NULL, NULL, &loc_eng_data); } @@ -2224,7 +2238,9 @@ getAgpsStateMachine(loc_eng_data_s_type &locEng, AGpsExtType agpsType) { break; } case AGPS_TYPE_SUPL_ES: { - stateMachine = locEng.ds_nif; + locEng.ds_nif ? + stateMachine = locEng.ds_nif: + stateMachine = locEng.agnss_nif; break; } default: diff --git a/loc_api/libloc_api_50001/loc_eng.h b/loc_api/libloc_api_50001/loc_eng.h index 2ee44ee4..4882b6ff 100644 --- a/loc_api/libloc_api_50001/loc_eng.h +++ b/loc_api/libloc_api_50001/loc_eng.h @@ -153,6 +153,7 @@ typedef struct loc_gps_cfg_s char XTRA_SERVER_2[MAX_XTRA_SERVER_URL_LENGTH]; char XTRA_SERVER_3[MAX_XTRA_SERVER_URL_LENGTH]; unsigned long AGPS_CERT_WRITABLE_MASK; + unsigned long USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL; } loc_gps_cfg_s_type; typedef struct diff --git a/utils/loc_cfg.cpp b/utils/loc_cfg.cpp index abf8086c..dc8e3a74 100644 --- a/utils/loc_cfg.cpp +++ b/utils/loc_cfg.cpp @@ -280,7 +280,6 @@ void loc_read_conf(const char* conf_file_name, loc_param_s_type* config_table, uint32_t table_length) { FILE *gps_conf_fp = NULL; - char input_buf[LOC_MAX_PARAM_LINE]; /* declare a char array */ char *lasts; loc_param_v_type config_value; uint32_t i; diff --git a/utils/loc_cfg.h b/utils/loc_cfg.h index 268f4c24..f575f713 100644 --- a/utils/loc_cfg.h +++ b/utils/loc_cfg.h @@ -33,9 +33,9 @@ #include #include -#define LOC_MAX_PARAM_NAME 48 +#define LOC_MAX_PARAM_NAME 80 #define LOC_MAX_PARAM_STRING 80 -#define LOC_MAX_PARAM_LINE 80 +#define LOC_MAX_PARAM_LINE (LOC_MAX_PARAM_NAME + LOC_MAX_PARAM_STRING) #define UTIL_READ_CONF_DEFAULT(filename) \ loc_read_conf((filename), NULL, 0);