DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::utilities::TimestampEstimatorSystem Class Reference

TimestampEstimatorSystem is an implementation of TimestampEstimatorBase that uses the system clock to give the current timestamp. More...

#include <TimestampEstimatorSystem.hpp>

Inheritance diagram for dunedaq::utilities::TimestampEstimatorSystem:
[legend]
Collaboration diagram for dunedaq::utilities::TimestampEstimatorSystem:
[legend]

Public Member Functions

 TimestampEstimatorSystem (uint64_t clock_frequency_hz)
 
uint64_t get_timestamp_estimate () const override
 
std::chrono::microseconds get_wait_estimate (uint64_t ts) const override
 
- Public Member Functions inherited from dunedaq::utilities::TimestampEstimatorBase
virtual ~TimestampEstimatorBase ()=default
 
WaitStatus wait_for_valid_timestamp (std::atomic< bool > &continue_flag)
 Waits for a valid timestamp to become available. Returns a status value that indicates whether a valid timestamp is available or not.
 
WaitStatus wait_for_timestamp (uint64_t ts, std::atomic< bool > &continue_flag)
 

Private Attributes

uint64_t m_clock_frequency_hz
 

Additional Inherited Members

- Public Types inherited from dunedaq::utilities::TimestampEstimatorBase
enum  WaitStatus { kFinished , kInterrupted }
 

Detailed Description

TimestampEstimatorSystem is an implementation of TimestampEstimatorBase that uses the system clock to give the current timestamp.

Definition at line 22 of file TimestampEstimatorSystem.hpp.

Constructor & Destructor Documentation

◆ TimestampEstimatorSystem()

dunedaq::utilities::TimestampEstimatorSystem::TimestampEstimatorSystem ( uint64_t clock_frequency_hz)
explicit

Definition at line 18 of file TimestampEstimatorSystem.cpp.

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}
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112

Member Function Documentation

◆ get_timestamp_estimate()

uint64_t dunedaq::utilities::TimestampEstimatorSystem::get_timestamp_estimate ( ) const
overridevirtual

Implements dunedaq::utilities::TimestampEstimatorBase.

Definition at line 26 of file TimestampEstimatorSystem.cpp.

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}
static int64_t now()

◆ get_wait_estimate()

std::chrono::microseconds dunedaq::utilities::TimestampEstimatorSystem::get_wait_estimate ( uint64_t ts) const
overridevirtual

Implements dunedaq::utilities::TimestampEstimatorBase.

Definition at line 34 of file TimestampEstimatorSystem.cpp.

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}
PDS Frame with unphysical timestamp detected with ts

Member Data Documentation

◆ m_clock_frequency_hz

uint64_t dunedaq::utilities::TimestampEstimatorSystem::m_clock_frequency_hz
private

Definition at line 32 of file TimestampEstimatorSystem.hpp.


The documentation for this class was generated from the following files: