LCOV - code coverage report
Current view: top level - fdreadoutmodules/plugins - FDFakeReaderModule.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 116 0
Test Date: 2026-03-29 15:29:34 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/ReadoutLogging.hpp"
      15              : #include "datahandlinglibs/DataHandlingIssues.hpp"
      16              : //#include "datahandlinglibs/sourceemulatorconfig/Nljs.hpp"
      17              : #include "datahandlinglibs/models/SourceEmulatorModel.hpp"
      18              : #include "appmodel/DataReaderModule.hpp"
      19              : 
      20              : //#include "fdreadoutlibs/DUNEWIBSuperChunkTypeAdapter.hpp"
      21              : #include "fdreadoutlibs/DUNEWIBEthTypeAdapter.hpp"
      22              : #include "fdreadoutlibs/DAPHNESuperChunkTypeAdapter.hpp"
      23              : #include "fdreadoutlibs/DAPHNEStreamSuperChunkTypeAdapter.hpp"
      24              : #include "fdreadoutlibs/TDEEthTypeAdapter.hpp"
      25              : #include "fdreadoutlibs/CRTBernTypeAdapter.hpp"
      26              : #include "fdreadoutlibs/CRTGrenobleTypeAdapter.hpp"
      27              : #include "fdreadoutlibs/DAPHNEEthTypeAdapter.hpp"
      28              : #include "fdreadoutlibs/DAPHNEEthStreamTypeAdapter.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 = fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter::expected_tick_difference;
      79            0 :   static constexpr double daphnestream_dropout_rate = 0.0;
      80            0 :   static constexpr double daphnestream_rate_khz = 62500./daphnestream_time_tick_diff/fdreadoutlibs::types::kDAPHNEStreamNumFrames;
      81            0 :   static constexpr int daphnestream_frames_per_tick = 1;
      82              : 
      83            0 :   static constexpr int daphne_time_tick_diff = fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter::expected_tick_difference;
      84            0 :   static constexpr double daphne_dropout_rate = 0.0;
      85            0 :   static constexpr double daphne_rate_khz = 62500./daphne_time_tick_diff/fdreadoutlibs::types::kDAPHNENumFrames;
      86            0 :   static constexpr int daphne_frames_per_tick = 1;
      87              : 
      88            0 :   static constexpr int daphneeth_time_tick_diff = fdreadoutlibs::types::DAPHNEEthTypeAdapter::expected_tick_difference;
      89            0 :   static constexpr double daphneeth_dropout_rate = 0.0;
      90            0 :   static constexpr double daphneeth_rate_khz = 62500./daphneeth_time_tick_diff;
      91            0 :   static constexpr int daphneeth_frames_per_tick = 1;
      92              : 
      93            0 :   static constexpr int daphneethstream_time_tick_diff = fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter::expected_tick_difference;
      94            0 :   static constexpr double daphneethstream_dropout_rate = 0.0;
      95            0 :   static constexpr double daphneethstream_rate_khz = 62500./daphneethstream_time_tick_diff/fdreadoutlibs::types::kDAPHNEEthStreamNumFrames;
      96            0 :   static constexpr int daphneethstream_frames_per_tick = 1;
      97              : 
      98            0 :   static constexpr int wibeth_time_tick_diff = fdreadoutlibs::types::DUNEWIBEthTypeAdapter::expected_tick_difference;;
      99            0 :   static constexpr double wibeth_dropout_rate = 0.0;
     100            0 :   static constexpr double wibeth_rate_khz = 62500./wibeth_time_tick_diff;
     101            0 :   static constexpr int wibeth_frames_per_tick = 1;
     102              : 
     103            0 :   static constexpr int tdeeth_time_tick_diff = fdreadoutlibs::types::TDEEthTypeAdapter::expected_tick_difference;
     104            0 :   static constexpr double tdeeth_dropout_rate = 0.0;
     105            0 :   static constexpr double tdeeth_rate_khz = 62500./tdeeth_time_tick_diff;
     106            0 :   static constexpr int tdeeth_frames_per_tick = 1;
     107              : 
     108            0 :   static constexpr int crtbern_time_tick_diff = 625;
     109            0 :   static constexpr double crtbern_dropout_rate = 0.0;
     110            0 :   static constexpr double crtbern_rate_khz = 100;
     111            0 :   static constexpr int crtbern_frames_per_tick = 1;
     112              : 
     113            0 :   static constexpr int crtgrenoble_time_tick_diff = 625;
     114            0 :   static constexpr double crtgrenoble_dropout_rate = 0.0;
     115            0 :   static constexpr double crtgrenoble_rate_khz = 100;
     116            0 :   static constexpr int crtgrenoble_frames_per_tick = 1;
     117              : 
     118            0 :   static constexpr double emu_frame_error_rate = 0.0;
     119              : 
     120            0 :   auto datatype = conf->get_data_type();
     121            0 :   TLOG() << "Choosing specialization for SourceEmulator with raw_input"
     122            0 :          << " [uid:" << conf->UID() << " , data_type:" << datatype << ']';
     123              : 
     124              :   // IF WIBETH
     125            0 :   if (datatype.find("WIBEthFrame") != std::string::npos) {
     126            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake wibeth link";
     127            0 :     auto source_emu_model =
     128              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DUNEWIBEthTypeAdapter>>(
     129            0 :         conf->UID(),
     130              :         run_marker,
     131              :         wibeth_time_tick_diff,
     132              :         wibeth_dropout_rate,
     133              :         emu_frame_error_rate,
     134              :         wibeth_rate_khz,
     135            0 :         wibeth_frames_per_tick);
     136            0 :     register_node(conf->UID(), source_emu_model);
     137            0 :     return source_emu_model;
     138            0 :   }
     139              : 
     140              :   // IF PDS
     141            0 :   if (datatype.find("PDSFrame") != std::string::npos) {
     142            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds link";
     143            0 :     auto source_emu_model =
     144              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>>(
     145            0 :         conf->UID(),
     146              :         run_marker,
     147              :         daphne_time_tick_diff,
     148              :         daphne_dropout_rate,
     149              :         emu_frame_error_rate,
     150              :         daphne_rate_khz,
     151            0 :         daphne_frames_per_tick);
     152            0 :     register_node(conf->UID(), source_emu_model);
     153            0 :       return source_emu_model;
     154            0 :   }
     155              : 
     156              :   // IF PDS Ethernet
     157            0 :   if (datatype.find("DAPHNEEthFrame") != std::string::npos) {
     158            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds link";
     159            0 :     auto source_emu_model =
     160              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEEthTypeAdapter>>(
     161            0 :         conf->UID(),
     162              :         run_marker,
     163              :         daphneeth_time_tick_diff,
     164              :         daphneeth_dropout_rate,
     165              :         emu_frame_error_rate,
     166              :         daphneeth_rate_khz,
     167            0 :         daphneeth_frames_per_tick);
     168            0 :     register_node(conf->UID(), source_emu_model);
     169            0 :       return source_emu_model;
     170            0 :   }
     171              : 
     172              :   // IF PDSStream
     173            0 :   if (datatype.find("PDSStreamFrame") != std::string::npos) {
     174            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds stream link";
     175            0 :     auto source_emu_model =
     176              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>>(
     177            0 :         conf->UID(),
     178              :         run_marker,
     179              :         daphnestream_time_tick_diff,
     180              :         daphnestream_dropout_rate,
     181              :         emu_frame_error_rate,
     182              :         daphnestream_rate_khz,
     183            0 :         daphnestream_frames_per_tick);
     184            0 :     register_node(conf->UID(), source_emu_model);
     185            0 :     return source_emu_model;
     186            0 :   }
     187              : 
     188              :   // IF PDS Eth Stream
     189            0 :   if (datatype.find("DAPHNEEthStreamFrame") != std::string::npos) {
     190            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds stream link";
     191            0 :     auto source_emu_model =
     192              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter>>(
     193            0 :         conf->UID(),
     194              :         run_marker,
     195              :         daphneethstream_time_tick_diff,
     196              :         daphneethstream_dropout_rate,
     197              :         emu_frame_error_rate,
     198              :         daphneethstream_rate_khz,
     199            0 :         daphneethstream_frames_per_tick);
     200            0 :     register_node(conf->UID(), source_emu_model);
     201            0 :     return source_emu_model;
     202            0 :   }
     203              : 
     204              :   // IF TDEEth
     205            0 :   if (datatype.find("TDEEthFrame") != std::string::npos) {
     206            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake tde link";
     207            0 :     auto source_emu_model =
     208              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::TDEEthTypeAdapter>>(
     209            0 :         conf->UID(),
     210              :         run_marker,
     211              :         tdeeth_time_tick_diff,
     212              :         tdeeth_dropout_rate,
     213              :         emu_frame_error_rate,
     214              :         tdeeth_rate_khz,
     215            0 :         tdeeth_frames_per_tick);
     216            0 :     register_node(conf->UID(), source_emu_model);
     217            0 :     return source_emu_model;
     218            0 :   }
     219              : 
     220              :   // IF CRTBern
     221            0 :   if (datatype.find("CRTBernFrame") != std::string::npos) {
     222            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake crt bern link";
     223            0 :     auto source_emu_model =
     224              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::CRTBernTypeAdapter>>(
     225            0 :         conf->UID(),
     226              :         run_marker,
     227              :         crtbern_time_tick_diff,
     228              :         crtbern_dropout_rate,
     229              :         emu_frame_error_rate,
     230              :         crtbern_rate_khz,
     231            0 :         crtbern_frames_per_tick);
     232            0 :     register_node(conf->UID(), source_emu_model);
     233            0 :     return source_emu_model;
     234            0 :   }
     235              : 
     236              :   // IF CRTGrenoble
     237            0 :   if (datatype.find("CRTGrenobleFrame") != std::string::npos) {
     238            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake crt grenoble link";
     239            0 :     auto source_emu_model =
     240              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::CRTGrenobleTypeAdapter>>(
     241            0 :         conf->UID(),
     242              :         run_marker,
     243              :         crtgrenoble_time_tick_diff,
     244              :         crtgrenoble_dropout_rate,
     245              :         emu_frame_error_rate,
     246              :         crtgrenoble_rate_khz,
     247            0 :         crtgrenoble_frames_per_tick);
     248            0 :     register_node(conf->UID(), source_emu_model);
     249            0 :     return source_emu_model;
     250            0 :   }
     251              : 
     252            0 :   return nullptr;
     253            0 : }
     254              : 
     255              : } // namespace fdreadoutmodules
     256              : } // namespace dunedaq
     257              : 
     258            0 : DEFINE_DUNE_DAQ_MODULE(dunedaq::fdreadoutmodules::FDFakeReaderModule)
        

Generated by: LCOV version 2.0-1