From 1ed62f38f32b219f1eb7e9e06024f9fa86eb58bc Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Thu, 5 Sep 2019 17:09:18 +0200 Subject: lib: update from common code cdf104a and 2847f4d --- lib/edi/common.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'lib/edi/common.cpp') diff --git a/lib/edi/common.cpp b/lib/edi/common.cpp index b4b0c79..4629b55 100644 --- a/lib/edi/common.cpp +++ b/lib/edi/common.cpp @@ -61,6 +61,25 @@ time_t frame_timestamp_t::to_unix_epoch() const return 946684800 + seconds - utco; } +double frame_timestamp_t::diff_ms(const frame_timestamp_t& other) const +{ + const double lhs = (double)seconds + (tsta / 16384000.0); + const double rhs = (double)other.seconds + (other.tsta / 16384000.0); + return lhs - rhs; +} + +frame_timestamp_t frame_timestamp_t::from_unix_epoch(std::time_t time, uint32_t tai_utc_offset, uint32_t tsta) +{ + frame_timestamp_t ts; + + const std::time_t posix_timestamp_1_jan_2000 = 946684800; + + ts.utco = tai_utc_offset - 32; + ts.seconds = time - posix_timestamp_1_jan_2000 + ts.utco; + ts.tsta = tsta; + return ts; +} + std::chrono::system_clock::time_point frame_timestamp_t::to_system_clock() const { auto ts = chrono::system_clock::from_time_t(to_unix_epoch()); @@ -202,7 +221,7 @@ decode_state_t TagDispatcher::decode_afpacket( return {false, 0}; } - if (m_last_seq + 1 != seq) { + if (m_last_seq + (uint16_t)1 != seq) { etiLog.level(warn) << "EDI AF Packet sequence error, " << seq; } m_last_seq = seq; -- cgit v1.2.3