DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TimestampEstimatorBase.hpp
Go to the documentation of this file.
1
11#ifndef UTILITIES_INCLUDE_UTILITIES_TIMESTAMPESTIMATORBASE_HPP_
12#define UTILITIES_INCLUDE_UTILITIES_TIMESTAMPESTIMATORBASE_HPP_
13
14#include <atomic>
15#include <chrono>
16#include <limits>
17
18namespace dunedaq::utilities {
19
26{
27public:
28 static constexpr uint64_t s_invalid_ts = std::numeric_limits<uint64_t>::max(); // NOLINT(build/unsigned)
29
30 virtual ~TimestampEstimatorBase() = default;
31 virtual uint64_t get_timestamp_estimate() const = 0; // NOLINT(build/unsigned)
32 virtual std::chrono::microseconds get_wait_estimate(uint64_t ts) const = 0; // NOLINT(build/unsigned)
33
39
47 WaitStatus wait_for_valid_timestamp(std::atomic<bool>& continue_flag)
48 {
49 uint64_t ts_discard = s_invalid_ts; // NOLINT(build/unsigned)
50 return wait_for_valid_timestamp(continue_flag, ts_discard);
51 }
52 WaitStatus wait_for_valid_timestamp(std::atomic<bool>& continue_flag,
53 uint64_t& last_seen_ts); // NOLINT(build/unsigned)
54
61 WaitStatus wait_for_requested_timestamp(uint64_t ts, std::atomic<bool>& continue_flag) // NOLINT(build/unsigned)
62 {
63 uint64_t ts_discard = s_invalid_ts; // NOLINT(build/unsigned)
64 return wait_for_requested_timestamp(ts, continue_flag, ts_discard);
65 }
66 WaitStatus wait_for_requested_timestamp(uint64_t ts, // NOLINT(build/unsigned)
67 std::atomic<bool>& continue_flag,
68 uint64_t& last_seen_ts); // NOLINT(build/unsigned)
69};
70
71} // namespace dunedaq::utilities
72
73#endif // UTILITIES_INCLUDE_UTILITIES_TIMESTAMPESTIMATORBASE_HPP_
TimestampEstimatorBase is the base class for timestamp-based logic in test systems where the current ...
WaitStatus wait_for_requested_timestamp(uint64_t ts, std::atomic< bool > &continue_flag)
WaitStatus wait_for_valid_timestamp(std::atomic< bool > &continue_flag)
virtual std::chrono::microseconds get_wait_estimate(uint64_t ts) const =0
virtual uint64_t get_timestamp_estimate() const =0
PDS Frame with unphysical timestamp detected with ts