diff --git a/gps/core/LocApiBase.cpp b/gps/core/LocApiBase.cpp index 9c09679..1bf8aee 100644 --- a/gps/core/LocApiBase.cpp +++ b/gps/core/LocApiBase.cpp @@ -1141,13 +1141,13 @@ bool ElapsedRealtimeEstimator::getElapsedRealtimeForGpsTime( (int64_t)timePair.gpsTime.gpsTimeOfWeekMs; gpsTimeDiffMsec = originMsec - timePairMsec; - qtimerNsecAtOrigin = timePair.qtimerTick * 10000/192 + gpsTimeDiffMsec * 1000000; + qtimerNsecAtOrigin = timePair.qtimerTick /192 * 10000 + gpsTimeDiffMsec * 1000000; clock_gettime(CLOCK_BOOTTIME, &curBootTime); curBootTimeNs = ((int64_t)curBootTime.tv_sec) * 1000000000 + (int64_t)curBootTime.tv_nsec; // qtimer freq: 19200000, so // so 1 tick equals 1000,000,000/19,200,000 ns = 10000/192 - curQTimerNSec = getQTimerTickCount() * 10000/192; + curQTimerNSec = getQTimerTickCount() /192 * 10000; bootTimeNsAtOrigin = curBootTimeNs - (curQTimerNSec - qtimerNsecAtOrigin); bootTimeUnc = timePair.timeUncMsec; @@ -1156,7 +1156,7 @@ bool ElapsedRealtimeEstimator::getElapsedRealtimeForGpsTime( " curBoottimeNSec=%" PRIi64 " bootimeNsecAtOrigin=%" PRIi64 ", boottime unc =%f", gpsTimeAtOrigin.gpsWeek, gpsTimeAtOrigin.gpsTimeOfWeekMs, timePair.gpsTime.gpsWeek, timePair.gpsTime.gpsTimeOfWeekMs, - timePair.qtimerTick * 100000 / 192, + timePair.qtimerTick/192 * 100000, curQTimerNSec, qtimerNsecAtOrigin, curBootTimeNs, bootTimeNsAtOrigin, bootTimeUnc); if (bootTimeNsAtOrigin > 0) { diff --git a/gps/gnss/GnssAdapter.cpp b/gps/gnss/GnssAdapter.cpp index 20c1a9f..ce2f4d4 100644 --- a/gps/gnss/GnssAdapter.cpp +++ b/gps/gnss/GnssAdapter.cpp @@ -424,22 +424,14 @@ void GnssAdapter::fillElapsedRealTime(const GpsLocationExtended& locationExtende out.elapsedRealTime = elapsedTimeNs; out.elapsedRealTimeUnc = (int64_t) (elapsedTimeUncMsec * 1000000); } -#ifndef FEATURE_AUTOMOTIVE - else if (out.timestamp > 0) { - int64_t locationTimeNanos = (int64_t)out.timestamp * 1000000; - bool isCurDataTimeTrustable = (out.timestamp % mLocPositionMode.min_interval == 0); - int64_t elapsedRealTime = mPositionElapsedRealTimeCal.getElapsedRealtimeEstimateNanos( - locationTimeNanos, isCurDataTimeTrustable, - (int64_t)mLocPositionMode.min_interval * 1000000); - - if (elapsedRealTime != -1) { - out.flags |= LOCATION_HAS_ELAPSED_REAL_TIME_BIT; - out.elapsedRealTime = elapsedRealTime; - out.elapsedRealTimeUnc = mPositionElapsedRealTimeCal.getElapsedRealtimeUncNanos(); - } - } + } +#ifndef FEATURE_AUTOMOTIVE + if (!(out.flags & LOCATION_HAS_ELAPSED_REAL_TIME_BIT)) { + out.elapsedRealTime = getBootTimeMilliSec() * 1000000; + out.elapsedRealTimeUnc = mPositionElapsedRealTimeCal.getElapsedRealtimeUncNanos(); + out.flags |= LOCATION_HAS_ELAPSED_REAL_TIME_BIT; + } #endif //FEATURE_AUTOMOTIVE - } } /* This is utility routine that computes number of SV used