summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/Android.mk4
-rw-r--r--core/loc_core_log.cpp2
-rw-r--r--etc/gps.conf6
-rw-r--r--loc_api/libloc_api_50001/loc_eng.cpp35
-rw-r--r--loc_api/libloc_api_50001/loc_eng.h7
5 files changed, 46 insertions, 8 deletions
diff --git a/core/Android.mk b/core/Android.mk
index 3e2b2eb..e076dcc 100644
--- a/core/Android.mk
+++ b/core/Android.mk
@@ -10,6 +10,10 @@ LOCAL_MODULE_OWNER := qcom
LOCAL_MODULE_TAGS := optional
+ifeq ($(TARGET_DEVICE),apq8026_lw)
+LOCAL_CFLAGS += -DPDK_FEATURE_SET
+endif
+
LOCAL_SHARED_LIBRARIES := \
libutils \
libcutils \
diff --git a/core/loc_core_log.cpp b/core/loc_core_log.cpp
index d2eda66..1b22010 100644
--- a/core/loc_core_log.cpp
+++ b/core/loc_core_log.cpp
@@ -116,6 +116,7 @@ static loc_name_val_s_type loc_eng_aiding_data_bits[] =
NAME_VAL( GPS_DELETE_SADATA ),
NAME_VAL( GPS_DELETE_RTI ),
NAME_VAL( GPS_DELETE_CELLDB_INFO ),
+#ifndef PDK_FEATURE_SET
NAME_VAL( GPS_DELETE_ALMANAC_CORR ),
NAME_VAL( GPS_DELETE_FREQ_BIAS_EST ),
NAME_VAL( GLO_DELETE_EPHEMERIS ),
@@ -131,6 +132,7 @@ static loc_name_val_s_type loc_eng_aiding_data_bits[] =
NAME_VAL( BDS_DELETE_ALMANAC_CORR ),
NAME_VAL( BDS_DELETE_EPHEMERIS ),
NAME_VAL( BDS_DELETE_ALMANAC ),
+#endif
NAME_VAL( GPS_DELETE_ALL)
};
static int loc_eng_aiding_data_bit_num = sizeof(loc_eng_aiding_data_bits) / sizeof(loc_name_val_s_type);
diff --git a/etc/gps.conf b/etc/gps.conf
index 678cbab..2524242 100644
--- a/etc/gps.conf
+++ b/etc/gps.conf
@@ -1,8 +1,8 @@
#Uncommenting these urls would only enable
#the power up auto injection and force injection(test case).
-#XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
-#XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
-#XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
+#XTRA_SERVER_1=http://xtrapath1.izatcloud.net/xtra2.bin
+#XTRA_SERVER_2=http://xtrapath2.izatcloud.net/xtra2.bin
+#XTRA_SERVER_3=http://xtrapath3.izatcloud.net/xtra2.bin
#Version check for XTRA
#DISABLE = 0
diff --git a/loc_api/libloc_api_50001/loc_eng.cpp b/loc_api/libloc_api_50001/loc_eng.cpp
index 17d0871..d62d4ad 100644
--- a/loc_api/libloc_api_50001/loc_eng.cpp
+++ b/loc_api/libloc_api_50001/loc_eng.cpp
@@ -44,7 +44,7 @@
#include <sys/time.h>
#include <netdb.h>
#include <time.h>
-
+#include <new>
#include <LocEngAdapter.h>
#include <cutils/sched_policy.h>
@@ -84,6 +84,8 @@
#define SAP_CONF_FILE "/etc/sap.conf"
#endif
+#define XTRA1_GPSONEXTRA "xtra1.gpsonextra.net"
+
using namespace loc_core;
boolean configAlreadyRead = false;
@@ -119,6 +121,9 @@ static loc_param_s_type loc_parameter_table[] =
{"A_GLONASS_POS_PROTOCOL_SELECT", &gps_conf.A_GLONASS_POS_PROTOCOL_SELECT, NULL, 'n'},
{"SENSOR_PROVIDER", &sap_conf.SENSOR_PROVIDER, NULL, 'n'},
{"XTRA_VERSION_CHECK", &gps_conf.XTRA_VERSION_CHECK, NULL, 'n'},
+ {"XTRA_SERVER_1", &gps_conf.XTRA_SERVER_1, NULL, 's'},
+ {"XTRA_SERVER_2", &gps_conf.XTRA_SERVER_2, NULL, 's'},
+ {"XTRA_SERVER_3", &gps_conf.XTRA_SERVER_3, NULL, 's'},
{"AGPS_CERT_WRITABLE_MASK", &gps_conf.AGPS_CERT_WRITABLE_MASK, NULL, 'n'}
};
@@ -932,12 +937,34 @@ LocEngReportXtraServer::LocEngReportXtraServer(void* locEng,
LocMsg(), mLocEng(locEng), mMaxLen(maxlength),
mServers(new char[3*(mMaxLen+1)])
{
+ char * cptr = mServers;
memset(mServers, 0, 3*(mMaxLen+1));
- strlcpy(mServers, url1, mMaxLen);
- strlcpy(&(mServers[mMaxLen+1]), url2, mMaxLen);
- strlcpy(&(mServers[(mMaxLen+1)<<1]), url3, mMaxLen);
+
+ // Override modem URLs with uncommented gps.conf urls
+ if( gps_conf.XTRA_SERVER_1[0] != '\0' ) {
+ url1 = &gps_conf.XTRA_SERVER_1[0];
+ }
+ if( gps_conf.XTRA_SERVER_2[0] != '\0' ) {
+ url2 = &gps_conf.XTRA_SERVER_2[0];
+ }
+ if( gps_conf.XTRA_SERVER_3[0] != '\0' ) {
+ url3 = &gps_conf.XTRA_SERVER_3[0];
+ }
+ // copy non xtra1.gpsonextra.net URLs into the forwarding buffer.
+ if( NULL == strcasestr(url1, XTRA1_GPSONEXTRA) ) {
+ strlcpy(cptr, url1, mMaxLen + 1);
+ cptr += mMaxLen + 1;
+ }
+ if( NULL == strcasestr(url2, XTRA1_GPSONEXTRA) ) {
+ strlcpy(cptr, url2, mMaxLen + 1);
+ cptr += mMaxLen + 1;
+ }
+ if( NULL == strcasestr(url3, XTRA1_GPSONEXTRA) ) {
+ strlcpy(cptr, url3, mMaxLen + 1);
+ }
locallog();
}
+
void LocEngReportXtraServer::proc() const {
loc_eng_xtra_data_s_type* locEngXtra =
&(((loc_eng_data_s_type*)mLocEng)->xtra_module_data);
diff --git a/loc_api/libloc_api_50001/loc_eng.h b/loc_api/libloc_api_50001/loc_eng.h
index 99364cd..2ee44ee 100644
--- a/loc_api/libloc_api_50001/loc_eng.h
+++ b/loc_api/libloc_api_50001/loc_eng.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2013, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2009-2014, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -67,6 +67,8 @@ typedef unsigned char boolean;
#define FAILURE FALSE
#define INVALID_ATL_CONNECTION_HANDLE -1
+#define MAX_XTRA_SERVER_URL_LENGTH 256
+
enum loc_nmea_provider_e_type {
NMEA_PROVIDER_AP = 0, // Application Processor Provider of NMEA
NMEA_PROVIDER_MP // Modem Processor Provider of NMEA
@@ -147,6 +149,9 @@ typedef struct loc_gps_cfg_s
uint8_t NMEA_PROVIDER;
unsigned long A_GLONASS_POS_PROTOCOL_SELECT;
unsigned long XTRA_VERSION_CHECK;
+ char XTRA_SERVER_1[MAX_XTRA_SERVER_URL_LENGTH];
+ char XTRA_SERVER_2[MAX_XTRA_SERVER_URL_LENGTH];
+ char XTRA_SERVER_3[MAX_XTRA_SERVER_URL_LENGTH];
unsigned long AGPS_CERT_WRITABLE_MASK;
} loc_gps_cfg_s_type;