fixing a race condition on MsgTask::destroy()
am: 4eda8e1eab

Change-Id: I454c2dcb8a17c43f8e42edd326b950cd8173eac1
diff --git a/Android.mk b/Android.mk
index 46e9a1e..2da604f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -17,9 +17,9 @@
       else ifneq ($(filter msm8996 ,$(TARGET_BOARD_PLATFORM)),)
         #For msm8996 target
         include $(call all-named-subdir-makefiles,msm8996)
-      else ifneq ($(filter msmcobalt ,$(TARGET_BOARD_PLATFORM)),)
-        #For msmcobalt target
-        include $(call all-named-subdir-makefiles,msmcobalt)
+      else ifneq ($(filter msm8998 ,$(TARGET_BOARD_PLATFORM)),)
+        #For msm8998 target
+        include $(call all-named-subdir-makefiles,msm8998)
       else ifeq ($(filter msm8916,$(TARGET_BOARD_PLATFORM)),)
         #For all other targets
         GPS_DIRS=core utils loc_api platform_lib_abstractions etc
diff --git a/msmcobalt/Android.mk b/msm8998/Android.mk
similarity index 100%
rename from msmcobalt/Android.mk
rename to msm8998/Android.mk
diff --git a/msmcobalt/CleanSpec.mk b/msm8998/CleanSpec.mk
similarity index 100%
rename from msmcobalt/CleanSpec.mk
rename to msm8998/CleanSpec.mk
diff --git a/msmcobalt/Makefile.am b/msm8998/Makefile.am
similarity index 100%
rename from msmcobalt/Makefile.am
rename to msm8998/Makefile.am
diff --git a/msmcobalt/configure.ac b/msm8998/configure.ac
similarity index 100%
rename from msmcobalt/configure.ac
rename to msm8998/configure.ac
diff --git a/msmcobalt/core/Android.mk b/msm8998/core/Android.mk
similarity index 100%
rename from msmcobalt/core/Android.mk
rename to msm8998/core/Android.mk
diff --git a/msmcobalt/core/ContextBase.cpp b/msm8998/core/ContextBase.cpp
similarity index 100%
rename from msmcobalt/core/ContextBase.cpp
rename to msm8998/core/ContextBase.cpp
diff --git a/msmcobalt/core/ContextBase.h b/msm8998/core/ContextBase.h
similarity index 100%
rename from msmcobalt/core/ContextBase.h
rename to msm8998/core/ContextBase.h
diff --git a/msmcobalt/core/LBSProxyBase.h b/msm8998/core/LBSProxyBase.h
similarity index 100%
rename from msmcobalt/core/LBSProxyBase.h
rename to msm8998/core/LBSProxyBase.h
diff --git a/msmcobalt/core/LocAdapterBase.cpp b/msm8998/core/LocAdapterBase.cpp
similarity index 97%
rename from msmcobalt/core/LocAdapterBase.cpp
rename to msm8998/core/LocAdapterBase.cpp
index 6a3f969..899ad84 100644
--- a/msmcobalt/core/LocAdapterBase.cpp
+++ b/msm8998/core/LocAdapterBase.cpp
@@ -146,4 +146,9 @@
 void LocAdapterBase::
     reportGnssMeasurementData(GnssData &gnssMeasurementData)
 DEFAULT_IMPL()
+
+bool LocAdapterBase::
+    reportWwanZppFix(GpsLocation &zppLoc)
+DEFAULT_IMPL(false)
+
 } // namespace loc_core
diff --git a/msmcobalt/core/LocAdapterBase.h b/msm8998/core/LocAdapterBase.h
similarity index 98%
rename from msmcobalt/core/LocAdapterBase.h
rename to msm8998/core/LocAdapterBase.h
index af25138..0b1d3d9 100644
--- a/msmcobalt/core/LocAdapterBase.h
+++ b/msm8998/core/LocAdapterBase.h
@@ -124,6 +124,7 @@
     inline virtual bool isInSession() { return false; }
     ContextBase* getContext() const { return mContext; }
     virtual void reportGnssMeasurementData(GnssData &gnssMeasurementData);
+    virtual bool reportWwanZppFix(GpsLocation &zppLoc);
 };
 
 } // namespace loc_core
diff --git a/msmcobalt/core/LocAdapterProxyBase.h b/msm8998/core/LocAdapterProxyBase.h
similarity index 100%
rename from msmcobalt/core/LocAdapterProxyBase.h
rename to msm8998/core/LocAdapterProxyBase.h
diff --git a/msmcobalt/core/LocApiBase.cpp b/msm8998/core/LocApiBase.cpp
similarity index 95%
rename from msmcobalt/core/LocApiBase.cpp
rename to msm8998/core/LocApiBase.cpp
index fdfc537..35041f6 100644
--- a/msmcobalt/core/LocApiBase.cpp
+++ b/msm8998/core/LocApiBase.cpp
@@ -237,13 +237,18 @@
     LOC_LOGV("flags: %d\n  source: %d\n  latitude: %f\n  longitude: %f\n  "
              "altitude: %f\n  speed: %f\n  bearing: %f\n  accuracy: %f\n  "
              "timestamp: %lld\n  rawDataSize: %d\n  rawData: %p\n  "
-             "Session status: %d\n Technology mask: %u",
+             "Session status: %d\n Technology mask: %u\n "
+             "SV used in fix (gps/glo/bds/gal) : (%x/%x/%x/%x)",
              location.gpsLocation.flags, location.position_source,
              location.gpsLocation.latitude, location.gpsLocation.longitude,
              location.gpsLocation.altitude, location.gpsLocation.speed,
              location.gpsLocation.bearing, location.gpsLocation.accuracy,
              location.gpsLocation.timestamp, location.rawDataSize,
-             location.rawData, status, loc_technology_mask);
+             location.rawData, status, loc_technology_mask,
+             locationExtended.gnss_sv_used_ids.gps_sv_used_ids_mask,
+             locationExtended.gnss_sv_used_ids.glo_sv_used_ids_mask,
+             locationExtended.gnss_sv_used_ids.bds_sv_used_ids_mask,
+             locationExtended.gnss_sv_used_ids.gal_sv_used_ids_mask);
     // loop through adapters, and deliver to all adapters.
     TO_ALL_LOCADAPTERS(
         mLocAdapters[i]->reportPosition(location,
@@ -254,6 +259,12 @@
     );
 }
 
+void LocApiBase::reportWwanZppFix(GpsLocation &zppLoc)
+{
+    // loop through adapters, and deliver to the first handling adapter.
+    TO_1ST_HANDLING_LOCADAPTERS(mLocAdapters[i]->reportWwanZppFix(zppLoc));
+}
+
 void LocApiBase::reportSv(GnssSvStatus &svStatus,
                   GpsLocationExtended &locationExtended,
                   void* svExt)
@@ -524,7 +535,7 @@
     DEFAULT_IMPL(LOC_API_ADAPTER_ERR_SUCCESS)
 
 enum loc_api_adapter_err LocApiBase::
-   getWwanZppFix(GpsLocation& zppLoc)
+   getWwanZppFix()
 DEFAULT_IMPL(LOC_API_ADAPTER_ERR_SUCCESS)
 
 enum loc_api_adapter_err LocApiBase::
@@ -543,7 +554,7 @@
 }
 
 int LocApiBase::
-    initDataServiceClient()
+    initDataServiceClient(bool isDueToSsr)
 DEFAULT_IMPL(-1)
 
 int LocApiBase::
@@ -558,6 +569,10 @@
     closeDataCall()
 DEFAULT_IMPL()
 
+void LocApiBase::
+    releaseDataServiceClient()
+DEFAULT_IMPL()
+
 int LocApiBase::
     setGpsLock(LOC_GPS_LOCK_MASK lock)
 DEFAULT_IMPL(-1)
diff --git a/msmcobalt/core/LocApiBase.h b/msm8998/core/LocApiBase.h
similarity index 98%
rename from msmcobalt/core/LocApiBase.h
rename to msm8998/core/LocApiBase.h
index 066695c..2d0cc8c 100644
--- a/msmcobalt/core/LocApiBase.h
+++ b/msm8998/core/LocApiBase.h
@@ -136,6 +136,7 @@
     void saveSupportedMsgList(uint64_t supportedMsgList);
     void reportGnssMeasurementData(GnssData &gnssMeasurementData);
     void saveSupportedFeatureList(uint8_t *featureList);
+    void reportWwanZppFix(GpsLocation &zppLoc);
 
     // downward calls
     // All below functions are to be defined by adapter specific modules:
@@ -209,15 +210,16 @@
     virtual enum loc_api_adapter_err
         setLPPeProtocol(unsigned long lppeCP, unsigned long lppeUP);
     virtual enum loc_api_adapter_err
-        getWwanZppFix(GpsLocation & zppLoc);
+        getWwanZppFix();
     virtual enum loc_api_adapter_err
         getBestAvailableZppFix(GpsLocation & zppLoc);
     virtual enum loc_api_adapter_err
         getBestAvailableZppFix(GpsLocation & zppLoc, LocPosTechMask & tech_mask);
-    virtual int initDataServiceClient();
+    virtual int initDataServiceClient(bool isDueToSsr);
     virtual int openAndStartDataCall();
     virtual void stopDataCall();
     virtual void closeDataCall();
+    virtual void releaseDataServiceClient();
     virtual void installAGpsCert(const DerEncodedCertificate* pData,
                                  size_t length,
                                  uint32_t slotBitMask);
diff --git a/msmcobalt/core/LocDualContext.cpp b/msm8998/core/LocDualContext.cpp
similarity index 100%
rename from msmcobalt/core/LocDualContext.cpp
rename to msm8998/core/LocDualContext.cpp
diff --git a/msmcobalt/core/LocDualContext.h b/msm8998/core/LocDualContext.h
similarity index 100%
rename from msmcobalt/core/LocDualContext.h
rename to msm8998/core/LocDualContext.h
diff --git a/msmcobalt/core/Makefile.am b/msm8998/core/Makefile.am
similarity index 100%
rename from msmcobalt/core/Makefile.am
rename to msm8998/core/Makefile.am
diff --git a/msmcobalt/core/UlpProxyBase.h b/msm8998/core/UlpProxyBase.h
similarity index 100%
rename from msmcobalt/core/UlpProxyBase.h
rename to msm8998/core/UlpProxyBase.h
diff --git a/msmcobalt/core/gps_extended.h b/msm8998/core/gps_extended.h
similarity index 100%
rename from msmcobalt/core/gps_extended.h
rename to msm8998/core/gps_extended.h
diff --git a/msmcobalt/core/gps_extended_c.h b/msm8998/core/gps_extended_c.h
similarity index 98%
rename from msmcobalt/core/gps_extended_c.h
rename to msm8998/core/gps_extended_c.h
index 8759905..7da69a9 100644
--- a/msmcobalt/core/gps_extended_c.h
+++ b/msm8998/core/gps_extended_c.h
@@ -262,6 +262,18 @@
 #define GPS_LOCATION_EXTENDED_HAS_HOR_ELIP_UNC_MINOR 0x0400
 /** GpsLocationExtended has valid Elliptical Horizontal Uncertainty Azimuth */
 #define GPS_LOCATION_EXTENDED_HAS_HOR_ELIP_UNC_AZIMUTH 0x0800
+/** GpsLocationExtended has valid gnss sv used in position data */
+#define GPS_LOCATION_EXTENDED_HAS_GNSS_SV_USED_DATA 0x1000
+
+/** GPS PRN Range */
+#define GPS_SV_PRN_MIN      1
+#define GPS_SV_PRN_MAX      32
+#define GLO_SV_PRN_MIN      65
+#define GLO_SV_PRN_MAX      96
+#define BDS_SV_PRN_MIN      201
+#define BDS_SV_PRN_MAX      235
+#define GAL_SV_PRN_MIN      301
+#define GAL_SV_PRN_MAX      336
 
 typedef enum {
     LOC_RELIABILITY_NOT_SET = 0,
@@ -278,6 +290,13 @@
     /* timestamp uncertainty in milli seconds */
 }Gnss_ApTimeStampStructType;
 
+typedef struct {
+    uint64_t gps_sv_used_ids_mask;
+    uint64_t glo_sv_used_ids_mask;
+    uint64_t gal_sv_used_ids_mask;
+    uint64_t bds_sv_used_ids_mask;
+} GnssSvUsedInPosition;
+
 /** Represents gps location extended. */
 typedef struct {
     /** set to sizeof(GpsLocationExtended) */
@@ -312,6 +331,8 @@
     float           horUncEllipseOrientAzimuth;
 
     Gnss_ApTimeStampStructType               timeStamp;
+    /** Gnss sv used in position data */
+    GnssSvUsedInPosition gnss_sv_used_ids;
 } GpsLocationExtended;
 
 enum loc_sess_status {
diff --git a/msmcobalt/core/loc_core_log.cpp b/msm8998/core/loc_core_log.cpp
similarity index 100%
rename from msmcobalt/core/loc_core_log.cpp
rename to msm8998/core/loc_core_log.cpp
diff --git a/msmcobalt/core/loc_core_log.h b/msm8998/core/loc_core_log.h
similarity index 100%
rename from msmcobalt/core/loc_core_log.h
rename to msm8998/core/loc_core_log.h
diff --git a/msmcobalt/etc/Android.mk b/msm8998/etc/Android.mk
similarity index 100%
rename from msmcobalt/etc/Android.mk
rename to msm8998/etc/Android.mk
diff --git a/msmcobalt/etc/gps.conf b/msm8998/etc/gps.conf
similarity index 100%
rename from msmcobalt/etc/gps.conf
rename to msm8998/etc/gps.conf
diff --git a/msmcobalt/loc-hal.pc.in b/msm8998/loc-hal.pc.in
similarity index 100%
rename from msmcobalt/loc-hal.pc.in
rename to msm8998/loc-hal.pc.in
diff --git a/msmcobalt/loc_api/Android.mk b/msm8998/loc_api/Android.mk
similarity index 100%
rename from msmcobalt/loc_api/Android.mk
rename to msm8998/loc_api/Android.mk
diff --git a/msmcobalt/loc_api/Makefile.am b/msm8998/loc_api/Makefile.am
similarity index 100%
rename from msmcobalt/loc_api/Makefile.am
rename to msm8998/loc_api/Makefile.am
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/Android.mk b/msm8998/loc_api/libloc_api-rpc-50001/Android.mk
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/Android.mk
rename to msm8998/loc_api/libloc_api-rpc-50001/Android.mk
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Android.mk b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Android.mk
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Android.mk
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Android.mk
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Makefile.am b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Makefile.am
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Makefile.am
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/Makefile.am
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/LocApiRpc.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/LocApiRpc.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/LocApiRpc.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/LocApiRpc.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/debug.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/debug.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/debug.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/debug.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_fixup.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_fixup.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_fixup.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_fixup.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_log.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_log.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_log.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_log.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_rpc_glue.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_rpc_glue.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_rpc_glue.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_rpc_glue.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_sync_call.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_sync_call.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_sync_call.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_api_sync_call.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_apicb_appinit.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_apicb_appinit.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_apicb_appinit.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/rpc_inc/loc_apicb_appinit.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpc.cpp b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpc.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpc.cpp
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpc.cpp
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_fixup.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_fixup.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_fixup.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_fixup.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_log.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_log.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_log.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_log.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_rpc_glue.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_rpc_glue.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_rpc_glue.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_rpc_glue.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_sync_call.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_sync_call.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_sync_call.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_api_sync_call.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_apicb_appinit.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_apicb_appinit.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_apicb_appinit.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/loc_apicb_appinit.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Android.mk b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Android.mk
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Android.mk
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Android.mk
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Makefile.am b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Makefile.am
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Makefile.am
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/Makefile.am
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_cb_rpc.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_cb_rpc.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_cb_rpc.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_cb_rpc.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_common_rpc.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_common_rpc.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_common_rpc.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_common_rpc.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_rpc.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_rpc.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_rpc.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_api_rpcgen_rpc.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_apicb_appinit.h b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_apicb_appinit.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_apicb_appinit.h
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/inc/loc_apicb_appinit.h
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_svc.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_svc.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_svc.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_svc.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_xdr.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_xdr.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_xdr.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_cb_xdr.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_clnt.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_clnt.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_clnt.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_clnt.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_common_xdr.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_common_xdr.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_common_xdr.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_common_xdr.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_xdr.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_xdr.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_xdr.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_api_rpcgen_xdr.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_apicb_appinit.c b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_apicb_appinit.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_apicb_appinit.c
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/src/loc_apicb_appinit.c
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api.xdr b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api.xdr
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api.xdr
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api.xdr
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_cb.xdr b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_cb.xdr
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_cb.xdr
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_cb.xdr
diff --git a/msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_common.xdr b/msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_common.xdr
similarity index 100%
rename from msmcobalt/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_common.xdr
rename to msm8998/loc_api/libloc_api-rpc-50001/libloc_api-rpc-stub/xdr/loc_api_common.xdr
diff --git a/msmcobalt/loc_api/libloc_api_50001/Android.mk b/msm8998/loc_api/libloc_api_50001/Android.mk
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/Android.mk
rename to msm8998/loc_api/libloc_api_50001/Android.mk
diff --git a/msmcobalt/loc_api/libloc_api_50001/LocEngAdapter.cpp b/msm8998/loc_api/libloc_api_50001/LocEngAdapter.cpp
similarity index 99%
rename from msmcobalt/loc_api/libloc_api_50001/LocEngAdapter.cpp
rename to msm8998/loc_api/libloc_api_50001/LocEngAdapter.cpp
index 73f5ed6..9db513c 100644
--- a/msmcobalt/loc_api/libloc_api_50001/LocEngAdapter.cpp
+++ b/msm8998/loc_api/libloc_api_50001/LocEngAdapter.cpp
@@ -81,6 +81,7 @@
 {
     memset(&mFixCriteria, 0, sizeof(mFixCriteria));
     mFixCriteria.mode = LOC_POSITION_MODE_INVALID;
+    clearGnssSvUsedListData();
     LOC_LOGD("LocEngAdapter created");
 }
 
diff --git a/msmcobalt/loc_api/libloc_api_50001/LocEngAdapter.h b/msm8998/loc_api/libloc_api_50001/LocEngAdapter.h
similarity index 93%
rename from msmcobalt/loc_api/libloc_api_50001/LocEngAdapter.h
rename to msm8998/loc_api/libloc_api_50001/LocEngAdapter.h
index 4afea49..7afdd00 100644
--- a/msmcobalt/loc_api/libloc_api_50001/LocEngAdapter.h
+++ b/msm8998/loc_api/libloc_api_50001/LocEngAdapter.h
@@ -80,7 +80,9 @@
     unsigned int mPowerVote;
     static const unsigned int POWER_VOTE_RIGHT = 0x20;
     static const unsigned int POWER_VOTE_VALUE = 0x10;
-
+    /** Gnss sv used in position data */
+    GnssSvUsedInPosition mGnssSvIdUsedInPosition;
+    bool mGnssSvIdUsedInPosAvail;
 public:
     bool mSupportsAgpsRequests;
     bool mSupportsPositionInjection;
@@ -111,6 +113,25 @@
     }
     inline const MsgTask* getMsgTask() { return mMsgTask; }
 
+    inline void clearGnssSvUsedListData() {
+        mGnssSvIdUsedInPosAvail = false;
+        memset(&mGnssSvIdUsedInPosition, 0, sizeof (GnssSvUsedInPosition));
+    }
+
+    inline void setGnssSvUsedListData(GnssSvUsedInPosition gnssSvUsedIds) {
+        mGnssSvIdUsedInPosAvail = true;
+        memcpy(&mGnssSvIdUsedInPosition, &gnssSvUsedIds,
+                                    sizeof(GnssSvUsedInPosition));
+    }
+
+    inline GnssSvUsedInPosition getGnssSvUsedListData() {
+        return mGnssSvIdUsedInPosition;
+    }
+
+    inline bool isGnssSvIdUsedInPosAvail() {
+        return mGnssSvIdUsedInPosAvail;
+    }
+
     inline enum loc_api_adapter_err
         startFix()
     {
@@ -240,9 +261,9 @@
     {
         return mLocApi->setLPPeProtocol(lppeCP, lppeUP);
     }
-    inline virtual int initDataServiceClient()
+    inline virtual int initDataServiceClient(bool isDueToSsr)
     {
-        return mLocApi->initDataServiceClient();
+        return mLocApi->initDataServiceClient(isDueToSsr);
     }
     inline virtual int openAndStartDataCall()
     {
@@ -256,6 +277,10 @@
     {
         mLocApi->closeDataCall();
     }
+    inline virtual void releaseDataServiceClient()
+    {
+        mLocApi->releaseDataServiceClient();
+    }
     inline enum loc_api_adapter_err
         getZpp(GpsLocation &zppLoc, LocPosTechMask &tech_mask)
     {
diff --git a/msmcobalt/loc_api/libloc_api_50001/Makefile.am b/msm8998/loc_api/libloc_api_50001/Makefile.am
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/Makefile.am
rename to msm8998/loc_api/libloc_api_50001/Makefile.am
diff --git a/msmcobalt/loc_api/libloc_api_50001/gps.c b/msm8998/loc_api/libloc_api_50001/gps.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/gps.c
rename to msm8998/loc_api/libloc_api_50001/gps.c
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc.cpp b/msm8998/loc_api/libloc_api_50001/loc.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc.cpp
rename to msm8998/loc_api/libloc_api_50001/loc.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc.h b/msm8998/loc_api/libloc_api_50001/loc.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc.h
rename to msm8998/loc_api/libloc_api_50001/loc.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng.cpp
similarity index 96%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng.cpp
index 318786d..38159dd 100644
--- a/msmcobalt/loc_api/libloc_api_50001/loc_eng.cpp
+++ b/msm8998/loc_api/libloc_api_50001/loc_eng.cpp
@@ -69,7 +69,7 @@
 #endif
 
 #ifndef SAP_CONF_FILE
-#define SAP_CONF_FILE            "/etc/sap.conf"
+#define SAP_CONF_FILE            "/vendor/etc/sap.conf"
 #endif
 
 #define XTRA1_GPSONEXTRA         "xtra1.gpsonextra.net"
@@ -186,6 +186,7 @@
 // 2nd half of init(), singled out for
 // modem restart to use.
 static int loc_eng_reinit(loc_eng_data_s_type &loc_eng_data);
+static void loc_eng_dsclient_release(loc_eng_data_s_type &loc_eng_data);
 static void loc_eng_agps_reinit(loc_eng_data_s_type &loc_eng_data);
 
 static int loc_eng_set_server(loc_eng_data_s_type &loc_eng_data,
@@ -290,6 +291,7 @@
 inline void LocEngStopFix::proc() const
 {
     loc_eng_data_s_type* locEng = (loc_eng_data_s_type*)mAdapter->getOwner();
+    mAdapter->clearGnssSvUsedListData();
     loc_eng_stop_handler(*locEng);
 }
 inline void LocEngStopFix::locallog() const
@@ -806,6 +808,10 @@
                         (gps_conf.ACCURACY_THRES != 0) &&
                         (mLocation.gpsLocation.accuracy >
                          gps_conf.ACCURACY_THRES)))) {
+                if (mLocationExtended.flags & GPS_LOCATION_EXTENDED_HAS_GNSS_SV_USED_DATA)
+                {
+                    adapter->setGnssSvUsedListData(mLocationExtended.gnss_sv_used_ids);
+                }
                 locEng->location_cb((UlpLocation*)&(mLocation),
                                     (void*)mLocationExt);
                 reported = true;
@@ -880,14 +886,61 @@
 
     if (locEng->mute_session_state != LOC_MUTE_SESS_IN_SESSION)
     {
+        GnssSvStatus gnssSvStatus;
+        memcpy(&gnssSvStatus,&mSvStatus,sizeof(GnssSvStatus));
+        if (adapter->isGnssSvIdUsedInPosAvail())
+        {
+            GnssSvUsedInPosition gnssSvIdUsedInPosition =
+                                adapter->getGnssSvUsedListData();
+            int numSv = gnssSvStatus.num_svs;
+            int16_t gnssSvId = 0;
+            int prnMin = 0;
+            uint64_t svUsedIdMask = 0;
+            for (int i=0; i < numSv; i++)
+            {
+                gnssSvId = gnssSvStatus.gnss_sv_list[i].svid;
+                if (gnssSvId <= GPS_SV_PRN_MAX)
+                {
+                    svUsedIdMask = gnssSvIdUsedInPosition.gps_sv_used_ids_mask;
+                    prnMin = GPS_SV_PRN_MIN;
+                }
+                else if ((gnssSvId >= GLO_SV_PRN_MIN) && (gnssSvId <= GLO_SV_PRN_MAX))
+                {
+                    svUsedIdMask = gnssSvIdUsedInPosition.glo_sv_used_ids_mask;
+                    prnMin = GLO_SV_PRN_MIN;
+                }
+                else if ((gnssSvId >= BDS_SV_PRN_MIN) && (gnssSvId <= BDS_SV_PRN_MAX))
+                {
+                    svUsedIdMask = gnssSvIdUsedInPosition.bds_sv_used_ids_mask;
+                    prnMin = BDS_SV_PRN_MIN;
+                }
+                else if ((gnssSvId >= GAL_SV_PRN_MIN) && (gnssSvId <= GAL_SV_PRN_MAX))
+                {
+                    svUsedIdMask = gnssSvIdUsedInPosition.gal_sv_used_ids_mask;
+                    prnMin = GAL_SV_PRN_MIN;
+                }
+
+                // If SV ID was used in previous position fix, then set USED_IN_FIX
+                // flag, else clear the USED_IN_FIX flag.
+                if (svUsedIdMask & (1 << (gnssSvId - prnMin)))
+                {
+                    gnssSvStatus.gnss_sv_list[i].flags |= GNSS_SV_FLAGS_USED_IN_FIX;
+                }
+                else
+                {
+                    gnssSvStatus.gnss_sv_list[i].flags &= ~GNSS_SV_FLAGS_USED_IN_FIX;
+                }
+            }
+        }
+
         if (locEng->gnss_sv_status_cb != NULL) {
             LOC_LOGE("Calling gnss_sv_status_cb");
-            locEng->gnss_sv_status_cb((GnssSvStatus*)&(mSvStatus));
+            locEng->gnss_sv_status_cb((GnssSvStatus*)&(gnssSvStatus));
         }
 
         if (locEng->generateNmea)
         {
-            loc_eng_nmea_generate_sv(locEng, mSvStatus, mLocationExtended);
+            loc_eng_nmea_generate_sv(locEng, gnssSvStatus, mLocationExtended);
         }
     }
 }
@@ -2308,6 +2361,39 @@
     }
     EXIT_LOG(%s, VOID_RET);
 }
+
+/*===========================================================================
+FUNCTION    loc_eng_dsclient_release
+
+DESCRIPTION
+   Stop/Close/Release DS client when modem SSR happens.
+
+DEPENDENCIES
+   NONE
+
+RETURN VALUE
+   0
+
+SIDE EFFECTS
+   N/A
+
+===========================================================================*/
+static void loc_eng_dsclient_release(loc_eng_data_s_type &loc_eng_data)
+{
+    ENTRY_LOG();
+    int result = 1;
+    LocEngAdapter* adapter = loc_eng_data.adapter;
+    if (NULL != adapter && gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL)
+    {
+        // stop and close the ds client
+        adapter->stopDataCall();
+        adapter->closeDataCall();
+        adapter->releaseDataServiceClient();
+    }
+    EXIT_LOG(%s, VOID_RET);
+}
+
+
 /*===========================================================================
 FUNCTION    loc_eng_agps_init
 
@@ -2378,7 +2464,7 @@
             }
             if (NULL == locEng.ds_nif &&
                 gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL &&
-                0 == adapter->initDataServiceClient()) {
+                0 == adapter->initDataServiceClient(false)) {
                 locEng.ds_nif = new DSStateMachine(servicerTypeExt,
                                                      (void *)dataCallCb,
                                                      locEng.adapter);
@@ -2912,6 +2998,12 @@
         if (loc_eng_data.internet_nif)
             loc_eng_data.internet_nif->dropAllSubscribers();
 
+        // reinitialize DS client in SSR mode
+        loc_eng_dsclient_release(loc_eng_data);
+        if (loc_eng_data.adapter->mSupportsAgpsRequests &&
+              gps_conf.USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL) {
+            loc_eng_data.adapter->initDataServiceClient(true);
+        }
         loc_eng_agps_reinit(loc_eng_data);
     }
 
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng.h b/msm8998/loc_api/libloc_api_50001/loc_eng.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_agps.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng_agps.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_agps.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng_agps.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_agps.h b/msm8998/loc_api/libloc_api_50001/loc_eng_agps.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_agps.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_agps.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn.h b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.c b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.c
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.c
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.h b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_msg.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.c b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.c
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.c
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.h b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_glue_pipe.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.h b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_handler.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.c b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.c
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.c
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.c
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.h b/msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_dmn_conn_thread_helper.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_log.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng_log.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_log.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng_log.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_log.h b/msm8998/loc_api/libloc_api_50001/loc_eng_log.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_log.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_log.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_msg.h b/msm8998/loc_api/libloc_api_50001/loc_eng_msg.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_msg.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_msg.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_ni.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng_ni.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_ni.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng_ni.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_ni.h b/msm8998/loc_api/libloc_api_50001/loc_eng_ni.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_ni.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_ni.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_nmea.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng_nmea.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_nmea.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng_nmea.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_nmea.h b/msm8998/loc_api/libloc_api_50001/loc_eng_nmea.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_nmea.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_nmea.h
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_xtra.cpp b/msm8998/loc_api/libloc_api_50001/loc_eng_xtra.cpp
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_xtra.cpp
rename to msm8998/loc_api/libloc_api_50001/loc_eng_xtra.cpp
diff --git a/msmcobalt/loc_api/libloc_api_50001/loc_eng_xtra.h b/msm8998/loc_api/libloc_api_50001/loc_eng_xtra.h
similarity index 100%
rename from msmcobalt/loc_api/libloc_api_50001/loc_eng_xtra.h
rename to msm8998/loc_api/libloc_api_50001/loc_eng_xtra.h
diff --git a/msmcobalt/utils/Android.mk b/msm8998/utils/Android.mk
similarity index 100%
rename from msmcobalt/utils/Android.mk
rename to msm8998/utils/Android.mk
diff --git a/msmcobalt/utils/LocHeap.cpp b/msm8998/utils/LocHeap.cpp
similarity index 100%
rename from msmcobalt/utils/LocHeap.cpp
rename to msm8998/utils/LocHeap.cpp
diff --git a/msmcobalt/utils/LocHeap.h b/msm8998/utils/LocHeap.h
similarity index 100%
rename from msmcobalt/utils/LocHeap.h
rename to msm8998/utils/LocHeap.h
diff --git a/msmcobalt/utils/LocSharedLock.h b/msm8998/utils/LocSharedLock.h
similarity index 100%
rename from msmcobalt/utils/LocSharedLock.h
rename to msm8998/utils/LocSharedLock.h
diff --git a/msmcobalt/utils/LocThread.cpp b/msm8998/utils/LocThread.cpp
similarity index 100%
rename from msmcobalt/utils/LocThread.cpp
rename to msm8998/utils/LocThread.cpp
diff --git a/msmcobalt/utils/LocThread.h b/msm8998/utils/LocThread.h
similarity index 100%
rename from msmcobalt/utils/LocThread.h
rename to msm8998/utils/LocThread.h
diff --git a/msmcobalt/utils/LocTimer.cpp b/msm8998/utils/LocTimer.cpp
similarity index 100%
rename from msmcobalt/utils/LocTimer.cpp
rename to msm8998/utils/LocTimer.cpp
diff --git a/msmcobalt/utils/LocTimer.h b/msm8998/utils/LocTimer.h
similarity index 100%
rename from msmcobalt/utils/LocTimer.h
rename to msm8998/utils/LocTimer.h
diff --git a/msmcobalt/utils/Makefile.am b/msm8998/utils/Makefile.am
similarity index 95%
rename from msmcobalt/utils/Makefile.am
rename to msm8998/utils/Makefile.am
index 50f1007..f816565 100644
--- a/msmcobalt/utils/Makefile.am
+++ b/msm8998/utils/Makefile.am
@@ -49,7 +49,7 @@
 libgps_utils_so_la_CPPFLAGS = $(AM_CFLAGS) $(AM_CPPFLAGS)
 endif
 
-libgps_utils_so_la_LIBADD = -lstdc++ -llog $(LOCPLA_LIBS)
+libgps_utils_so_la_LIBADD = -lcutils -lstdc++ -llog $(LOCPLA_LIBS)
 
 #Create and Install libraries
 lib_LTLIBRARIES = libgps_utils_so.la
diff --git a/msmcobalt/utils/MsgTask.cpp b/msm8998/utils/MsgTask.cpp
similarity index 100%
rename from msmcobalt/utils/MsgTask.cpp
rename to msm8998/utils/MsgTask.cpp
diff --git a/msmcobalt/utils/MsgTask.h b/msm8998/utils/MsgTask.h
similarity index 100%
rename from msmcobalt/utils/MsgTask.h
rename to msm8998/utils/MsgTask.h
diff --git a/msmcobalt/utils/linked_list.c b/msm8998/utils/linked_list.c
similarity index 100%
rename from msmcobalt/utils/linked_list.c
rename to msm8998/utils/linked_list.c
diff --git a/msmcobalt/utils/linked_list.h b/msm8998/utils/linked_list.h
similarity index 100%
rename from msmcobalt/utils/linked_list.h
rename to msm8998/utils/linked_list.h
diff --git a/msmcobalt/utils/loc_cfg.cpp b/msm8998/utils/loc_cfg.cpp
similarity index 100%
rename from msmcobalt/utils/loc_cfg.cpp
rename to msm8998/utils/loc_cfg.cpp
diff --git a/msmcobalt/utils/loc_cfg.h b/msm8998/utils/loc_cfg.h
similarity index 100%
rename from msmcobalt/utils/loc_cfg.h
rename to msm8998/utils/loc_cfg.h
diff --git a/msmcobalt/utils/loc_log.cpp b/msm8998/utils/loc_log.cpp
similarity index 100%
rename from msmcobalt/utils/loc_log.cpp
rename to msm8998/utils/loc_log.cpp
diff --git a/msmcobalt/utils/loc_log.h b/msm8998/utils/loc_log.h
similarity index 100%
rename from msmcobalt/utils/loc_log.h
rename to msm8998/utils/loc_log.h
diff --git a/msmcobalt/utils/loc_misc_utils.cpp b/msm8998/utils/loc_misc_utils.cpp
similarity index 100%
rename from msmcobalt/utils/loc_misc_utils.cpp
rename to msm8998/utils/loc_misc_utils.cpp
diff --git a/msmcobalt/utils/loc_misc_utils.h b/msm8998/utils/loc_misc_utils.h
similarity index 100%
rename from msmcobalt/utils/loc_misc_utils.h
rename to msm8998/utils/loc_misc_utils.h
diff --git a/msmcobalt/utils/loc_target.cpp b/msm8998/utils/loc_target.cpp
similarity index 100%
rename from msmcobalt/utils/loc_target.cpp
rename to msm8998/utils/loc_target.cpp
diff --git a/msmcobalt/utils/loc_target.h b/msm8998/utils/loc_target.h
similarity index 100%
rename from msmcobalt/utils/loc_target.h
rename to msm8998/utils/loc_target.h
diff --git a/msmcobalt/utils/loc_timer.h b/msm8998/utils/loc_timer.h
similarity index 100%
rename from msmcobalt/utils/loc_timer.h
rename to msm8998/utils/loc_timer.h
diff --git a/msmcobalt/utils/log_util.h b/msm8998/utils/log_util.h
similarity index 100%
rename from msmcobalt/utils/log_util.h
rename to msm8998/utils/log_util.h
diff --git a/msmcobalt/utils/msg_q.c b/msm8998/utils/msg_q.c
similarity index 100%
rename from msmcobalt/utils/msg_q.c
rename to msm8998/utils/msg_q.c
diff --git a/msmcobalt/utils/msg_q.h b/msm8998/utils/msg_q.h
similarity index 100%
rename from msmcobalt/utils/msg_q.h
rename to msm8998/utils/msg_q.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/Android.mk b/msm8998/utils/platform_lib_abstractions/Android.mk
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/Android.mk
rename to msm8998/utils/platform_lib_abstractions/Android.mk
diff --git a/msmcobalt/utils/platform_lib_abstractions/elapsed_millis_since_boot.cpp b/msm8998/utils/platform_lib_abstractions/elapsed_millis_since_boot.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/elapsed_millis_since_boot.cpp
rename to msm8998/utils/platform_lib_abstractions/elapsed_millis_since_boot.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/Android.mk b/msm8998/utils/platform_lib_abstractions/loc_pla/Android.mk
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/Android.mk
rename to msm8998/utils/platform_lib_abstractions/loc_pla/Android.mk
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/Makefile.am b/msm8998/utils/platform_lib_abstractions/loc_pla/Makefile.am
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/Makefile.am
rename to msm8998/utils/platform_lib_abstractions/loc_pla/Makefile.am
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/configure.ac b/msm8998/utils/platform_lib_abstractions/loc_pla/configure.ac
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/configure.ac
rename to msm8998/utils/platform_lib_abstractions/loc_pla/configure.ac
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_android_runtime.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_android_runtime.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_android_runtime.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_android_runtime.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_gettid.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_gettid.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_gettid.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_gettid.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_includes.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_includes.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_includes.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_includes.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_log_util.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_log_util.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_log_util.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_log_util.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_property_service.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_property_service.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_property_service.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_property_service.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_sched_policy.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_sched_policy.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_sched_policy.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_sched_policy.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_time.h b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_time.h
similarity index 96%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_time.h
rename to msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_time.h
index 2905a74..ae25ae6 100644
--- a/msmcobalt/utils/platform_lib_abstractions/loc_pla/include/platform_lib_time.h
+++ b/msm8998/utils/platform_lib_abstractions/loc_pla/include/platform_lib_time.h
@@ -31,5 +31,6 @@
 
 #include <stdint.h>
 int64_t platform_lib_abstraction_elapsed_millis_since_boot();
+int64_t platform_lib_abstraction_elapsed_micros_since_boot();
 
 #endif /* __PLATFORM_LIB_TIME_H__ */
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/loc-pla.pc.in b/msm8998/utils/platform_lib_abstractions/loc_pla/loc-pla.pc.in
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/loc-pla.pc.in
rename to msm8998/utils/platform_lib_abstractions/loc_pla/loc-pla.pc.in
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/Android.mk b/msm8998/utils/platform_lib_abstractions/loc_pla/src/Android.mk
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/Android.mk
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/Android.mk
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/Makefile.am b/msm8998/utils/platform_lib_abstractions/loc_pla/src/Makefile.am
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/Makefile.am
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/Makefile.am
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_android_runtime.cpp b/msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_android_runtime.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_android_runtime.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_android_runtime.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_gettid.cpp b/msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_gettid.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_gettid.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_gettid.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp b/msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_property_service.cpp b/msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_property_service.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_property_service.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_property_service.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_sched_policy.cpp b/msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_sched_policy.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_sched_policy.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_sched_policy.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_time.cpp b/msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_time.cpp
similarity index 79%
rename from msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_time.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_time.cpp
index dc7dff1..3dcd4d3 100644
--- a/msmcobalt/utils/platform_lib_abstractions/loc_pla/src/platform_lib_time.cpp
+++ b/msm8998/utils/platform_lib_abstractions/loc_pla/src/platform_lib_time.cpp
@@ -31,6 +31,8 @@
 #include <loc_stub_time.h>
 #else
 #include <utils/SystemClock.h>
+#include <utils/Timers.h>
+
 #endif /* USE_GLIB */
 
 int64_t platform_lib_abstraction_elapsed_millis_since_boot()
@@ -41,7 +43,17 @@
 
 #else
 
-    return android::elapsedRealtime();
+    //return android::nanoseconds_to_microseconds(systemTime(SYSTEM_TIME_BOOTTIME))/1000;
+    return nanoseconds_to_microseconds(systemTime(SYSTEM_TIME_BOOTTIME))/1000;
+#endif
+}
+int64_t platform_lib_abstraction_elapsed_micros_since_boot()
+{
+#ifdef USE_GLIB
+    return elapsedMicrosSinceBoot();
 
+#else
+    //return android::nanoseconds_to_microseconds(systemTime(SYSTEM_TIME_BOOTTIME));
+    return nanoseconds_to_microseconds(systemTime(SYSTEM_TIME_BOOTTIME));
 #endif
 }
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/Android.mk b/msm8998/utils/platform_lib_abstractions/loc_stub/Android.mk
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/Android.mk
rename to msm8998/utils/platform_lib_abstractions/loc_stub/Android.mk
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/Makefile.am b/msm8998/utils/platform_lib_abstractions/loc_stub/Makefile.am
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/Makefile.am
rename to msm8998/utils/platform_lib_abstractions/loc_stub/Makefile.am
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/configure.ac b/msm8998/utils/platform_lib_abstractions/loc_stub/configure.ac
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/configure.ac
rename to msm8998/utils/platform_lib_abstractions/loc_stub/configure.ac
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_android_runtime.h b/msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_android_runtime.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_android_runtime.h
rename to msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_android_runtime.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_gettid.h b/msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_gettid.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_gettid.h
rename to msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_gettid.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_property_service.h b/msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_property_service.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_property_service.h
rename to msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_property_service.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_sched_policy.h b/msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_sched_policy.h
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_sched_policy.h
rename to msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_sched_policy.h
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_time.h b/msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_time.h
similarity index 97%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_time.h
rename to msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_time.h
index 271e2ff..f00a49b 100644
--- a/msmcobalt/utils/platform_lib_abstractions/loc_stub/include/loc_stub_time.h
+++ b/msm8998/utils/platform_lib_abstractions/loc_stub/include/loc_stub_time.h
@@ -37,6 +37,7 @@
 
 int64_t systemTime(int clock);
 int64_t elapsedMillisSinceBoot();
+int64_t elapsedMicrosSinceBoot();
 
 #ifdef __cplusplus
 }
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/loc-stub.pc.in b/msm8998/utils/platform_lib_abstractions/loc_stub/loc-stub.pc.in
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/loc-stub.pc.in
rename to msm8998/utils/platform_lib_abstractions/loc_stub/loc-stub.pc.in
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/Android.mk b/msm8998/utils/platform_lib_abstractions/loc_stub/src/Android.mk
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/src/Android.mk
rename to msm8998/utils/platform_lib_abstractions/loc_stub/src/Android.mk
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/Makefile.am b/msm8998/utils/platform_lib_abstractions/loc_stub/src/Makefile.am
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/src/Makefile.am
rename to msm8998/utils/platform_lib_abstractions/loc_stub/src/Makefile.am
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_android_runtime.cpp b/msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_android_runtime.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_android_runtime.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_android_runtime.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_gettid.cpp b/msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_gettid.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_gettid.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_gettid.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_property_service.cpp b/msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_property_service.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_property_service.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_property_service.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_sched_policy.cpp b/msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_sched_policy.cpp
similarity index 100%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_sched_policy.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_sched_policy.cpp
diff --git a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_time.cpp b/msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_time.cpp
similarity index 83%
rename from msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_time.cpp
rename to msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_time.cpp
index 82dc593..499cf00 100644
--- a/msmcobalt/utils/platform_lib_abstractions/loc_stub/src/loc_stub_time.cpp
+++ b/msm8998/utils/platform_lib_abstractions/loc_stub/src/loc_stub_time.cpp
@@ -29,6 +29,7 @@
 #include "loc_stub_time.h"
 #include <stdlib.h>
 #include <sys/time.h>
+#include <time.h>
 
 int64_t systemTime(int clock)
 {
@@ -38,9 +39,17 @@
     return t.tv_sec*1000000LL + t.tv_usec;
 }
 
+int64_t elapsedMicrosSinceBoot()
+{
+    struct timespec ts;
+    int64_t time_ms = 0;
+    clock_gettime(CLOCK_BOOTTIME, &ts);
+    time_ms += (ts.tv_sec * 1000000000LL);     /* Seconds to nanoseconds */
+    time_ms += ts.tv_nsec;   /* Add Nanoseconds  */
+    return time_ms;
+}
 
 int64_t elapsedMillisSinceBoot()
 {
-    int64_t t_us = systemTime(0);
-    return (int64_t) t_us / 1000LL;
+    return (int64_t) (elapsedMicrosSinceBoot() /1000000LL);
 }