LCOV - code coverage report
Current view: top level - flxlibs/src - CreateElink.hpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 27 0
Test Date: 2026-10-11 15:05:20 Functions: 0.0 % 1 0

            Line data    Source code
       1              : /**
       2              :  * @file CreateElink.hpp Specific ElinkConcept creator.
       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              : #ifndef FLXLIBS_SRC_CREATEELINK_HPP_
       9              : #define FLXLIBS_SRC_CREATEELINK_HPP_
      10              : 
      11              : #include "ElinkConcept.hpp"
      12              : #include "ElinkModel.hpp"
      13              : #include "datahandlinglibs/DataHandlingIssues.hpp"
      14              : #include "flxlibs/AvailableParserOperations.hpp"
      15              : // #include "fdreadoutlibs/ProtoWIBSuperChunkTypeAdapter.hpp"
      16              : // #include "fdreadoutlibs/DUNEWIBSuperChunkTypeAdapter.hpp"
      17              : #include "fdreadoutlibs/DAPHNEStreamSuperChunkTypeAdapter.hpp"
      18              : #include "fdreadoutlibs/DAPHNESuperChunkTypeAdapter.hpp"
      19              : #include "fdreadoutlibs/VariableSizePayloadTypeAdapter.hpp"
      20              : 
      21              : #include "appmodel/DataMoveCallbackConf.hpp"
      22              : 
      23              : #include <memory>
      24              : #include <string>
      25              : 
      26              : namespace dunedaq {
      27              : 
      28              : // DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::ProtoWIBSuperChunkTypeAdapter, "WIBFrame")
      29              : // DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DUNEWIBSuperChunkTypeAdapter, "WIB2Frame")
      30              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter, "PDSFrame")
      31              : DUNE_DAQ_TYPESTRING(dunedaq::fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter, "PDSStreamFrame")
      32              : 
      33              : namespace flxlibs {
      34              : 
      35              : std::unique_ptr<ElinkConcept>
      36            0 : createElinkModel(const appmodel::DataMoveCallbackConf* conf)
      37              : {
      38            0 :   auto datatype = conf->get_data_type();
      39              :   /*
      40              : 
      41              :     if (raw_dt.find("WIBFrame") != std::string::npos) {
      42              :       // WIB1 specific char arrays
      43              :       // Create Model
      44              :       auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::ProtoWIBSuperChunkTypeAdapter>>();
      45              : 
      46              :       // Setup sink (acquire pointer from QueueRegistry)
      47              :       elink_model->set_sink(conn_uid);
      48              : 
      49              :       // Get parser and sink
      50              :       auto& parser = elink_model->get_parser();
      51              :       auto& sink = elink_model->get_sink();
      52              :       auto& error_sink = elink_model->get_error_sink();
      53              : 
      54              :       // Modify parser as needed...
      55              :       parser.process_chunk_func = parsers::fixsizedChunkInto<fdreadoutlibs::types::ProtoWIBSuperChunkTypeAdapter>(sink);
      56              :       if (error_sink != nullptr) {
      57              :         parser.process_chunk_with_error_func = parsers::errorChunkIntoSink(error_sink);
      58              :       }
      59              :       // parser.process_block_func = ...
      60              : 
      61              :       // Return with setup model
      62              :       return elink_model;
      63              : 
      64              :     } else if (raw_dt.find("WIB2Frame") != std::string::npos) {
      65              :       // WIB2 specific char arrays
      66              :       auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::DUNEWIBSuperChunkTypeAdapter>>();
      67              :       elink_model->set_sink(conn_uid);
      68              :       auto& parser = elink_model->get_parser();
      69              :       auto& sink = elink_model->get_sink();
      70              :       parser.process_chunk_func = parsers::fixsizedChunkInto<fdreadoutlibs::types::DUNEWIBSuperChunkTypeAdapter>(sink);
      71              :       return elink_model;
      72              : 
      73              :     } else*/
      74            0 :   if (datatype.find("PDSStreamFrame") != std::string::npos) {
      75              :     // PDS specific char arrays
      76            0 :     auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>>();
      77            0 :     elink_model->set_sink_config(conf);
      78            0 :     auto& parser = elink_model->get_parser();
      79            0 :     auto& cb = elink_model->m_sink_callback;
      80            0 :     parser.process_chunk_func = parsers::fixsizedChunkInto<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>(cb);
      81            0 :     return elink_model;
      82              : 
      83            0 :   } else if (datatype.find("PDSFrame") != std::string::npos) {
      84              :     // PDS specific char arrays
      85            0 :     auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>>();
      86            0 :     elink_model->set_sink_config(conf);
      87            0 :     auto& parser = elink_model->get_parser();
      88            0 :     auto& cb = elink_model->m_sink_callback;
      89            0 :     parser.process_chunk_func = parsers::fixsizedChunkInto<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>(cb);
      90            0 :     return elink_model;
      91              : 
      92            0 :   } else if (datatype.find("varsize") != std::string::npos) {
      93              :     // Variable sized user payloads
      94            0 :     auto elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::VariableSizePayloadTypeAdapter>>();
      95            0 :     elink_model->set_sink_config(conf);
      96            0 :     auto& parser = elink_model->get_parser();
      97            0 :     auto& cb = elink_model->m_sink_callback;
      98            0 :     parser.process_chunk_func = parsers::varsizedChunkIntoWrapper(cb);
      99            0 :     parser.process_shortchunk_func = parsers::varsizedShortchunkIntoWrapper(cb);
     100            0 :     return elink_model;
     101            0 :   }
     102              : 
     103            0 :   return nullptr;
     104            0 : }
     105              : 
     106              : } // namespace flxlibs
     107              : } // namespace dunedaq
     108              : 
     109              : #endif // FLXLIBS_SRC_CREATEELINK_HPP_
        

Generated by: LCOV version 2.0-1