From d2fa1a2ecdba240e93e34bdc3293851ea333d591 Mon Sep 17 00:00:00 2001 From: "Wei (GPS SD) Chen" Date: Wed, 27 Nov 2024 21:30:46 -0800 Subject: [PATCH] sm8450-common: gps: GNSS adapter: simplify getElapsed real time logic in PVT report Use qtimer tick cnt based approach first, if this does not work, always fill in with current elapsed real time. The logic to use qmi round trip time estimation is removed. CRs-fixed: 3841866 Change-Id: I02a74e7bfc905c669d50a5980ed8ac73e873c4f8 Signed-off-by: Fiqri Ardyansyah --- gps/core/LocApiBase.cpp | 6 +++--- gps/gnss/GnssAdapter.cpp | 22 +++++++--------------- 2 files changed, 10 insertions(+), 18 deletions(-) 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