LCOV - code coverage report
Current view: top level - fdreadoutmodules/plugins - FDFakeReaderModule.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 119 0
Test Date: 2025-12-21 13:07:08 Functions: 0.0 % 22 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            0 : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DUNEWIBEthTypeAdapter, "WIBEthFrame")
      46            0 : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter, "PDSFrame")
      47            0 : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter, "PDSStreamFrame")
      48            0 : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNEEthTypeAdapter, "DAPHNEEthFrame")
      49            0 : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::TDEEthTypeAdapter, "TDEEthFrame")
      50            0 : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::CRTBernTypeAdapter, "CRTBernFrame")
      51            0 : 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(std::string q_id, 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 datatypes = dunedaq::iomanager::IOManager::get()->get_datatypes(q_id);
     121            0 :   if (datatypes.size() != 1) {
     122            0 :     ers::error(dunedaq::datahandlinglibs::GenericConfigurationError(ERS_HERE,
     123            0 :       "Multiple output data types specified! Expected only a single type!"));
     124              :   }
     125            0 :   std::string raw_dt{ *datatypes.begin() };
     126            0 :   TLOG() << "Choosing specialization for SourceEmulator with raw_input"
     127            0 :          << " [uid:" << q_id << " , data_type:" << raw_dt << ']';
     128              : 
     129              :   // IF WIBETH
     130            0 :   if (raw_dt.find("WIBEthFrame") != std::string::npos) {
     131            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake wibeth link";
     132            0 :     auto source_emu_model =
     133              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DUNEWIBEthTypeAdapter>>(
     134            0 :         q_id, run_marker, wibeth_time_tick_diff, wibeth_dropout_rate, emu_frame_error_rate, wibeth_rate_khz, wibeth_frames_per_tick);
     135            0 :     register_node(q_id, source_emu_model);
     136            0 :     return source_emu_model;
     137            0 :   }
     138              : 
     139              :   // IF PDS
     140            0 :   if (raw_dt.find("PDSFrame") != std::string::npos) {
     141            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds link";
     142            0 :     auto source_emu_model =
     143              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>>(
     144            0 :         q_id, run_marker, daphne_time_tick_diff, daphne_dropout_rate, emu_frame_error_rate, daphne_rate_khz, daphne_frames_per_tick);
     145            0 :       register_node(q_id, source_emu_model);
     146            0 :       return source_emu_model;
     147            0 :   }
     148              : 
     149              :   // IF PDS Ethernet
     150            0 :   if (raw_dt.find("DAPHNEEthFrame") != std::string::npos) {
     151            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds link";
     152            0 :     auto source_emu_model =
     153              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEEthTypeAdapter>>(
     154            0 :         q_id, run_marker, daphneeth_time_tick_diff, daphneeth_dropout_rate, emu_frame_error_rate, daphneeth_rate_khz, daphneeth_frames_per_tick);
     155            0 :       register_node(q_id, source_emu_model);
     156            0 :       return source_emu_model;
     157            0 :   }
     158              : 
     159              :   // IF PDSStream
     160            0 :   if (raw_dt.find("PDSStreamFrame") != std::string::npos) {
     161            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds stream link";
     162            0 :     auto source_emu_model =
     163              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>>(
     164            0 :         q_id, run_marker, daphnestream_time_tick_diff, daphnestream_dropout_rate, emu_frame_error_rate, daphnestream_rate_khz, daphnestream_frames_per_tick);
     165            0 :       register_node(q_id, source_emu_model);
     166            0 :     return source_emu_model;
     167            0 :   }
     168              : 
     169              :   // IF PDS Eth Stream
     170            0 :   if (raw_dt.find("DAPHNEEthStreamFrame") != std::string::npos) {
     171            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake pds stream link";
     172            0 :     auto source_emu_model =
     173              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::DAPHNEEthStreamTypeAdapter>>(
     174            0 :         q_id, run_marker, daphneethstream_time_tick_diff, daphneethstream_dropout_rate, emu_frame_error_rate, daphneethstream_rate_khz, daphneethstream_frames_per_tick);
     175            0 :       register_node(q_id, source_emu_model);
     176            0 :     return source_emu_model;
     177            0 :   }
     178              : 
     179              :   // IF TDEEth
     180            0 :   if (raw_dt.find("TDEEthFrame") != std::string::npos) {
     181            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake tde link";
     182            0 :     auto source_emu_model =
     183              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::TDEEthTypeAdapter>>(
     184              :         q_id,
     185              :         run_marker,
     186              :         tdeeth_time_tick_diff,
     187              :         tdeeth_dropout_rate,
     188              :         emu_frame_error_rate,
     189              :         tdeeth_rate_khz,
     190            0 :         tdeeth_frames_per_tick);
     191            0 :     register_node(q_id, source_emu_model);
     192            0 :     return source_emu_model;
     193            0 :   }
     194              : 
     195              :   // IF CRTBern
     196            0 :   if (raw_dt.find("CRTBernFrame") != std::string::npos) {
     197            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake crt bern link";
     198            0 :     auto source_emu_model =
     199              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::CRTBernTypeAdapter>>(
     200            0 :         q_id, run_marker, crtbern_time_tick_diff, crtbern_dropout_rate, emu_frame_error_rate, crtbern_rate_khz, crtbern_frames_per_tick);
     201            0 :     register_node(q_id, source_emu_model);
     202            0 :     return source_emu_model;
     203            0 :   }  
     204              :   
     205              :   // IF CRTGrenoble
     206            0 :   if (raw_dt.find("CRTGrenobleFrame") != std::string::npos) {
     207            0 :     TLOG_DEBUG(TLVL_WORK_STEPS) << "Creating fake crt grenoble link";
     208            0 :     auto source_emu_model =
     209              :       std::make_shared<datahandlinglibs::SourceEmulatorModel<fdreadoutlibs::types::CRTGrenobleTypeAdapter>>(
     210            0 :         q_id, run_marker, crtgrenoble_time_tick_diff, crtgrenoble_dropout_rate, emu_frame_error_rate, crtgrenoble_rate_khz, crtgrenoble_frames_per_tick);
     211            0 :     register_node(q_id, source_emu_model);
     212            0 :     return source_emu_model;
     213            0 :   }  
     214              : 
     215            0 :   return nullptr;
     216            0 : }
     217              : 
     218              : } // namespace fdreadoutmodules
     219              : } // namespace dunedaq
     220              : 
     221            0 : DEFINE_DUNE_DAQ_MODULE(dunedaq::fdreadoutmodules::FDFakeReaderModule)
        

Generated by: LCOV version 2.0-1