LCOV - code coverage report
Current view: top level - fdreadoutlibs/src/daphne - DAPHNEStreamFrameProcessor.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 19 0
Test Date: 2025-12-21 13:07:08 Functions: 0.0 % 5 0

            Line data    Source code
       1              : /**
       2              :  * @file DAPHNEStreamFrameProcessor.hpp DAPHNE specific Task based raw processor
       3              :  * implementation for streaming mode
       4              :  *
       5              :  * This is part of the DUNE DAQ , copyright 2020.
       6              :  * Licensing/copyright details are in the COPYING file that you should have
       7              :  * received with this code.
       8              :  */
       9              : #include "fddetdataformats/DAPHNEStreamFrame.hpp"
      10              : #include "fdreadoutlibs/daphne/DAPHNEStreamFrameProcessor.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            0 : DAPHNEStreamFrameProcessor::conf(const appmodel::DataHandlerModule* conf)
      25              : {
      26            0 :   datahandlinglibs::TaskRawDataProcessorModel<types::DAPHNEStreamSuperChunkTypeAdapter>::add_preprocess_task(
      27            0 :     std::bind(&DAPHNEStreamFrameProcessor::timestamp_check, this, std::placeholders::_1));
      28              :   // m_tasklist.push_back( std::bind(&DAPHNEStreamFrameProcessor::frame_error_check, this, std::placeholders::_1) );
      29            0 :   TaskRawDataProcessorModel<types::DAPHNEStreamSuperChunkTypeAdapter>::conf(conf);
      30            0 : }
      31              : 
      32              : /**
      33              :  * Pipeline Stage 1.: Check proper timestamp increments in DAPHNE frame
      34              :  * */
      35              : void 
      36            0 : DAPHNEStreamFrameProcessor::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            0 :   m_current_ts = fp->get_timestamp();
      53            0 :   uint64_t k_clock_frequency = 62500000; // NOLINT(build/unsigned)
      54            0 :   TLOG_DEBUG(TLVL_FRAME_RECEIVED) << "Received DAPHNEStream 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
      55              : 
      56              :   // Check timestamp
      57              :   // RS warning : not fixed rate!
      58              :   // if (m_current_ts - m_previous_ts != ???) {
      59              :   //  ++m_ts_error_ctr;
      60              :   //}
      61              : 
      62            0 :   if (m_ts_error_ctr > 1000) {
      63            0 :     if (!m_problem_reported) {
      64            0 :       TLOG() << "*** Data Integrity ERROR *** Timestamp continuity is completely broken! "
      65            0 :              << "Something is wrong with the FE source or with the configuration!";
      66            0 :       m_problem_reported = true;
      67              :     }
      68              :   }
      69              : 
      70            0 :   m_previous_ts = m_current_ts;
      71            0 :   m_last_processed_daq_ts = m_current_ts;
      72            0 : }
      73              : 
      74              : /**
      75              :  * Pipeline Stage 2.: Check DAPHNE headers for error flags
      76              :  * */
      77              : void 
      78            0 : DAPHNEStreamFrameProcessor::frame_error_check(frameptr /*fp*/)
      79              : {
      80              :   // check error fields
      81            0 : }
      82              : 
      83              : } // namespace fdreadoutlibs
      84              : } // namespace dunedaq
        

Generated by: LCOV version 2.0-1