diff options
author | Cyan_Hsieh <cyanhsieh@google.com> | 2020-02-03 14:55:13 +0800 |
---|---|---|
committer | Cyan_Hsieh <cyanhsieh@google.com> | 2020-02-04 21:38:24 +0800 |
commit | 21b02b0b59e62e7712c1239e96d8ea1ab8ce9f0f (patch) | |
tree | 1c7a047a387e9fa1593b5cda05866e4b5707ae12 /gnss | |
parent | d1eea9d11b92e53e5c5930fb4da5430174d8d167 (diff) | |
parent | df7f25541d10514585e50372d8c2fea723008683 (diff) | |
download | gps-21b02b0b59e62e7712c1239e96d8ea1ab8ce9f0f.tar.gz |
Merge remote-tracking branch 'goog/qcom/release/LA.UM.8.1.C9.09.00.00.518.406' into qt-qpr1-dev
Conflicts:
android/1.0/Gnss.cpp
android/1.1/Gnss.cpp
android/2.0/Gnss.cpp
gnss/GnssAdapter.cpp
Bug: 148752159
Change-Id: Ifc50f4af34c0980973830793a30c9527461b9d7b
Diffstat (limited to 'gnss')
-rw-r--r-- | gnss/GnssAdapter.cpp | 65 | ||||
-rw-r--r-- | gnss/GnssAdapter.h | 4 |
2 files changed, 38 insertions, 31 deletions
diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index 4dbd182..b2a7633 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -784,20 +784,16 @@ GnssAdapter::setConfig() } else { gnssConfigRequested.gpsLock = GNSS_CONFIG_GPS_LOCK_NONE; } - - if (gpsConf.AGPS_CONFIG_INJECT) { - gnssConfigRequested.flags |= GNSS_CONFIG_FLAGS_SET_ASSISTANCE_DATA_VALID_BIT | - GNSS_CONFIG_FLAGS_SUPL_VERSION_VALID_BIT | - GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT | - GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT; - gnssConfigRequested.suplVersion = - mLocApi->convertSuplVersion(gpsConf.SUPL_VER); - gnssConfigRequested.lppProfile = - mLocApi->convertLppProfile(gpsConf.LPP_PROFILE); - gnssConfigRequested.aGlonassPositionProtocolMask = - gpsConf.A_GLONASS_POS_PROTOCOL_SELECT; - } - + gnssConfigRequested.flags |= GNSS_CONFIG_FLAGS_SET_ASSISTANCE_DATA_VALID_BIT | + GNSS_CONFIG_FLAGS_SUPL_VERSION_VALID_BIT | + GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT | + GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT; + gnssConfigRequested.suplVersion = + mLocApi->convertSuplVersion(gpsConf.SUPL_VER); + gnssConfigRequested.lppProfile = + mLocApi->convertLppProfile(gpsConf.LPP_PROFILE); + gnssConfigRequested.aGlonassPositionProtocolMask = + gpsConf.A_GLONASS_POS_PROTOCOL_SELECT; /* Let HAL do nothing to LPPe, just set it by MBN if (gpsConf.LPPE_CP_TECHNOLOGY) { gnssConfigRequested.flags |= GNSS_CONFIG_FLAGS_LPPE_CONTROL_PLANE_VALID_BIT; @@ -814,7 +810,7 @@ GnssAdapter::setConfig() gnssConfigRequested.blacklistedSvIds.assign(mBlacklistedSvIds.begin(), mBlacklistedSvIds.end()); mLocApi->sendMsg(new LocApiMsg( - [this, gpsConf, sapConf, oldMoServerUrl, gnssConfigRequested] () { + [this, gpsConf, sapConf, oldMoServerUrl, gnssConfigRequested] () mutable { gnssUpdateConfig(oldMoServerUrl, gnssConfigRequested, gnssConfigRequested); // set nmea mask type @@ -892,8 +888,7 @@ GnssAdapter::setConfig() } std::vector<LocationError> GnssAdapter::gnssUpdateConfig(const std::string& oldMoServerUrl, - const GnssConfig& gnssConfigRequested, - const GnssConfig& gnssConfigNeedEngineUpdate, size_t count) { + GnssConfig& gnssConfigRequested, GnssConfig& gnssConfigNeedEngineUpdate, size_t count) { loc_gps_cfg_s gpsConf = ContextBase::mGps_conf; size_t index = 0; LocationError err = LOCATION_ERROR_SUCCESS; @@ -902,13 +897,20 @@ 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(); + if (!ContextBase::mGps_conf.AGPS_CONFIG_INJECT) { + LOC_LOGd("AGPS_CONFIG_INJECT is 0. Not setting flags for AGPS configurations"); + gnssConfigRequested.flags &= ~(GNSS_CONFIG_FLAGS_SET_ASSISTANCE_DATA_VALID_BIT | + GNSS_CONFIG_FLAGS_SUPL_VERSION_VALID_BIT | + GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT | + GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT); + } + if (gnssConfigRequested.flags & GNSS_CONFIG_FLAGS_GPS_LOCK_VALID_BIT) { if (gnssConfigNeedEngineUpdate.flags & GNSS_CONFIG_FLAGS_GPS_LOCK_VALID_BIT) { err = mLocApi->setGpsLockSync(gnssConfigRequested.gpsLock); @@ -1259,7 +1261,7 @@ GnssAdapter::gnssUpdateConfigCommand(GnssConfig config) mApi.sendMsg(new LocApiMsg( [&adapter, gnssConfigRequested, gnssConfigNeedEngineUpdate, - countOfConfigs, configCollectiveResponse, errs] () { + countOfConfigs, configCollectiveResponse, errs] () mutable { std::vector<LocationError> errsList = adapter.gnssUpdateConfig("", gnssConfigRequested, gnssConfigNeedEngineUpdate, countOfConfigs); @@ -2118,6 +2120,7 @@ GnssAdapter::stopClientSessions(LocationAPI* client) } for (auto key : vTimeBasedTrackingClient) { stopTimeBasedTrackingMultiplex(key.client, key.id); + eraseTrackingSession(key.client, key.id); } /* Distance-based Tracking */ @@ -3803,7 +3806,20 @@ GnssAdapter::requestNiNotifyEvent(const GnssNiNotification ¬ify, const void* mAdapter.getE911State()) || // older modems (LOC_IN_EMERGENCY_SET == mEmergencyState); // newer modems - if (GNSS_NI_TYPE_EMERGENCY_SUPL == mNotify.type) { + if ((mAdapter.mSupportNfwControl || 0 == mAdapter.getAfwControlId()) && + (GNSS_NI_TYPE_SUPL == mNotify.type || GNSS_NI_TYPE_EMERGENCY_SUPL == mNotify.type) + && !bIsInEmergency && + !(GNSS_NI_OPTIONS_PRIVACY_OVERRIDE_BIT & mNotify.options) && + (GNSS_CONFIG_GPS_LOCK_NI & ContextBase::mGps_conf.GPS_LOCK) && + 1 == ContextBase::mGps_conf.NI_SUPL_DENY_ON_NFW_LOCKED) { + /* If all these conditions are TRUE, then deny the NI Request: + -'Q' Lock behavior OR 'P' Lock behavior and GNSS is Locked + -NI SUPL Request type or NI SUPL Emergency Request type + -NOT in an Emergency Call Session + -NOT Privacy Override option + -NFW is locked and config item NI_SUPL_DENY_ON_NFW_LOCKED = 1 */ + mApi.informNiResponse(GNSS_NI_RESPONSE_DENY, mData); + } else if (GNSS_NI_TYPE_EMERGENCY_SUPL == mNotify.type) { bInformNiAccept = bIsInEmergency || (GNSS_CONFIG_SUPL_EMERGENCY_SERVICES_NO == ContextBase::mGps_conf.SUPL_ES); @@ -3819,15 +3835,6 @@ GnssAdapter::requestNiNotifyEvent(const GnssNiNotification ¬ify, const void* else { mAdapter.requestNiNotify(mNotify, mData, false); } - } else if ((mAdapter.mSupportNfwControl || 0 == mAdapter.getAfwControlId()) && - GNSS_NI_TYPE_SUPL == mNotify.type && !bIsInEmergency && - !(GNSS_NI_OPTIONS_PRIVACY_OVERRIDE_BIT & mNotify.options) && - (GNSS_CONFIG_GPS_LOCK_NI & ContextBase::mGps_conf.GPS_LOCK) && - 1 == ContextBase::mGps_conf.NI_SUPL_DENY_ON_NFW_LOCKED) { - // If 'Q' Lock behavior OR 'P' Lock behavior and GNSS is Locked - // If an NI SUPL Request that does not have Privacy Override option comes when - // NFW is locked and config item NI_SUPL_DENY_ON_NFW_LOCKED = 1, then deny it - mApi.informNiResponse(GNSS_NI_RESPONSE_DENY, mData); } else { mAdapter.requestNiNotify(mNotify, mData, false); } diff --git a/gnss/GnssAdapter.h b/gnss/GnssAdapter.h index ff8131f..136c5c0 100644 --- a/gnss/GnssAdapter.h +++ b/gnss/GnssAdapter.h @@ -319,8 +319,8 @@ public: void deleteAidingData(const GnssAidingData &data, uint32_t sessionId); void gnssUpdateXtraThrottleCommand(const bool enabled); std::vector<LocationError> gnssUpdateConfig(const std::string& oldMoServerUrl, - const GnssConfig& gnssConfigRequested, - const GnssConfig& gnssConfigNeedEngineUpdate, size_t count = 0); + GnssConfig& gnssConfigRequested, + GnssConfig& gnssConfigNeedEngineUpdate, size_t count = 0); /* ==== GNSS SV TYPE CONFIG ============================================================ */ /* ==== COMMANDS ====(Called from Client Thread)======================================== */ |