DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
flxlibs
src
CreateElink.hpp
Go to the documentation of this file.
1
8
#ifndef FLXLIBS_SRC_CREATEELINK_HPP_
9
#define FLXLIBS_SRC_CREATEELINK_HPP_
10
11
#include "
ElinkConcept.hpp
"
12
#include "
ElinkModel.hpp
"
13
#include "
flxlibs/AvailableParserOperations.hpp
"
14
#include "
datahandlinglibs/DataHandlingIssues.hpp
"
15
//#include "fdreadoutlibs/ProtoWIBSuperChunkTypeAdapter.hpp"
16
//#include "fdreadoutlibs/DUNEWIBSuperChunkTypeAdapter.hpp"
17
#include "
fdreadoutlibs/DAPHNESuperChunkTypeAdapter.hpp
"
18
#include "
fdreadoutlibs/DAPHNEStreamSuperChunkTypeAdapter.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
createElinkModel
(
const
appmodel::DataMoveCallbackConf
* conf)
37
{
38
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
if
(datatype.find(
"PDSStreamFrame"
) != std::string::npos) {
75
// PDS specific char arrays
76
auto
elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>>();
77
elink_model->set_sink_config(conf);
78
auto
& parser = elink_model->get_parser();
79
auto
& cb = elink_model->m_sink_callback;
80
parser.process_chunk_func =
parsers::fixsizedChunkInto<fdreadoutlibs::types::DAPHNEStreamSuperChunkTypeAdapter>
(cb);
81
return
elink_model;
82
83
}
else
if
(datatype.find(
"PDSFrame"
) != std::string::npos) {
84
// PDS specific char arrays
85
auto
elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>>();
86
elink_model->set_sink_config(conf);
87
auto
& parser = elink_model->get_parser();
88
auto
& cb = elink_model->m_sink_callback;
89
parser.process_chunk_func =
parsers::fixsizedChunkInto<fdreadoutlibs::types::DAPHNESuperChunkTypeAdapter>
(cb);
90
return
elink_model;
91
92
93
}
else
if
(datatype.find(
"varsize"
) != std::string::npos) {
94
// Variable sized user payloads
95
auto
elink_model = std::make_unique<ElinkModel<fdreadoutlibs::types::VariableSizePayloadTypeAdapter>>();
96
elink_model->set_sink_config(conf);
97
auto
& parser = elink_model->get_parser();
98
auto
& cb = elink_model->m_sink_callback;
99
parser.process_chunk_func =
parsers::varsizedChunkIntoWrapper
(cb);
100
parser.process_shortchunk_func =
parsers::varsizedShortchunkIntoWrapper
(cb);
101
return
elink_model;
102
}
103
104
return
nullptr
;
105
}
106
107
}
// namespace flxlibs
108
}
// namespace dunedaq
109
110
#endif
// FLXLIBS_SRC_CREATEELINK_HPP_
AvailableParserOperations.hpp
DAPHNEStreamSuperChunkTypeAdapter.hpp
DAPHNESuperChunkTypeAdapter.hpp
DataHandlingIssues.hpp
ElinkConcept.hpp
ElinkModel.hpp
DUNE_DAQ_TYPESTRING
#define DUNE_DAQ_TYPESTRING(Type, typestring)
Declare the datatype_to_string method for the given type.
Definition
Serialization.hpp:36
VariableSizePayloadTypeAdapter.hpp
dunedaq::appmodel::DataMoveCallbackConf
Definition
DataMoveCallbackConf.hpp:20
dunedaq::appmodel::DataMoveCallbackConf::get_data_type
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...
Definition
DataMoveCallbackConf.hpp:125
DataMoveCallbackConf.hpp
dunedaq::fdreadoutlibs
Definition
CRTBernFrameProcessor.hpp:16
dunedaq::flxlibs::parsers::varsizedChunkIntoWrapper
std::function< void(const felix::packetformat::chunk &chunk)> varsizedChunkIntoWrapper(std::shared_ptr< std::function< void(fdreadoutlibs::types::VariableSizePayloadTypeAdapter &&)> > &cb, std::chrono::milliseconds timeout=std::chrono::milliseconds(100))
Definition
AvailableParserOperations.hpp:205
dunedaq::flxlibs::parsers::fixsizedChunkInto
std::function< void(const felix::packetformat::chunk &chunk)> fixsizedChunkInto(std::shared_ptr< std::function< void(TargetStruct &&)> > &cb, std::chrono::milliseconds timeout=std::chrono::milliseconds(100))
Definition
AvailableParserOperations.hpp:65
dunedaq::flxlibs::parsers::varsizedShortchunkIntoWrapper
std::function< void(const felix::packetformat::shortchunk &shortchunk)> varsizedShortchunkIntoWrapper(std::shared_ptr< std::function< void(fdreadoutlibs::types::VariableSizePayloadTypeAdapter &&)> > &cb, std::chrono::milliseconds timeout=std::chrono::milliseconds(100))
Definition
AvailableParserOperations.hpp:231
dunedaq::flxlibs
Definition
AvailableParserOperations.hpp:27
dunedaq::flxlibs::createElinkModel
std::unique_ptr< ElinkConcept > createElinkModel(const appmodel::DataMoveCallbackConf *conf)
Definition
CreateElink.hpp:36
dunedaq
Including Qt Headers.
Definition
module.cpp:16
Generated on
for DUNE-DAQ by
1.17.0