diff --git a/core/LocAdapterBase.h b/core/LocAdapterBase.h index 722947af..ca23e652 100644 --- a/core/LocAdapterBase.h +++ b/core/LocAdapterBase.h @@ -34,6 +34,8 @@ #include #include +#define MIN_TRACKING_INTERVAL (100) // 100 msec + typedef struct LocationSessionKey { LocationAPI* client; uint32_t id; diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index fe02db13..dfb70dac 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -2336,6 +2336,9 @@ GnssAdapter::startTrackingCommand(LocationAPI* client, TrackingOptions& options) mTrackingOptions.tbm, TRACKING_TBM_THRESHOLD_MILLIS); mTrackingOptions.powerMode = GNSS_POWER_MODE_M2; } + if (mTrackingOptions.minInterval < MIN_TRACKING_INTERVAL) { + mTrackingOptions.minInterval = MIN_TRACKING_INTERVAL; + } // Api doesn't support multiple clients for time based tracking, so mutiplex bool reportToClientWithNoWait = mAdapter.startTrackingMultiplex(mClient, mSessionId, mTrackingOptions); @@ -2394,6 +2397,7 @@ GnssAdapter::startTrackingMultiplex(LocationAPI* client, uint32_t sessionId, } if (updateOptions) { // restart time based tracking with the newly updated options + startTracking(client, sessionId, multiplexedOptions); // need to wait for QMI callback reportToClientWithNoWait = false; @@ -2408,6 +2412,10 @@ void GnssAdapter::startTracking(LocationAPI* client, uint32_t sessionId, const TrackingOptions& trackingOptions) { + LOC_LOGd("minInterval %u minDistance %u mode %u powermode %u tbm %u", + trackingOptions.minInterval, trackingOptions.minDistance, + trackingOptions.mode, trackingOptions.powerMode, trackingOptions.tbm); + LocPosMode locPosMode = {}; convertOptions(locPosMode, trackingOptions); @@ -2520,6 +2528,9 @@ GnssAdapter::updateTrackingOptionsCommand(LocationAPI* client, uint32_t id, mTrackingOptions.tbm, TRACKING_TBM_THRESHOLD_MILLIS); mTrackingOptions.powerMode = GNSS_POWER_MODE_M2; } + if (mTrackingOptions.minInterval < MIN_TRACKING_INTERVAL) { + mTrackingOptions.minInterval = MIN_TRACKING_INTERVAL; + } // Api doesn't support multiple clients for time based tracking, so mutiplex bool reportToClientWithNoWait = mAdapter.updateTrackingMultiplex(mClient, mSessionId, mTrackingOptions);