DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
fdreadoutlibs
src
daphneeth
DAPHNEEthStreamFrameProcessor.cpp
Go to the documentation of this file.
1
9
#include "
fddetdataformats/DAPHNEEthStreamFrame.hpp
"
10
#include "
fdreadoutlibs/daphneeth/DAPHNEEthStreamFrameProcessor.hpp
"
11
12
#include <atomic>
13
#include <functional>
14
#include <memory>
15
#include <string>
16
17
using
dunedaq::datahandlinglibs::logging::TLVL_BOOKKEEPING
;
18
using
dunedaq::datahandlinglibs::logging::TLVL_FRAME_RECEIVED
;
19
20
namespace
dunedaq
{
21
namespace
fdreadoutlibs
{
22
23
void
24
DAPHNEEthStreamFrameProcessor::conf
(
const
appmodel::DataHandlerModule
*
conf
)
25
{
26
datahandlinglibs::TaskRawDataProcessorModel<types::DAPHNEEthStreamTypeAdapter>::add_preprocess_task
(
27
std::bind(&
DAPHNEEthStreamFrameProcessor::timestamp_check
,
this
, std::placeholders::_1));
28
// m_tasklist.push_back( std::bind(&DAPHNEStreamFrameProcessor::frame_error_check, this, std::placeholders::_1) );
29
TaskRawDataProcessorModel<types::DAPHNEEthStreamTypeAdapter>::conf
(
conf
);
30
}
31
35
void
36
DAPHNEEthStreamFrameProcessor::timestamp_check
(
frameptr
fp)
37
{
38
/* Let Source Emulator deal with this
39
// If EMU data, emulate perfectly incrementing timestamp
40
if (inherited::m_emulator_mode) { // emulate perfectly incrementing timestamp
41
uint64_t ts_next = m_previous_ts + 64; // NOLINT(build/unsigned)
42
auto df = reinterpret_cast<daphneframeptr>(((uint8_t*)fp)); // NOLINT
43
for (unsigned int i = 0; i < fp->get_num_frames(); ++i) { // NOLINT(build/unsigned)
44
//auto wfh = const_cast<dunedaq::fddetdataformats::WIB2Header*>(wf->get_wib_header());
45
df->set_timestamp(ts_next);
46
ts_next += 64;
47
df++;
48
}
49
}
50
*/
51
// Acquire timestamp
52
m_current_ts
= fp->
get_timestamp
();
53
uint64_t k_clock_frequency = 62500000;
// NOLINT(build/unsigned)
54
uint16_t tick_difference =
types::DAPHNEEthStreamTypeAdapter::expected_tick_difference
;
55
uint16_t frame_tick_difference = tick_difference * fp->
get_num_frames
();
56
TLOG_DEBUG
(
TLVL_FRAME_RECEIVED
) <<
"Received DAPHNEEthStream frame timestamp value of "
<<
m_current_ts
<<
" ticks (..."
<< std::fixed << std::setprecision(8) << (static_cast<double>(
m_current_ts
% (k_clock_frequency*1000)) /
static_cast<
double
>
(k_clock_frequency)) <<
" sec)"
;
// NOLINT
57
58
// Check timestamp
59
// RS warning : not fixed rate!
60
if
(
m_current_ts
-
m_previous_ts
!= frame_tick_difference) {
61
++
m_ts_error_ctr
;
62
}
63
64
if
(
m_ts_error_ctr
> 1000) {
65
if
(!
m_problem_reported
) {
66
TLOG
() <<
"*** Data Integrity ERROR *** Timestamp continuity is completely broken! "
67
<<
"Something is wrong with the FE source or with the configuration!"
;
68
m_problem_reported
=
true
;
69
}
70
}
71
72
m_previous_ts
=
m_current_ts
;
73
m_last_processed_daq_ts
=
m_current_ts
;
74
}
75
79
void
80
DAPHNEEthStreamFrameProcessor::frame_error_check
(
frameptr
/*fp*/
)
81
{
82
// check error fields
83
}
84
85
}
// namespace fdreadoutlibs
86
}
// namespace dunedaq
DAPHNEEthStreamFrameProcessor.hpp
DAPHNEEthStreamFrame.hpp
TLVL_FRAME_RECEIVED
@ TLVL_FRAME_RECEIVED
Definition
ReadoutLogging.hpp:28
dunedaq::appmodel::DataHandlerModule
Definition
DataHandlerModule.hpp:36
dunedaq::datahandlinglibs::TaskRawDataProcessorModel::add_preprocess_task
void add_preprocess_task(Task &&task)
Definition
TaskRawDataProcessorModel.hxx:73
dunedaq::datahandlinglibs::TaskRawDataProcessorModel< types::DAPHNEEthStreamTypeAdapter >::TaskRawDataProcessorModel
TaskRawDataProcessorModel(std::unique_ptr< FrameErrorRegistry > &error_registry, bool post_processing_enabled)
Definition
TaskRawDataProcessorModel.hpp:50
dunedaq::datahandlinglibs::TaskRawDataProcessorModel< types::DAPHNEEthStreamTypeAdapter >::m_last_processed_daq_ts
std::atomic< uint64_t > m_last_processed_daq_ts
Definition
TaskRawDataProcessorModel.hpp:126
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::conf
void conf(const appmodel::DataHandlerModule *conf) override
Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.
Definition
DAPHNEEthStreamFrameProcessor.cpp:24
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::m_problem_reported
bool m_problem_reported
Definition
DAPHNEEthStreamFrameProcessor.hpp:64
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::frame_error_check
void frame_error_check(frameptr)
Definition
DAPHNEEthStreamFrameProcessor.cpp:80
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::m_previous_ts
timestamp_t m_previous_ts
Definition
DAPHNEEthStreamFrameProcessor.hpp:60
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::frameptr
types::DAPHNEEthStreamTypeAdapter * frameptr
Definition
DAPHNEEthStreamFrameProcessor.hpp:37
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::m_ts_error_ctr
std::atomic< int > m_ts_error_ctr
Definition
DAPHNEEthStreamFrameProcessor.hpp:65
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::m_current_ts
timestamp_t m_current_ts
Definition
DAPHNEEthStreamFrameProcessor.hpp:61
dunedaq::fdreadoutlibs::DAPHNEEthStreamFrameProcessor::timestamp_check
void timestamp_check(frameptr)
Definition
DAPHNEEthStreamFrameProcessor.cpp:36
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:112
TLOG
#define TLOG(...)
Definition
macro.hpp:22
dunedaq::datahandlinglibs::logging::TLVL_BOOKKEEPING
@ TLVL_BOOKKEEPING
Definition
ReadoutLogging.hpp:26
dunedaq::datahandlinglibs::logging::TLVL_FRAME_RECEIVED
@ TLVL_FRAME_RECEIVED
Definition
ReadoutLogging.hpp:28
dunedaq::fdreadoutlibs
Definition
CRTBernFrameProcessor.hpp:16
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter::get_timestamp
uint64_t get_timestamp() const
Definition
DAPHNEEthStreamTypeAdapter.hpp:31
dunedaq::fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter::get_num_frames
constexpr size_t get_num_frames() const
Definition
DAPHNEEthStreamTypeAdapter.hpp:84
dunedaq::fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter::expected_tick_difference
static const constexpr uint64_t expected_tick_difference
Definition
DAPHNEEthStreamTypeAdapter.hpp:90
Generated on
for DUNE-DAQ by
1.17.0