diff options
Diffstat (limited to 'android/2.1/location_api/LocationUtil.cpp')
-rw-r--r-- | android/2.1/location_api/LocationUtil.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/android/2.1/location_api/LocationUtil.cpp b/android/2.1/location_api/LocationUtil.cpp index 47c3884..324f0ad 100644 --- a/android/2.1/location_api/LocationUtil.cpp +++ b/android/2.1/location_api/LocationUtil.cpp @@ -145,12 +145,17 @@ void convertGnssLocation(Location& in, V2_0::GnssLocation& out) if (currentTimeNanos >= locationTimeNanos) { int64_t ageTimeNanos = currentTimeNanos - locationTimeNanos; LOC_LOGD("%s]: ageTimeNanos:%" PRIi64 ")", __FUNCTION__, ageTimeNanos); - if (ageTimeNanos >= 0 && ageTimeNanos <= sinceBootTimeNanos) { + // the max trusted propagation time 30s for ageTimeNanos to avoid user setting + //wrong time, it will affect elapsedRealtimeNanos + if (ageTimeNanos >= 0 && ageTimeNanos <= 30000000000) { out.elapsedRealtime.flags |= ElapsedRealtimeFlags::HAS_TIMESTAMP_NS; out.elapsedRealtime.timestampNs = sinceBootTimeNanos - ageTimeNanos; out.elapsedRealtime.flags |= ElapsedRealtimeFlags::HAS_TIME_UNCERTAINTY_NS; - // time uncertainty is 1 ms since it is calculated from utc time that is in ms - out.elapsedRealtime.timeUncertaintyNs = 1000000; + // time uncertainty is the max value between abs(AP_UTC - MP_UTC) and 100ms, to + //verify if user change the sys time + out.elapsedRealtime.timeUncertaintyNs = + std::max((int64_t)abs(currentTimeNanos - locationTimeNanos), + (int64_t)100000000); LOC_LOGD("%s]: timestampNs:%" PRIi64 ")", __FUNCTION__, out.elapsedRealtime.timestampNs); } |