summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp12
-rw-r--r--Android.mk5
-rw-r--r--android/1.0/Android.mk4
-rw-r--r--android/1.1/Android.mk4
-rw-r--r--android/2.0/Android.mk4
-rw-r--r--android/2.1/Android.mk3
-rw-r--r--android/utils/Android.bp2
-rw-r--r--batching/Android.bp2
-rw-r--r--core/Android.bp2
-rw-r--r--geofence/Android.bp2
-rw-r--r--gnss/Agps.cpp2
-rw-r--r--gnss/Android.bp2
-rw-r--r--gnss/GnssAdapter.cpp87
-rw-r--r--gnss/GnssAdapter.h5
-rw-r--r--location/Android.bp2
-rw-r--r--utils/Android.bp2
16 files changed, 92 insertions, 48 deletions
diff --git a/Android.bp b/Android.bp
index ea0d991..0681f67 100644
--- a/Android.bp
+++ b/Android.bp
@@ -16,18 +16,6 @@ GNSS_CFLAGS = [
"-Wno-error=date-time",
]
-/* Activate the following for regression testing */
-GNSS_SANITIZE = {
-/* address: true,*/
- cfi: true,
- misc_undefined: [
- "bounds",
- "null",
- "unreachable",
- "integer",
- ],
-}
-
/* Activate the following for debug purposes only,
comment out for production */
GNSS_SANITIZE_DIAG = {
diff --git a/Android.mk b/Android.mk
index 77d61c9..88bb0f4 100644
--- a/Android.mk
+++ b/Android.mk
@@ -36,9 +36,6 @@ endif
LOCAL_PATH := $(call my-dir)
include $(call all-makefiles-under,$(LOCAL_PATH))
-GNSS_SANITIZE := cfi bounds null unreachable integer
-# Activate the following two lines for regression testing
-#GNSS_SANITIZE += address
-#GNSS_SANITIZE_DIAG := $(GNSS_SANITIZE)
+GNSS_SANITIZE_DIAG := cfi bounds null unreachable integer address
endif # ifneq ($(BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE),)
diff --git a/android/1.0/Android.mk b/android/1.0/Android.mk
index 797ecce..f63a948 100644
--- a/android/1.0/Android.mk
+++ b/android/1.0/Android.mk
@@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@1.0-impl-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
+
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VENDOR_MODULE := true
@@ -58,7 +58,7 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@1.0-service-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
+
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@1.0-service-qti.xml
diff --git a/android/1.1/Android.mk b/android/1.1/Android.mk
index 66abd06..edf8547 100644
--- a/android/1.1/Android.mk
+++ b/android/1.1/Android.mk
@@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@1.1-impl-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
+
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VENDOR_MODULE := true
@@ -59,7 +59,7 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@1.1-service-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
+
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@1.1-service-qti.xml
diff --git a/android/2.0/Android.mk b/android/2.0/Android.mk
index c0b91ae..e3422f9 100644
--- a/android/2.0/Android.mk
+++ b/android/2.0/Android.mk
@@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@2.0-impl-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
+
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VENDOR_MODULE := true
@@ -71,7 +71,7 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@2.0-service-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
+
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@2.0-service-qti.xml
diff --git a/android/2.1/Android.mk b/android/2.1/Android.mk
index a947e41..4be97a9 100644
--- a/android/2.1/Android.mk
+++ b/android/2.1/Android.mk
@@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@2.1-impl-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VENDOR_MODULE := true
@@ -74,7 +73,7 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := android.hardware.gnss@2.1-service-qti
-LOCAL_SANITIZE += $(GNSS_SANITIZE)
+
# activate the following line for debug purposes only, comment out for production
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@2.1-service-qti.xml
diff --git a/android/utils/Android.bp b/android/utils/Android.bp
index c3dc17a..20fea88 100644
--- a/android/utils/Android.bp
+++ b/android/utils/Android.bp
@@ -3,7 +3,7 @@ cc_library_static {
name: "liblocbatterylistener",
vendor: true,
- sanitize: GNSS_SANITIZE,
+
cflags: GNSS_CFLAGS + ["-DBATTERY_LISTENER_ENABLED"],
local_include_dirs: ["."],
diff --git a/batching/Android.bp b/batching/Android.bp
index 9182a0a..ce794d1 100644
--- a/batching/Android.bp
+++ b/batching/Android.bp
@@ -4,7 +4,7 @@ cc_library_shared {
name: "libbatching",
vendor: true,
- sanitize: GNSS_SANITIZE,
+
shared_libs: [
"libutils",
diff --git a/core/Android.bp b/core/Android.bp
index ee8e807..fe9f067 100644
--- a/core/Android.bp
+++ b/core/Android.bp
@@ -4,7 +4,7 @@ cc_library_shared {
name: "libloc_core",
vendor: true,
- sanitize: GNSS_SANITIZE,
+
shared_libs: [
"liblog",
diff --git a/geofence/Android.bp b/geofence/Android.bp
index 4801eb8..bf8474f 100644
--- a/geofence/Android.bp
+++ b/geofence/Android.bp
@@ -5,7 +5,7 @@ cc_library_shared {
name: "libgeofencing",
vendor: true,
- sanitize: GNSS_SANITIZE,
+
srcs: [
"GeofenceAdapter.cpp",
diff --git a/gnss/Agps.cpp b/gnss/Agps.cpp
index 4344a6f..0b95f99 100644
--- a/gnss/Agps.cpp
+++ b/gnss/Agps.cpp
@@ -590,7 +590,7 @@ void AgpsManager::requestATL(int connHandle, AGpsExtType agpsType,
sm->setApnTypeMask(apnTypeMask);
/* Invoke AGPS SM processing */
- AgpsSubscriber subscriber(connHandle, false, false, apnTypeMask);
+ AgpsSubscriber subscriber(connHandle, true, false, apnTypeMask);
sm->setCurrentSubscriber(&subscriber);
/* Send subscriber event */
sm->processAgpsEvent(AGPS_EVENT_SUBSCRIBE);
diff --git a/gnss/Android.bp b/gnss/Android.bp
index a3e8de9..736ea81 100644
--- a/gnss/Android.bp
+++ b/gnss/Android.bp
@@ -5,7 +5,7 @@ cc_library_shared {
name: "libgnss",
vendor: true,
- sanitize: GNSS_SANITIZE,
+
shared_libs: [
"libutils",
diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp
index 1938782..f3ccd99 100644
--- a/gnss/GnssAdapter.cpp
+++ b/gnss/GnssAdapter.cpp
@@ -77,6 +77,8 @@ static void agpsCloseResultCb (bool isSuccess, AGpsExtType agpsType, void* userD
typedef const CdfwInterface* (*getCdfwInterface)();
+typedef void getPdnTypeFromWds(const std::string& apnName, std::function<void(int)> pdnCb);
+
inline bool GnssReportLoggerUtil::isLogEnabled() {
return (mLogLatency != nullptr);
}
@@ -889,6 +891,8 @@ GnssAdapter::setConfig()
ContextBase::mGps_conf.MO_SUPL_PORT,
LOC_AGPS_MO_SUPL_SERVER);
+ std::string moServerUrl = getMoServerUrl();
+ std::string serverUrl = getServerUrl();
// inject the configurations into modem
loc_gps_cfg_s gpsConf = ContextBase::mGps_conf;
loc_sap_cfg_s_type sapConf = ContextBase::mSap_conf;
@@ -936,8 +940,10 @@ GnssAdapter::setConfig()
gnssConfigRequested.blacklistedSvIds.assign(mBlacklistedSvIds.begin(),
mBlacklistedSvIds.end());
mLocApi->sendMsg(new LocApiMsg(
- [this, gpsConf, sapConf, oldMoServerUrl, gnssConfigRequested] () mutable {
- gnssUpdateConfig(oldMoServerUrl, gnssConfigRequested, gnssConfigRequested);
+ [this, gpsConf, sapConf, oldMoServerUrl, moServerUrl,
+ serverUrl, gnssConfigRequested] () mutable {
+ gnssUpdateConfig(oldMoServerUrl, moServerUrl, serverUrl,
+ gnssConfigRequested, gnssConfigRequested);
// set nmea mask type
uint32_t mask = 0;
@@ -1025,6 +1031,7 @@ GnssAdapter::setConfig()
}
std::vector<LocationError> GnssAdapter::gnssUpdateConfig(const std::string& oldMoServerUrl,
+ const std::string& moServerUrl, const std::string& serverUrl,
GnssConfig& gnssConfigRequested, GnssConfig& gnssConfigNeedEngineUpdate, size_t count) {
loc_gps_cfg_s gpsConf = ContextBase::mGps_conf;
size_t index = 0;
@@ -1034,9 +1041,6 @@ std::vector<LocationError> GnssAdapter::gnssUpdateConfig(const std::string& oldM
errsList.insert(errsList.begin(), count, LOCATION_ERROR_SUCCESS);
}
- std::string serverUrl = getServerUrl();
- std::string moServerUrl = getMoServerUrl();
-
int serverUrlLen = serverUrl.length();
int moServerUrlLen = moServerUrl.length();
@@ -1424,10 +1428,14 @@ GnssAdapter::gnssUpdateConfigCommand(const GnssConfig& config)
adapter.reportResponse(countOfConfigs, errs.data(), ids.data());
});
+ std::string moServerUrl = adapter.getMoServerUrl();
+ std::string serverUrl = adapter.getServerUrl();
mApi.sendMsg(new LocApiMsg(
[&adapter, gnssConfigRequested, gnssConfigNeedEngineUpdate,
- countOfConfigs, configCollectiveResponse, errs] () mutable {
+ moServerUrl, serverUrl, countOfConfigs, configCollectiveResponse,
+ errs] () mutable {
std::vector<LocationError> errsList = adapter.gnssUpdateConfig("",
+ moServerUrl, serverUrl,
gnssConfigRequested, gnssConfigNeedEngineUpdate, countOfConfigs);
configCollectiveResponse->returnToSender(errsList);
@@ -5214,6 +5222,38 @@ bool GnssAdapter::releaseATL(int connHandle){
return true;
}
+void GnssAdapter::reportPdnTypeFromWds(int pdnType, AGpsExtType agpsType, std::string apnName,
+ AGpsBearerType bearerType) {
+ LOC_LOGd("pdnType from WDS QMI: %d, agpsType: %d, apnName: %s, bearerType: %d",
+ pdnType, agpsType, apnName.c_str(), bearerType);
+
+ struct MsgReportAtlPdn : public LocMsg {
+ GnssAdapter& mAdapter;
+ int mPdnType;
+ AgpsManager* mAgpsManager;
+ AGpsExtType mAgpsType;
+ string mApnName;
+ AGpsBearerType mBearerType;
+
+ inline MsgReportAtlPdn(GnssAdapter& adapter, int pdnType,
+ AgpsManager* agpsManager, AGpsExtType agpsType,
+ const string& apnName, AGpsBearerType bearerType) :
+ LocMsg(), mAgpsManager(agpsManager), mAgpsType(agpsType),
+ mApnName(apnName), mBearerType(bearerType),
+ mAdapter(adapter), mPdnType(pdnType) {}
+ inline virtual void proc() const {
+ mAgpsManager->reportAtlOpenSuccess(mAgpsType,
+ const_cast<char*>(mApnName.c_str()),
+ mApnName.length(), mPdnType<=0? mBearerType:mPdnType);
+ }
+ };
+
+ AGpsBearerType atlPdnType = (pdnType+1) & 3; // convert WDS QMI pdn type to AgpsBearerType
+ sendMsg(new MsgReportAtlPdn(*this, atlPdnType, &mAgpsManager,
+ agpsType, apnName, bearerType));
+}
+
+
void GnssAdapter::dataConnOpenCommand(
AGpsExtType agpsType,
const char* apnName, int apnLen, AGpsBearerType bearerType){
@@ -5221,17 +5261,16 @@ void GnssAdapter::dataConnOpenCommand(
LOC_LOGI("GnssAdapter::frameworkDataConnOpen");
struct AgpsMsgAtlOpenSuccess: public LocMsg {
-
+ GnssAdapter& mAdapter;
AgpsManager* mAgpsManager;
AGpsExtType mAgpsType;
char* mApnName;
- int mApnLen;
AGpsBearerType mBearerType;
- inline AgpsMsgAtlOpenSuccess(AgpsManager* agpsManager, AGpsExtType agpsType,
- const char* apnName, int apnLen, AGpsBearerType bearerType) :
+ inline AgpsMsgAtlOpenSuccess(GnssAdapter& adapter, AgpsManager* agpsManager,
+ AGpsExtType agpsType, const char* apnName, int apnLen, AGpsBearerType bearerType) :
LocMsg(), mAgpsManager(agpsManager), mAgpsType(agpsType), mApnName(
- new char[apnLen + 1]), mApnLen(apnLen), mBearerType(bearerType) {
+ new char[apnLen + 1]), mBearerType(bearerType), mAdapter(adapter) {
LOC_LOGV("AgpsMsgAtlOpenSuccess");
if (mApnName == nullptr) {
@@ -5249,9 +5288,27 @@ void GnssAdapter::dataConnOpenCommand(
}
inline virtual void proc() const {
-
- LOC_LOGV("AgpsMsgAtlOpenSuccess::proc()");
- mAgpsManager->reportAtlOpenSuccess(mAgpsType, mApnName, mApnLen, mBearerType);
+ LOC_LOGv("AgpsMsgAtlOpenSuccess::proc()");
+ string apn(mApnName);
+ //Use QMI WDS API to query IP Protocol from modem profile
+ void* libHandle = nullptr;
+ getPdnTypeFromWds* getPdnTypeFunc = (getPdnTypeFromWds*)dlGetSymFromLib(libHandle,
+ #ifdef USE_GLIB
+ "libloc_api_wds.so", "_Z10getPdnTypeRKNSt7__cxx1112basic_string"\
+ "IcSt11char_traitsIcESaIcEEESt8functionIFviEE");
+ #else
+ "libloc_api_wds.so", "_Z10getPdnTypeRKNSt3__112basic_stringIcNS_11char_traits"\
+ "IcEENS_9allocatorIcEEEENS_8functionIFviEEE");
+ #endif
+
+ std::function<void(int)> wdsPdnTypeCb = std::bind(&GnssAdapter::reportPdnTypeFromWds,
+ &mAdapter, std::placeholders::_1, mAgpsType, apn, mBearerType);
+ if (getPdnTypeFunc != nullptr) {
+ LOC_LOGv("dlGetSymFromLib success");
+ (*getPdnTypeFunc)(apn, wdsPdnTypeCb);
+ } else {
+ mAgpsManager->reportAtlOpenSuccess(mAgpsType, mApnName, apn.length(), mBearerType);
+ }
}
};
// Added inital length checks for apnlen check to avoid security issues
@@ -5260,7 +5317,7 @@ void GnssAdapter::dataConnOpenCommand(
LOC_LOGe("%s]: incorrect apnlen length or incorrect apnName", __func__);
mAgpsManager.reportAtlClosed(agpsType);
} else {
- sendMsg( new AgpsMsgAtlOpenSuccess(
+ sendMsg( new AgpsMsgAtlOpenSuccess(*this,
&mAgpsManager, agpsType, apnName, apnLen, bearerType));
}
}
diff --git a/gnss/GnssAdapter.h b/gnss/GnssAdapter.h
index 6b8d024..d7b4275 100644
--- a/gnss/GnssAdapter.h
+++ b/gnss/GnssAdapter.h
@@ -321,7 +321,6 @@ protected:
void logLatencyInfo();
public:
-
GnssAdapter();
virtual inline ~GnssAdapter() { }
@@ -409,6 +408,8 @@ public:
void deleteAidingData(const GnssAidingData &data, uint32_t sessionId);
void gnssUpdateXtraThrottleCommand(const bool enabled);
std::vector<LocationError> gnssUpdateConfig(const std::string& oldMoServerUrl,
+ const std::string& moServerUrl,
+ const std::string& serverUrl,
GnssConfig& gnssConfigRequested,
GnssConfig& gnssConfigNeedEngineUpdate, size_t count = 0);
@@ -525,6 +526,8 @@ public:
(
const std::unordered_map<LocationQwesFeatureType, bool> &featureMap
);
+ void reportPdnTypeFromWds(int pdnType, AGpsExtType agpsType, std::string apnName,
+ AGpsBearerType bearerType);
/* ======== UTILITIES ================================================================= */
bool needReportForGnssClient(const UlpLocation& ulpLocation,
diff --git a/location/Android.bp b/location/Android.bp
index 8532a08..fb4af2d 100644
--- a/location/Android.bp
+++ b/location/Android.bp
@@ -4,7 +4,7 @@ cc_library_shared {
name: "liblocation_api",
vendor: true,
- sanitize: GNSS_SANITIZE,
+
shared_libs: [
"libutils",
diff --git a/utils/Android.bp b/utils/Android.bp
index 7d43d57..33d8440 100644
--- a/utils/Android.bp
+++ b/utils/Android.bp
@@ -4,7 +4,7 @@ cc_library_shared {
name: "libgps.utils",
vendor: true,
- sanitize: GNSS_SANITIZE,
+
//# Libs
shared_libs: [