DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TimestampEstimator.hpp
Go to the documentation of this file.
1
9#ifndef UTILITIES_INCLUDE_UTILITIES_TIMESTAMPESTIMATOR_HPP_
10#define UTILITIES_INCLUDE_UTILITIES_TIMESTAMPESTIMATOR_HPP_
11
13#include "utilities/Issues.hpp"
14
15#include <atomic>
16#include <memory>
17#include <mutex>
18
19namespace dunedaq {
20namespace utilities {
21
28{
29public:
30 TimestampEstimator(uint32_t run_number, uint64_t clock_frequency_hz);
31
32 explicit TimestampEstimator(uint64_t clock_frequency_hz); // NOLINT(build/unsigned)
33
34 virtual ~TimestampEstimator();
35
36 uint64_t get_timestamp_estimate() const override;
37
38 std::chrono::microseconds get_wait_estimate(uint64_t ts) const override;
39
40 void add_timestamp_datapoint(uint64_t daq_time, uint64_t system_time);
41
42 template <class T>
43 void timesync_callback(const T& tsync);
44
45 uint64_t get_received_timesync_count() const { return m_received_timesync_count.load(); }
46private:
47
49 uint64_t daq_time;
50 std::chrono::time_point<std::chrono::steady_clock> system_time;
51 };
52
53 std::atomic<TimeSyncPoint> m_current_timestamp_estimate;
54
55
56 uint64_t m_clock_frequency_hz; // NOLINT(build/unsigned)
60 uint32_t m_run_number {0};
61 std::atomic<uint64_t> m_received_timesync_count; // NOLINT(build/unsigned)
63};
64
65} // namespace utilities
66} // namespace dunedaq
67
69
70#endif // UTILITIES_INCLUDE_UTILITIES_TIMESTAMPESTIMATOR_HPP_
TimestampEstimatorBase is the base class for timestamp-based logic in test systems where the current ...
TimestampEstimator is an implementation of TimestampEstimatorBase that uses TimeSync messages from an...
std::atomic< TimeSyncPoint > m_current_timestamp_estimate
std::atomic< uint64_t > m_received_timesync_count
uint64_t get_timestamp_estimate() const override
Returns the current timestamp estimate or a special value if no valid timestamp is available.
std::chrono::microseconds get_wait_estimate(uint64_t ts) const override
void add_timestamp_datapoint(uint64_t daq_time, uint64_t system_time)
TimestampEstimator(uint32_t run_number, uint64_t clock_frequency_hz)
Including Qt Headers.
PDS Frame with unphysical timestamp detected with ts
std::chrono::time_point< std::chrono::steady_clock > system_time