diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2021-10-24 02:17:01 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2021-10-24 02:17:01 -0700 |
commit | be93cb8bb31da125a4412f676fb9debbac3d4f54 (patch) | |
tree | f10e8a5af35446cfe9a74cd6d4a53837e8cc1682 | |
parent | 7436336905441ea621e9bedca69e654efc1cda25 (diff) | |
parent | 918de09dc976a5617bb50021b21d291be5023d3c (diff) |
Merge 918de09dc976a5617bb50021b21d291be5023d3c on remote branch
Change-Id: I1fe88148b8dce95b057b99994816234c1d313204
-rw-r--r-- | Android.bp | 12 | ||||
-rw-r--r-- | Android.mk | 5 | ||||
-rw-r--r-- | android/1.0/Android.mk | 4 | ||||
-rw-r--r-- | android/1.1/Android.mk | 4 | ||||
-rw-r--r-- | android/2.0/Android.mk | 4 | ||||
-rw-r--r-- | android/2.1/Android.mk | 3 | ||||
-rw-r--r-- | android/utils/Android.bp | 2 | ||||
-rw-r--r-- | batching/Android.bp | 2 | ||||
-rw-r--r-- | core/Android.bp | 2 | ||||
-rw-r--r-- | geofence/Android.bp | 2 | ||||
-rw-r--r-- | gnss/Agps.cpp | 2 | ||||
-rw-r--r-- | gnss/Android.bp | 2 | ||||
-rw-r--r-- | gnss/GnssAdapter.cpp | 87 | ||||
-rw-r--r-- | gnss/GnssAdapter.h | 5 | ||||
-rw-r--r-- | location/Android.bp | 2 | ||||
-rw-r--r-- | utils/Android.bp | 2 |
16 files changed, 92 insertions, 48 deletions
@@ -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 = { @@ -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: [ |