DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
utilities
src
TimestampEstimatorSystem.cpp
Go to the documentation of this file.
1
8
9
#include "
utilities/TimestampEstimatorSystem.hpp
"
10
11
#include "
logging/Logging.hpp
"
12
13
#include <chrono>
14
15
namespace
dunedaq::utilities
{
16
17
TimestampEstimatorSystem::TimestampEstimatorSystem
(uint64_t clock_frequency_hz)
// NOLINT(build/unsigned)
18
:
m_clock_frequency_hz
(clock_frequency_hz)
19
{
20
TLOG_DEBUG
(0) <<
"Clock frequency is "
<<
m_clock_frequency_hz
21
<<
" clock_frequency_hz/1000000.="
<< (
static_cast<
double
>
(
m_clock_frequency_hz
) / 1000000.);
22
}
23
24
uint64_t
// NOLINT(build/unsigned)
25
TimestampEstimatorSystem::get_timestamp_estimate
()
const
26
{
27
auto
now
= std::chrono::system_clock::now().time_since_epoch();
28
auto
now_us = std::chrono::duration_cast<std::chrono::microseconds>(
now
);
29
return
static_cast<
uint64_t
>
((
static_cast<
double
>
(
m_clock_frequency_hz
) / 1000000.) *
// NOLINT
30
static_cast<
double
>
(now_us.count()));
31
}
32
33
std::chrono::microseconds
34
TimestampEstimatorSystem::get_wait_estimate
(uint64_t ts)
const
// NOLINT(build/unsigned)
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<
std::chrono::microseconds::rep
>
(
static_cast<
double
>
(ts) * 1000000. /
39
static_cast<
double
>
(
m_clock_frequency_hz
));
40
auto
then_us = std::chrono::microseconds(then);
41
if
(then_us < now_us)
42
return
std::chrono::microseconds(0);
43
return
then_us - now_us;
44
}
45
46
}
// namespace dunedaq::utilities
TimestampEstimatorSystem.hpp
dunedaq::utilities::TimestampEstimatorSystem::get_timestamp_estimate
uint64_t get_timestamp_estimate() const override
Definition
TimestampEstimatorSystem.cpp:25
dunedaq::utilities::TimestampEstimatorSystem::get_wait_estimate
std::chrono::microseconds get_wait_estimate(uint64_t ts) const override
Definition
TimestampEstimatorSystem.cpp:34
dunedaq::utilities::TimestampEstimatorSystem::m_clock_frequency_hz
uint64_t m_clock_frequency_hz
Definition
TimestampEstimatorSystem.hpp:31
dunedaq::utilities::TimestampEstimatorSystem::TimestampEstimatorSystem
TimestampEstimatorSystem(uint64_t clock_frequency_hz)
Definition
TimestampEstimatorSystem.cpp:17
now
static int64_t now()
Definition
kafka_opmon_consumer.cxx:44
Logging.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:112
dunedaq::utilities
Definition
TimestampEstimatorTimeSync.hxx:3
Generated on
for DUNE-DAQ by
1.17.0