DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TimestampEstimatorSystem.cpp
Go to the documentation of this file.
1
10
11#include "logging/Logging.hpp"
12
13#include <chrono>
14
15namespace dunedaq {
16namespace utilities {
17
18TimestampEstimatorSystem::TimestampEstimatorSystem(uint64_t clock_frequency_hz) // NOLINT(build/unsigned)
19 : m_clock_frequency_hz(clock_frequency_hz)
20{
21 TLOG_DEBUG(0) << "Clock frequency is " << m_clock_frequency_hz
22 << " clock_frequency_hz/1000000.=" << (m_clock_frequency_hz / 1000000.);
23}
24
25uint64_t
27{
28 auto now = std::chrono::system_clock::now().time_since_epoch();
29 auto now_us = std::chrono::duration_cast<std::chrono::microseconds>(now);
30 return (m_clock_frequency_hz / 1000000.) * now_us.count();
31}
32
33std::chrono::microseconds
35{
36 auto now = std::chrono::system_clock::now().time_since_epoch();
37 auto now_us = std::chrono::duration_cast<std::chrono::microseconds>(now);
38 auto then = static_cast<long>(ts * 1000000. / m_clock_frequency_hz);
39 auto then_us = std::chrono::microseconds(then);
40 if (then_us < now_us)
41 return std::chrono::microseconds(0);
42 return then_us - now_us;
43}
44
45} // namespace utilities
46} // namespace dunedaq
std::chrono::microseconds get_wait_estimate(uint64_t ts) const override
static int64_t now()
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112
Including Qt Headers.
PDS Frame with unphysical timestamp detected with ts