DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
DAPHNEEthStreamFrameProcessor.cpp
Go to the documentation of this file.
1
11
12#include <atomic>
13#include <functional>
14#include <memory>
15#include <string>
16
19
20namespace dunedaq {
21namespace fdreadoutlibs {
22
23void
25{
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
35void
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
53 uint64_t k_clock_frequency = 62500000; // NOLINT(build/unsigned)
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) {
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
74}
75
79void
81{
82 // check error fields
83}
84
85} // namespace fdreadoutlibs
86} // namespace dunedaq
void conf(const appmodel::DataHandlerModule *conf) override
Set the emulator mode, if active, timestamps of processed packets are overwritten with new ones.
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112
#define TLOG(...)
Definition macro.hpp:22
The DUNE-DAQ namespace.