DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::asiolibs Namespace Reference

Namespaces

namespace  opmon

Classes

class  GenericReceiverConcept
class  GenericReceiverModel
class  SourceConcept
class  SourceModel

Functions

std::shared_ptr< GenericReceiverConceptcreateGenericReceiver (const std::string &receiver_connection_name)
std::shared_ptr< SourceConceptcreateSourceModel (const appmodel::DataMoveCallbackConf *conf)

Function Documentation

◆ createGenericReceiver()

std::shared_ptr< GenericReceiverConcept > dunedaq::asiolibs::createGenericReceiver ( const std::string & receiver_connection_name)

Definition at line 28 of file CreateGenericReceiver.hpp.

29{
30 const auto datatypes = dunedaq::iomanager::IOManager::get()->get_datatypes(receiver_connection_name);
31 if (datatypes.size() != 1) {
32 ers::error(datahandlinglibs::GenericConfigurationError(ERS_HERE,
33 "Multiple input data types specified! Expected only a single type!"));
34 }
35 const std::string dt = *datatypes.begin();
36 TLOG() << "Choosing specializations for GenericReceiverConcept for input connection "
37 << " [uid:" << receiver_connection_name << " , data_type:" << dt << ']';
38
39 if (dt.find("CRTBernFrame") != std::string::npos) {
40 return std::make_shared<GenericReceiverModel<fddetdataformats::CRTBernFrame>>(receiver_connection_name);
41 } else if (dt.find("CRTGrenobleFrame") != std::string::npos) {
42 return std::make_shared<GenericReceiverModel<fddetdataformats::CRTGrenobleFrame>>(receiver_connection_name);
43 }
44
45 return nullptr;
46}
#define ERS_HERE
static std::shared_ptr< IOManager > get()
Definition IOManager.hpp:40
#define TLOG(...)
Definition macro.hpp:22
void error(const Issue &issue)
Definition ers.hpp:92

◆ createSourceModel()

std::shared_ptr< SourceConcept > dunedaq::asiolibs::createSourceModel ( const appmodel::DataMoveCallbackConf * conf)

Definition at line 31 of file CreateSource.hpp.

32{
33 auto datatype = conf->get_data_type();
34 TLOG() << "Choosing specializations for SourceModel for output connection "
35 << " [uid:" << conf->UID() << " , data_type:" << datatype << ']';
36
37 if (datatype.find("WIBEthFrame") != std::string::npos) {
38 // Create Model
39 auto source_model = std::make_shared<SourceModel<fdreadoutlibs::types::DUNEWIBEthTypeAdapter>>();
40
41 // For callback acquisition later (lazy)
42 source_model->set_sink_config(conf);
43
44 // Get parser and sink
45 //auto& parser = source_model->get_parser();
46 //auto& sink = source_model->get_sink();
47 //auto& error_sink = source_model->get_error_sink();
48
49 // Modify parser as needed...
50 //parser.process_chunk_func = parsers::fixsizedChunkInto<fdreadoutlibs::types::ProtoWIBSuperChunkTypeAdapter>(sink);
51 //if (error_sink != nullptr) {
52 // parser.process_chunk_with_error_func = parsers::errorChunkIntoSink(error_sink);
53 //}
54 // parser.process_block_func = ...
55
56 // Return with setup model
57 return source_model;
58
59 } else if (datatype.find("CRTBernFrame") != std::string::npos) {
60 auto source_model = std::make_shared<SourceModel<fdreadoutlibs::types::CRTBernTypeAdapter>>();
61 source_model->set_sink_config(conf);
62 return source_model;
63 } else if (datatype.find("CRTGrenobleFrame") != std::string::npos) {
64 auto source_model = std::make_shared<SourceModel<fdreadoutlibs::types::CRTGrenobleTypeAdapter>>();
65 source_model->set_sink_config(conf);
66 return source_model;
67 }
68
69 return nullptr;
70}
const std::string & get_data_type() const
Get "data_type" attribute value. Name of the output data type. Should be defined via a call to DUNE_D...
const std::string & UID() const noexcept