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 <fiqri191002@gmail.com>
This commit is contained in:
Wei (GPS SD) Chen
2024-11-27 21:30:46 -08:00
committed by Joey
parent 978c20a495
commit d2fa1a2ecd
2 changed files with 10 additions and 18 deletions

View File

@@ -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) {

View File

@@ -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