Move local gps/sap configuration to Context

gps/sap configuration is moved from a global
variable in loc eng to a static in ContextBase,
so that it is more accessible without having to
link with loc eng for access.

CRs-fixed: 1012772
Bug: 30773815
Change-Id: I74bf456b44fab3a2db016ef4c4b4b3a2b8cde1b2
diff --git a/msm8996/core/ContextBase.cpp b/msm8996/core/ContextBase.cpp
index 9f6c4aa..971354d 100644
--- a/msm8996/core/ContextBase.cpp
+++ b/msm8996/core/ContextBase.cpp
@@ -40,6 +40,27 @@
 
 namespace loc_core {
 
+loc_gps_cfg_s_type ContextBase::mGps_conf {0};
+loc_sap_cfg_s_type ContextBase::mSap_conf {0};
+
+uint32_t ContextBase::getCarrierCapabilities() {
+    #define carrierMSA (uint32_t)0x2
+    #define carrierMSB (uint32_t)0x1
+    #define gpsConfMSA (uint32_t)0x4
+    #define gpsConfMSB (uint32_t)0x2
+    uint32_t capabilities = mGps_conf.CAPABILITIES;
+    if ((mGps_conf.SUPL_MODE & carrierMSA) != carrierMSA) {
+        capabilities &= ~gpsConfMSA;
+    }
+    if ((mGps_conf.SUPL_MODE & carrierMSB) != carrierMSB) {
+        capabilities &= ~gpsConfMSB;
+    }
+
+    LOC_LOGV("getCarrierCapabilities: CAPABILITIES %x, SUPL_MODE %x, carrier capabilities %x",
+             mGps_conf.CAPABILITIES, mGps_conf.SUPL_MODE, capabilities);
+    return capabilities;
+}
+
 LBSProxyBase* ContextBase::getLBSProxy(const char* libName)
 {
     LBSProxyBase* proxy = NULL;
diff --git a/msm8996/core/ContextBase.h b/msm8996/core/ContextBase.h
index 707eef2..d1f2b61 100644
--- a/msm8996/core/ContextBase.h
+++ b/msm8996/core/ContextBase.h
@@ -35,6 +35,64 @@
 #include <LocApiBase.h>
 #include <LBSProxyBase.h>
 
+#define MAX_XTRA_SERVER_URL_LENGTH 256
+
+/* GPS.conf support */
+/* NOTE: the implementaiton of the parser casts number
+   fields to 32 bit. To ensure all 'n' fields working,
+   they must all be 32 bit fields. */
+typedef struct loc_gps_cfg_s
+{
+    uint32_t       INTERMEDIATE_POS;
+    uint32_t       ACCURACY_THRES;
+    uint32_t       SUPL_VER;
+    uint32_t       SUPL_MODE;
+    uint32_t       CAPABILITIES;
+    uint32_t       LPP_PROFILE;
+    uint32_t       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];
+    uint32_t       USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL;
+    uint32_t       NMEA_PROVIDER;
+    uint32_t       GPS_LOCK;
+    uint32_t       A_GLONASS_POS_PROTOCOL_SELECT;
+    uint32_t       AGPS_CERT_WRITABLE_MASK;
+} loc_gps_cfg_s_type;
+
+/* NOTE: the implementaiton of the parser casts number
+   fields to 32 bit. To ensure all 'n' fields working,
+   they must all be 32 bit fields. */
+/* Meanwhile, *_valid fields are 8 bit fields, and 'f'
+   fields are double. Rigid as they are, it is the
+   the status quo, until the parsing mechanism is
+   change, that is. */
+typedef struct
+{
+    uint8_t        GYRO_BIAS_RANDOM_WALK_VALID;
+    double         GYRO_BIAS_RANDOM_WALK;
+    uint32_t       SENSOR_ACCEL_BATCHES_PER_SEC;
+    uint32_t       SENSOR_ACCEL_SAMPLES_PER_BATCH;
+    uint32_t       SENSOR_GYRO_BATCHES_PER_SEC;
+    uint32_t       SENSOR_GYRO_SAMPLES_PER_BATCH;
+    uint32_t       SENSOR_ACCEL_BATCHES_PER_SEC_HIGH;
+    uint32_t       SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH;
+    uint32_t       SENSOR_GYRO_BATCHES_PER_SEC_HIGH;
+    uint32_t       SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH;
+    uint32_t       SENSOR_CONTROL_MODE;
+    uint32_t       SENSOR_USAGE;
+    uint32_t       SENSOR_ALGORITHM_CONFIG_MASK;
+    uint8_t        ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
+    double         ACCEL_RANDOM_WALK_SPECTRAL_DENSITY;
+    uint8_t        ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
+    double         ANGLE_RANDOM_WALK_SPECTRAL_DENSITY;
+    uint8_t        RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
+    double         RATE_RANDOM_WALK_SPECTRAL_DENSITY;
+    uint8_t        VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
+    double         VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY;
+    uint32_t       SENSOR_PROVIDER;
+} loc_sap_cfg_s_type;
+
 namespace loc_core {
 
 class LocAdapterBase;
@@ -65,6 +123,12 @@
         mLBSProxy->requestUlp(adapter, capabilities);
     }
     inline void sendMsg(const LocMsg *msg) { getMsgTask()->sendMsg(msg); }
+
+    static loc_gps_cfg_s_type mGps_conf;
+    static loc_sap_cfg_s_type mSap_conf;
+
+    static uint32_t getCarrierCapabilities();
+
 };
 
 } // namespace loc_core
diff --git a/msm8996/core/LocAdapterProxyBase.h b/msm8996/core/LocAdapterProxyBase.h
index 1ddcca4..e1d0ccf 100644
--- a/msm8996/core/LocAdapterProxyBase.h
+++ b/msm8996/core/LocAdapterProxyBase.h
@@ -46,15 +46,15 @@
     inline virtual ~LocAdapterProxyBase() {
         delete mLocAdapterBase;
     }
-    ContextBase* getContext() const {
-        return mLocAdapterBase->getContext();
-    }
     inline void updateEvtMask(LOC_API_ADAPTER_EVENT_MASK_T event,
                               loc_registration_mask_status isEnabled) {
         mLocAdapterBase->updateEvtMask(event,isEnabled);
     }
 
 public:
+    inline ContextBase* getContext() const {
+        return mLocAdapterBase->getContext();
+    }
     inline virtual void handleEngineUpEvent() {};
     inline virtual void handleEngineDownEvent() {};
     inline virtual bool reportPosition(UlpLocation &location,
diff --git a/msm8996/loc_api/libloc_api_50001/loc.cpp b/msm8996/loc_api/libloc_api_50001/loc.cpp
index e9eef63..1d7a16d 100644
--- a/msm8996/loc_api/libloc_api_50001/loc.cpp
+++ b/msm8996/loc_api/libloc_api_50001/loc.cpp
@@ -317,7 +317,7 @@
     loc_afw_data.adapter->mSupportsPositionInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities();
     loc_afw_data.adapter->mSupportsTimeInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities();
     loc_afw_data.adapter->setGpsLockMsg(0);
-    loc_afw_data.adapter->requestUlp(getCarrierCapabilities());
+    loc_afw_data.adapter->requestUlp(ContextBase::getCarrierCapabilities());
 
     if(retVal) {
         LOC_LOGE("loc_eng_init() fail!");
diff --git a/msm8996/loc_api/libloc_api_50001/loc_eng.cpp b/msm8996/loc_api/libloc_api_50001/loc_eng.cpp
index 964d878..c046e93 100644
--- a/msm8996/loc_api/libloc_api_50001/loc_eng.cpp
+++ b/msm8996/loc_api/libloc_api_50001/loc_eng.cpp
@@ -90,8 +90,6 @@
 
 boolean configAlreadyRead = false;
 unsigned int agpsStatus = 0;
-loc_gps_cfg_s_type gps_conf;
-loc_sap_cfg_s_type sap_conf;
 
 /* Parameter spec table */
 static const loc_param_s_type gps_conf_table[] =
@@ -500,7 +498,7 @@
         locallog();
     }
     inline virtual void proc() const {
-        mUlp->setCapabilities(getCarrierCapabilities());
+        mUlp->setCapabilities(ContextBase::getCarrierCapabilities());
     }
     inline  void locallog() const {
     }
@@ -1723,24 +1721,6 @@
   }
 #define INIT_CHECK(ctx, ret) STATE_CHECK(ctx, "instance not initialized", ret)
 
-uint32_t getCarrierCapabilities() {
-    #define carrierMSA (uint32_t)0x2
-    #define carrierMSB (uint32_t)0x1
-    #define gpsConfMSA (uint32_t)0x4
-    #define gpsConfMSB (uint32_t)0x2
-    uint32_t capabilities = gps_conf.CAPABILITIES;
-    if ((gps_conf.SUPL_MODE & carrierMSA) != carrierMSA) {
-        capabilities &= ~gpsConfMSA;
-    }
-    if ((gps_conf.SUPL_MODE & carrierMSB) != carrierMSB) {
-        capabilities &= ~gpsConfMSB;
-    }
-
-    LOC_LOGV("getCarrierCapabilities: CAPABILITIES %x, SUPL_MODE %x, carrier capabilities %x",
-             gps_conf.CAPABILITIES, gps_conf.SUPL_MODE, capabilities);
-    return capabilities;
-}
-
 /*===========================================================================
 FUNCTION    loc_eng_init
 
diff --git a/msm8996/loc_api/libloc_api_50001/loc_eng.h b/msm8996/loc_api/libloc_api_50001/loc_eng.h
index 5629ddd..37ee4be 100644
--- a/msm8996/loc_api/libloc_api_50001/loc_eng.h
+++ b/msm8996/loc_api/libloc_api_50001/loc_eng.h
@@ -67,7 +67,8 @@
 #define FAILURE                 FALSE
 #define INVALID_ATL_CONNECTION_HANDLE -1
 
-#define MAX_XTRA_SERVER_URL_LENGTH 256
+#define gps_conf ContextBase::mGps_conf
+#define sap_conf ContextBase::mSap_conf
 
 enum loc_nmea_provider_e_type {
     NMEA_PROVIDER_AP = 0, // Application Processor Provider of NMEA
@@ -141,68 +142,6 @@
     loc_ext_parser sv_ext_parser;
 } loc_eng_data_s_type;
 
-/* GPS.conf support */
-/* NOTE: the implementaiton of the parser casts number
-   fields to 32 bit. To ensure all 'n' fields working,
-   they must all be 32 bit fields. */
-typedef struct loc_gps_cfg_s
-{
-    uint32_t       INTERMEDIATE_POS;
-    uint32_t       ACCURACY_THRES;
-    uint32_t       SUPL_VER;
-    uint32_t       SUPL_MODE;
-    uint32_t       CAPABILITIES;
-    uint32_t       LPP_PROFILE;
-    uint32_t       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];
-    uint32_t       USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL;
-    uint32_t       NMEA_PROVIDER;
-    uint32_t       GPS_LOCK;
-    uint32_t       A_GLONASS_POS_PROTOCOL_SELECT;
-    uint32_t       AGPS_CERT_WRITABLE_MASK;
-} loc_gps_cfg_s_type;
-
-/* NOTE: the implementaiton of the parser casts number
-   fields to 32 bit. To ensure all 'n' fields working,
-   they must all be 32 bit fields. */
-/* Meanwhile, *_valid fields are 8 bit fields, and 'f'
-   fields are double. Rigid as they are, it is the
-   the status quo, until the parsing mechanism is
-   change, that is. */
-typedef struct
-{
-    uint8_t        GYRO_BIAS_RANDOM_WALK_VALID;
-    double         GYRO_BIAS_RANDOM_WALK;
-    uint32_t       SENSOR_ACCEL_BATCHES_PER_SEC;
-    uint32_t       SENSOR_ACCEL_SAMPLES_PER_BATCH;
-    uint32_t       SENSOR_GYRO_BATCHES_PER_SEC;
-    uint32_t       SENSOR_GYRO_SAMPLES_PER_BATCH;
-    uint32_t       SENSOR_ACCEL_BATCHES_PER_SEC_HIGH;
-    uint32_t       SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH;
-    uint32_t       SENSOR_GYRO_BATCHES_PER_SEC_HIGH;
-    uint32_t       SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH;
-    uint32_t       SENSOR_CONTROL_MODE;
-    uint32_t       SENSOR_USAGE;
-    uint32_t       SENSOR_ALGORITHM_CONFIG_MASK;
-    uint8_t        ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
-    double         ACCEL_RANDOM_WALK_SPECTRAL_DENSITY;
-    uint8_t        ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
-    double         ANGLE_RANDOM_WALK_SPECTRAL_DENSITY;
-    uint8_t        RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
-    double         RATE_RANDOM_WALK_SPECTRAL_DENSITY;
-    uint8_t        VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
-    double         VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY;
-    uint32_t       SENSOR_PROVIDER;
-} loc_sap_cfg_s_type;
-
-extern loc_gps_cfg_s_type gps_conf;
-extern loc_sap_cfg_s_type sap_conf;
-
-
-uint32_t getCarrierCapabilities();
-
 //loc_eng functions
 int  loc_eng_init(loc_eng_data_s_type &loc_eng_data,
                   LocCallbacks* callbacks,