diff --git a/gps/core/LocApiBase.cpp b/gps/core/LocApiBase.cpp index 0d82d5a..ff14ddc 100644 --- a/gps/core/LocApiBase.cpp +++ b/gps/core/LocApiBase.cpp @@ -1171,7 +1171,7 @@ bool ElapsedRealtimeEstimator::getCurrentTime( struct timespec sinceBootTime = {}; struct timespec sinceBootTimeTest = {}; bool clockGetTimeSuccess = false; - const uint32_t MAX_TIME_DELTA_VALUE_NANOS = 10000; + const uint32_t MAX_TIME_DELTA_VALUE_NANOS = 2000000; // 2 milli-seconds const uint32_t MAX_GET_TIME_COUNT = 20; /* Attempt to get CLOCK_REALTIME and CLOCK_BOOTIME in succession without an interruption or context switch (for up to MAX_GET_TIME_COUNT times) to avoid errors in the calculation */ diff --git a/gps/gnss/GnssAdapter.cpp b/gps/gnss/GnssAdapter.cpp index ecd4ca6..bea8b7c 100644 --- a/gps/gnss/GnssAdapter.cpp +++ b/gps/gnss/GnssAdapter.cpp @@ -428,11 +428,15 @@ void GnssAdapter::fillElapsedRealTime(const GpsLocationExtended& locationExtende else if (out.timestamp > 0) { int64_t locationTimeNanos = (int64_t)out.timestamp * 1000000; bool isCurDataTimeTrustable = (out.timestamp % mLocPositionMode.min_interval == 0); - out.flags |= LOCATION_HAS_ELAPSED_REAL_TIME_BIT; - out.elapsedRealTime = mPositionElapsedRealTimeCal.getElapsedRealtimeEstimateNanos( + int64_t elapsedRealTime = mPositionElapsedRealTimeCal.getElapsedRealtimeEstimateNanos( locationTimeNanos, isCurDataTimeTrustable, (int64_t)mLocPositionMode.min_interval * 1000000); - out.elapsedRealTimeUnc = mPositionElapsedRealTimeCal.getElapsedRealtimeUncNanos(); + + if (elapsedRealTime != -1) { + out.flags |= LOCATION_HAS_ELAPSED_REAL_TIME_BIT; + out.elapsedRealTime = elapsedRealTime; + out.elapsedRealTimeUnc = mPositionElapsedRealTimeCal.getElapsedRealtimeUncNanos(); + } } #endif //FEATURE_AUTOMOTIVE }