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:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user