LCOV - code coverage report
Current view: top level - fdreadoutmodules/plugins - FDFakeReaderModule.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 117 0
Test Date: 2026-10-11 15:05:20 Functions: 0.0 % 15 0

            Line data    Source code
       1              : /**
       2              :  * @file FDFakeReaderModule.cpp FDFakeReaderModule class implementation
       3              :  *
       4              :  * This is part of the DUNE DAQ , copyright 2020.
       5              :  * Licensing/copyright details are in the COPYING file that you should have
       6              :  * received with this code.
       7              :  */
       8              : #include "FDFakeReaderModule.hpp"
       9              : 
      10              : // #include "appfwk/app/Nljs.hpp"
      11              : // #include "appfwk/cmd/Nljs.hpp"
      12              : #include "logging/Logging.hpp"
      13              : 
      14              : #include "datahandlinglibs/DataHandlingIssues.hpp"
      15              : #include "datahandlinglibs/ReadoutLogging.hpp"
      16              : // #include "datahandlinglibs/sourceemulatorconfig/Nljs.hpp"
      17              : #include "appmodel/DataReaderModule.hpp"
      18              : #include "datahandlinglibs/models/SourceEmulatorModel.hpp"
      19              : 
      20              : // #include "fdreadoutlibs/DUNEWIBSuperChunkTypeAdapter.hpp"
      21              : #include "fdreadoutlibs/CRTBernTypeAdapter.hpp"
      22              : #include "fdreadoutlibs/CRTGrenobleTypeAdapter.hpp"
      23              : #include "fdreadoutlibs/DAPHNEEthStreamTypeAdapter.hpp"
      24              : #include "fdreadoutlibs/DAPHNEEthTypeAdapter.hpp"
      25              : #include "fdreadoutlibs/DAPHNEStreamSuperChunkTypeAdapter.hpp"
      26              : #include "fdreadoutlibs/DAPHNESuperChunkTypeAdapter.hpp"
      27              : #include "fdreadoutlibs/DUNEWIBEthTypeAdapter.hpp"
      28              : #include "fdreadoutlibs/TDEEthTypeAdapter.hpp"
      29              : 
      30              : #include <chrono>
      31              : #include <fstream>
      32              : #include <iomanip>
      33              : #include <limits>
      34              : #include <memory>
      35              : #include <sstream>
      36              : #include <string>
      37              : #include <utility>
      38              : #include <vector>
      39              : 
      40              : using namespace dunedaq::datahandlinglibs::logging;
      41              : 
      42              : namespace dunedaq {
      43              : 
      44              : // DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DUNEWIBSuperChunkTypeAdapter, "WIB2Frame")
      45              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DUNEWIBEthTypeAdapter, "WIBEthFrame")
      46              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter, "PDSFrame")
      47              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter, "PDSStreamFrame")
      48              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNEEthTypeAdapter, "DAPHNEEthFrame")
      49              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::TDEEthTypeAdapter, "TDEEthFrame")
      50              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::CRTBernTypeAdapter, "CRTBernFrame")
      51              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::CRTGrenobleTypeAdapter, "CRTGrenobleFrame")
      52              : 
      53              : namespace fdreadoutmodules {
      54              : 
      55            0 : FDFakeReaderModule::FDFakeReaderModule(const std::string& name)
      56              :   : DAQModule(name)
      57            0 :   , FakeCardReaderBase(name)
      58              : {
      59            0 :   inherited_mod::register_command("conf", &inherited_fcr::do_conf);
      60            0 :   inherited_mod::register_command("scrap", &inherited_fcr::do_scrap);
      61            0 :   inherited_mod::register_command("start", &inherited_fcr::do_start);
      62            0 :   inherited_mod::register_command("stop_trigger_sources", &inherited_fcr::do_stop);
      63            0 : }
      64              : 
      65              : void
      66            0 : FDFakeReaderModule::init(std::shared_ptr<appfwk::ConfigurationManager> cfg)
      67              : {
      68            0 :   TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Entering init() method";
      69            0 :   inherited_fcr::init(cfg);
      70            0 :   TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Exiting init() method";
      71            0 : }
      72              : 
      73              : std::shared_ptr<datahandlinglibs::SourceEmulatorConcept>
      74            0 : FDFakeReaderModule::create_source_emulator(const appmodel::DataMoveCallbackConf* conf, std::atomic<bool>& run_marker)
      75              : {
      76              :   //! Values suitable to emulation
      77              : 
      78            0 :   static constexpr int daphnestream_time_tick_diff =
      79              :     fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter::expected_tick_difference;
      80            0 :   static constexpr double daphnestream_dropout_rate = 0.0;
      81            0 :   static constexpr double daphnestream_rate_khz =
      82              :     62500. / daphnestream_time_tick_diff / fdreadoutlibs::types::kDAPHNEStreamNumFrames;
      83            0 :   static constexpr int daphnestream_frames_per_tick = 1;
      84              : 
      85            0 :   static constexpr int daphne_time_tick_diff =
      86              :     fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter::expected_tick_difference;
      87            0 :   static constexpr double daphne_dropout_rate = 0.0;
      88            0 :   static constexpr double daphne_rate_khz = 62500. / daphne_time_tick_diff / fdreadoutlibs::types::kDAPHNENumFrames;
      89            0 :   static constexpr int daphne_frames_per_tick = 1;
      90              : 
      91            0 :   static constexpr int daphneeth_time_tick_diff = fdreadoutlibs::types::DAPHNEEthTypeAdapter::expected_tick_difference;
      92            0 :   static constexpr double daphneeth_dropout_rate = 0.0;
      93            0 :   static constexpr double daphneeth_rate_khz = 62500. / daphneeth_time_tick_diff;
      94            0 :   static constexpr int daphneeth_frames_per_tick = 1;
      95              : 
      96            0 :   static constexpr int daphneethstream_time_tick_diff =
      97              :     fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter::expected_tick_difference;
      98            0 :   static constexpr double daphneethstream_dropout_rate = 0.0;
      99            0 :   static constexpr double daphneethstream_rate_khz =
     100              :     62500. / daphneethstream_time_tick_diff / fdreadoutlibs::types::kDAPHNEEthStreamNumFrames;
     101            0 :   static constexpr int daphneethstream_frames_per_tick = 1;
     102              : 
     103            0 :   static constexpr int wibeth_time_tick_diff = fdreadoutlibs::types::DUNEWIBEthTypeAdapter::expected_tick_difference;
     104            0 :   ;
     105            0 :   static constexpr double wibeth_dropout_rate = 0.0;
     106            0 :   static constexpr double wibeth_rate_khz = 62500. / wibeth_time_tick_diff;
     107            0 :   static constexpr int wibeth_frames_per_tick = 1;
     108              : 
     109            0 :   static constexpr int tdeeth_time_tick_diff = fdreadoutlibs::types::TDEEthTypeAdapter::expected_tick_difference;
     110            0 :   static constexpr double tdeeth_dropout_rate = 0.0;
     111            0 :   static constexpr double tdeeth_rate_khz = 62500. / tdeeth_time_tick_diff;
     112            0 :   static constexpr int tdeeth_frames_per_tick = 1;
     113              : 
     114            0 :   static constexpr int crtbern_time_tick_diff = 2500;
     115            0 :   static constexpr double crtbern_dropout_rate = 0.0;
     116            0 :   static constexpr double crtbern_rate_khz = 25;
     117            0 :   static constexpr int crtbern_frames_per_tick = 1;
     118              : 
     119            0 :   static constexpr int crtgrenoble_time_tick_diff = 2500;
     120            0 :   static constexpr double crtgrenoble_dropout_rate = 0.0;
     121            0 :   static constexpr double crtgrenoble_rate_khz = 25;
     122            0 :   static constexpr int crtgrenoble_frames_per_tick = 1;
     123              : 
     124            0 :   static constexpr double emu_frame_error_rate = 0.0;
     125              : 
     126            0 :   auto datatype = conf->get_data_type();
     127            0 :   TLOG() << "Choosing specialization for SourceEmulator with raw_input"
     128            0 :          << " [uid:" << conf->UID() << " , data_type:" << datatype << ']';
     129              : 
     130              :   // IF WIBETH
     131            0 :   if (datatype.find("WIBEthFrame") != std::string::npos) {
     132            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake wibeth link";
     133            0 :     auto source_emu_model =
     134              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DUNEWIBEthTypeAdapter>>(
     135            0 :         conf->UID(),
     136              :         run_marker,
     137              :         wibeth_time_tick_diff,
     138              :         wibeth_dropout_rate,
     139              :         emu_frame_error_rate,
     140              :         wibeth_rate_khz,
     141            0 :         wibeth_frames_per_tick);
     142            0 :     register_node(conf->UID(), source_emu_model);
     143            0 :     return source_emu_model;
     144            0 :   }
     145              : 
     146              :   // IF PDS
     147            0 :   if (datatype.find("PDSFrame") != std::string::npos) {
     148            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds link";
     149            0 :     auto source_emu_model =
     150              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>>(
     151            0 :         conf->UID(),
     152              :         run_marker,
     153              :         daphne_time_tick_diff,
     154              :         daphne_dropout_rate,
     155              :         emu_frame_error_rate,
     156              :         daphne_rate_khz,
     157            0 :         daphne_frames_per_tick);
     158            0 :     register_node(conf->UID(), source_emu_model);
     159            0 :     return source_emu_model;
     160            0 :   }
     161              : 
     162              :   // IF PDS Ethernet
     163            0 :   if (datatype.find("DAPHNEEthFrame") != std::string::npos) {
     164            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds link";
     165            0 :     auto source_emu_model =
     166              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEEthTypeAdapter>>(
     167            0 :         conf->UID(),
     168              :         run_marker,
     169              :         daphneeth_time_tick_diff,
     170              :         daphneeth_dropout_rate,
     171              :         emu_frame_error_rate,
     172              :         daphneeth_rate_khz,
     173            0 :         daphneeth_frames_per_tick);
     174            0 :     register_node(conf->UID(), source_emu_model);
     175            0 :     return source_emu_model;
     176            0 :   }
     177              : 
     178              :   // IF PDSStream
     179            0 :   if (datatype.find("PDSStreamFrame") != std::string::npos) {
     180            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds stream link";
     181            0 :     auto source_emu_model =
     182              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>>(
     183            0 :         conf->UID(),
     184              :         run_marker,
     185              :         daphnestream_time_tick_diff,
     186              :         daphnestream_dropout_rate,
     187              :         emu_frame_error_rate,
     188              :         daphnestream_rate_khz,
     189            0 :         daphnestream_frames_per_tick);
     190            0 :     register_node(conf->UID(), source_emu_model);
     191            0 :     return source_emu_model;
     192            0 :   }
     193              : 
     194              :   // IF PDS Eth Stream
     195            0 :   if (datatype.find("DAPHNEEthStreamFrame") != std::string::npos) {
     196            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds stream link";
     197            0 :     auto source_emu_model =
     198              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter>>(
     199            0 :         conf->UID(),
     200              :         run_marker,
     201              :         daphneethstream_time_tick_diff,
     202              :         daphneethstream_dropout_rate,
     203              :         emu_frame_error_rate,
     204              :         daphneethstream_rate_khz,
     205            0 :         daphneethstream_frames_per_tick);
     206            0 :     register_node(conf->UID(), source_emu_model);
     207            0 :     return source_emu_model;
     208            0 :   }
     209              : 
     210              :   // IF TDEEth
     211            0 :   if (datatype.find("TDEEthFrame") != std::string::npos) {
     212            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake tde link";
     213            0 :     auto source_emu_model =
     214              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::TDEEthTypeAdapter>>(
     215            0 :         conf->UID(),
     216              :         run_marker,
     217              :         tdeeth_time_tick_diff,
     218              :         tdeeth_dropout_rate,
     219              :         emu_frame_error_rate,
     220              :         tdeeth_rate_khz,
     221            0 :         tdeeth_frames_per_tick);
     222            0 :     register_node(conf->UID(), source_emu_model);
     223            0 :     return source_emu_model;
     224            0 :   }
     225              : 
     226              :   // IF CRTBern
     227            0 :   if (datatype.find("CRTBernFrame") != std::string::npos) {
     228            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake crt bern link";
     229            0 :     auto source_emu_model =
     230              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::CRTBernTypeAdapter>>(
     231            0 :         conf->UID(),
     232              :         run_marker,
     233              :         crtbern_time_tick_diff,
     234              :         crtbern_dropout_rate,
     235              :         emu_frame_error_rate,
     236              :         crtbern_rate_khz,
     237            0 :         crtbern_frames_per_tick);
     238            0 :     register_node(conf->UID(), source_emu_model);
     239            0 :     return source_emu_model;
     240            0 :   }
     241              : 
     242              :   // IF CRTGrenoble
     243            0 :   if (datatype.find("CRTGrenobleFrame") != std::string::npos) {
     244            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake crt grenoble link";
     245            0 :     auto source_emu_model =
     246              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::CRTGrenobleTypeAdapter>>(
     247            0 :         conf->UID(),
     248              :         run_marker,
     249              :         crtgrenoble_time_tick_diff,
     250              :         crtgrenoble_dropout_rate,
     251              :         emu_frame_error_rate,
     252              :         crtgrenoble_rate_khz,
     253            0 :         crtgrenoble_frames_per_tick);
     254            0 :     register_node(conf->UID(), source_emu_model);
     255            0 :     return source_emu_model;
     256            0 :   }
     257              : 
     258            0 :   return nullptr;
     259            0 : }
     260              : 
     261              : } // namespace fdreadoutmodules
     262              : } // namespace dunedaq
     263              : 
     264            0 : DEFINE_DUNE_DAQ_MODULE(dunedaq::fdreadoutmodules::FDFakeReaderModule)
        

Generated by: LCOV version 2.0-1