diff options
author | Yan Huang <huang@codeaurora.org> | 2020-12-09 16:28:16 -0800 |
---|---|---|
committer | Yan Huang <huang@codeaurora.org> | 2021-01-04 15:14:30 -0800 |
commit | f12ef701397089229defaf6be341fcf2f9d5eed0 (patch) | |
tree | 62284dcd56ab8d520a23a4abbb5053c019b3978d | |
parent | 5c0b4cdce579822ba1b9cee31eca8a14e0a0124d (diff) |
Do not stop DgnssNtirpSource in the active session
start DgnssNtripSource when
1. A TimeBasedTracking session is started
2. Restart a session
Stop DgnssNtripSource when
1. stopFix is called
2. Suspend a session
Change-Id: I738ca4b33f093f94a21d9a258e67bee15224097b
CRs-Fixed: 2834275
-rw-r--r-- | gnss/GnssAdapter.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index 003acbe..d0957a8 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -2606,6 +2606,7 @@ GnssAdapter::restartSessions(bool modemSSR) // inform engine hub that GNSS session is about to start mEngHubProxy->gnssSetFixMode(mLocPositionMode); mEngHubProxy->gnssStartFix(); + checkUpdateDgnssNtrip(false); } checkAndRestartSPESession(); @@ -2638,6 +2639,10 @@ GnssAdapter::suspendSessions() // inform engine hub that GNSS session has stopped mEngHubProxy->gnssStopFix(); mLocApi->stopFix(nullptr); + if (isDgnssNmeaRequired()) { + mDgnssState &= ~DGNSS_STATE_NO_NMEA_PENDING; + } + stopDgnssNtrip(); mSPEAlreadyRunningAtHighestInterval = false; } } @@ -2834,7 +2839,6 @@ GnssAdapter::saveTrackingSession(LocationAPI* client, uint32_t sessionId, mTimeBasedTrackingSessions[key] = options; } reportPowerStateIfChanged(); - checkUpdateDgnssNtrip(false); } void @@ -2851,16 +2855,8 @@ GnssAdapter::eraseTrackingSession(LocationAPI* client, uint32_t sessionId) } } reportPowerStateIfChanged(); - - if (mSendNmeaConsent && mStartDgnssNtripParams.ntripParams.requiresNmeaLocation) { - LOC_LOGd("requiresNmeaLocation"); - mDgnssState &= ~DGNSS_STATE_NO_NMEA_PENDING; - mStartDgnssNtripParams.nmea.clear(); - } - stopDgnssNtrip(); } - bool GnssAdapter::setLocPositionMode(const LocPosMode& mode) { if (!mLocPositionMode.equals(mode)) { mLocPositionMode = mode; @@ -3078,6 +3074,8 @@ GnssAdapter::startTimeBasedTracking(LocationAPI* client, uint32_t sessionId, [this, client, sessionId] (LocationError err) { if (LOCATION_ERROR_SUCCESS != err) { eraseTrackingSession(client, sessionId); + } else { + checkUpdateDgnssNtrip(false); } reportResponse(client, err, sessionId); @@ -3419,6 +3417,11 @@ GnssAdapter::stopTracking(LocationAPI* client, uint32_t id) reportResponse(client, err, id); })); + if (isDgnssNmeaRequired()) { + mDgnssState &= ~DGNSS_STATE_NO_NMEA_PENDING; + } + stopDgnssNtrip(); + mSPEAlreadyRunningAtHighestInterval = false; } @@ -6785,9 +6788,6 @@ void GnssAdapter::enablePPENtripStreamCommand(const GnssNtripConnectionParams& p } void GnssAdapter::handleEnablePPENtrip(const GnssNtripConnectionParams& params) { - - LOC_LOGd("isInSession %d mDgnssState 0x%x", isInSession(), mDgnssState); - LOC_LOGd("%d %s %d %s %s %s %d mSendNmeaConsent %d", params.useSSL, params.hostNameOrIp.data(), params.port, params.mountPoint.data(), params.username.data(), params.password.data(), @@ -6801,7 +6801,8 @@ void GnssAdapter::handleEnablePPENtrip(const GnssNtripConnectionParams& params) 0 == pNtripParams->mountPoint.compare(params.mountPoint) && 0 == pNtripParams->username.compare(params.username) && 0 == pNtripParams->password.compare(params.password) && - params.requiresNmeaLocation == params.requiresNmeaLocation) { + pNtripParams->requiresNmeaLocation == params.requiresNmeaLocation && + mDgnssState & DGNSS_STATE_ENABLE_NTRIP_COMMAND) { LOC_LOGd("received same Ntrip param"); return; } @@ -6836,13 +6837,14 @@ void GnssAdapter::disablePPENtripStreamCommand() { } void GnssAdapter::handleDisablePPENtrip() { - mStartDgnssNtripParams.clear(); mDgnssState &= ~DGNSS_STATE_ENABLE_NTRIP_COMMAND; mDgnssState |= DGNSS_STATE_NO_NMEA_PENDING; stopDgnssNtrip(); } void GnssAdapter::checkUpdateDgnssNtrip(bool isLocationValid) { + LOC_LOGd("isInSession %d mDgnssState 0x%x isLocationValid %d", + isInSession(), mDgnssState, isLocationValid); if (isInSession()) { uint64_t curBootTime = getBootTimeMilliSec(); if (mDgnssState == (DGNSS_STATE_ENABLE_NTRIP_COMMAND | DGNSS_STATE_NO_NMEA_PENDING)) { @@ -6861,12 +6863,11 @@ void GnssAdapter::checkUpdateDgnssNtrip(bool isLocationValid) { } void GnssAdapter::stopDgnssNtrip() { + LOC_LOGd("isInSession %d mDgnssState 0x%x", isInSession(), mDgnssState); + mStartDgnssNtripParams.nmea.clear(); if (mDgnssState & DGNSS_STATE_NTRIP_SESSION_STARTED) { mDgnssState &= ~DGNSS_STATE_NTRIP_SESSION_STARTED; mXtraObserver.stopDgnssSource(); - } else { - LOC_LOGd("isInSession %d mDgnssState 0x%x", - isInSession(), mDgnssState); } } |