DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
appmodel
src
DFOApplication.cpp
Go to the documentation of this file.
1
10
11
#include "
appmodel/DFOApplication.hpp
"
12
#include "
ConfigObjectFactory.hpp
"
13
#include "
appmodel/ConfigurationHelper.hpp
"
14
#include "
appmodel/DFOConf.hpp
"
15
#include "
appmodel/DFOModule.hpp
"
16
#include "
appmodel/NetworkConnectionDescriptor.hpp
"
17
#include "
appmodel/NetworkConnectionRule.hpp
"
18
#include "
appmodel/QueueConnectionRule.hpp
"
19
#include "
appmodel/QueueDescriptor.hpp
"
20
#include "
appmodel/appmodelIssues.hpp
"
21
22
#include "
confmodel/Connection.hpp
"
23
#include "
confmodel/NetworkConnection.hpp
"
24
#include "
confmodel/Service.hpp
"
25
#include "
logging/Logging.hpp
"
26
#include "
oks/kernel.hpp
"
27
28
#include <string>
29
#include <vector>
30
31
namespace
dunedaq
{
32
namespace
appmodel
{
33
34
void
35
DFOApplication::generate_modules
(std::shared_ptr<appmodel::ConfigurationHelper> helper)
const
36
{
37
std::vector<const confmodel::DaqModule*> modules;
38
39
ConfigObjectFactory
obj_fac(
this
);
40
41
std::string dfoUid(
"DFO-"
+
UID
());
42
TLOG_DEBUG
(7) <<
"creating OKS configuration object for DFOModule class "
;
43
auto
dfoObj = obj_fac.
create
(
"DFOModule"
, dfoUid);
44
45
auto
dfoConf =
get_dfo
();
46
dfoObj.set_obj(
"configuration"
, &dfoConf->config_object());
47
48
if
(dfoConf == 0) {
49
throw
(BadConf(
ERS_HERE
,
"No DFOConf configuration given"
));
50
}
51
52
std::vector<const conffwk::ConfigObject*> output_conns;
53
std::vector<const conffwk::ConfigObject*> input_conns;
54
conffwk::ConfigObject
tdInObj;
55
conffwk::ConfigObject
busyOutObj;
56
conffwk::ConfigObject
tokenInObj;
57
58
for
(
auto
rule :
get_network_rules
()) {
59
auto
endpoint_class = rule->get_endpoint_class();
60
auto
descriptor
= rule->get_descriptor();
61
62
auto
connObj = obj_fac.
create_net_obj
(
descriptor
,
""
);
63
64
if
(
descriptor
->get_data_type() ==
"TriggerDecision"
) {
65
if
(endpoint_class ==
"DFOModule"
) {
66
tdInObj = connObj;
67
input_conns.push_back(&tdInObj);
68
}
69
}
else
if
(
descriptor
->get_data_type() ==
"TriggerDecisionToken"
) {
70
tokenInObj = connObj;
71
input_conns.push_back(&tokenInObj);
72
}
73
74
else
if
(
descriptor
->get_data_type() ==
"TriggerInhibit"
) {
75
busyOutObj = connObj;
76
output_conns.push_back(&busyOutObj);
77
}
78
}
79
80
if
(tdInObj ==
nullptr
) {
81
throw
(BadConf(
ERS_HERE
,
"No TriggerDecision input connection descriptor given"
));
82
}
83
if
(busyOutObj ==
nullptr
) {
84
throw
(BadConf(
ERS_HERE
,
"No TriggerInhibit output connection descriptor given"
));
85
}
86
if
(tokenInObj ==
nullptr
) {
87
throw
(BadConf(
ERS_HERE
,
"No TriggerDecisionToken input connection descriptor given"
));
88
}
89
90
// Process special Network rules!
91
std::vector<conffwk::ConfigObject> tdOutObjs;
92
for
(
auto
[uid,
descriptor
] : helper->get_netdescriptors(
"TriggerDecision"
,
"DFApplication"
)) {
93
tdOutObjs.emplace_back(obj_fac.
create_net_obj
(
descriptor
, uid));
94
}
95
96
for
(
auto
& tdOut : tdOutObjs) {
97
output_conns.push_back(&tdOut);
98
}
99
100
dfoObj.set_objs(
"inputs"
, input_conns);
101
dfoObj.set_objs(
"outputs"
, output_conns);
102
103
// Add to our list of modules to return
104
modules.push_back(obj_fac.
get_dal
<
DFOModule
>(dfoUid));
105
106
obj_fac.
update_modules
(modules);
107
}
108
109
}
// namespace appmodel
110
}
// namespace dunedaq
ConfigObjectFactory.hpp
ConfigurationHelper.hpp
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:127
appmodelIssues.hpp
dunedaq::appmodel::ConfigObjectFactory
Definition
ConfigObjectFactory.hpp:32
dunedaq::appmodel::ConfigObjectFactory::update_modules
void update_modules(const std::vector< const confmodel::DaqModule * > &modules)
Definition
ConfigObjectFactory.hpp:83
dunedaq::appmodel::ConfigObjectFactory::create_net_obj
conffwk::ConfigObject create_net_obj(const NetworkConnectionDescriptor *ndesc, std::string uid) const
Helper function that gets a network connection config.
Definition
ConfigObjectFactory.cpp:94
dunedaq::appmodel::ConfigObjectFactory::get_dal
const T * get_dal(std::string uid) const
Definition
ConfigObjectFactory.hpp:72
dunedaq::appmodel::ConfigObjectFactory::create
conffwk::ConfigObject create(const std::string &class_name, const std::string &id) const
Definition
ConfigObjectFactory.cpp:28
dunedaq::appmodel::DFOApplication::get_dfo
const dunedaq::appmodel::DFOConf * get_dfo() const
Get "dfo" relationship value.
Definition
DFOApplication.hpp:106
dunedaq::appmodel::DFOApplication::generate_modules
void generate_modules(std::shared_ptr< appmodel::ConfigurationHelper >) const override
Definition
DFOApplication.cpp:35
dunedaq::appmodel::DFOModule
Definition
DFOModule.hpp:32
dunedaq::appmodel::SmartDaqApplication::get_network_rules
const std::vector< const dunedaq::appmodel::NetworkConnectionRule * > & get_network_rules() const
Get "network_rules" relationship value.
Definition
SmartDaqApplication.hpp:168
dunedaq::conffwk::DalObject::UID
const std::string & UID() const noexcept
Definition
DalObject.hpp:119
DFOApplication.hpp
DFOConf.hpp
DFOModule.hpp
NetworkConnectionDescriptor.hpp
NetworkConnectionRule.hpp
QueueConnectionRule.hpp
QueueDescriptor.hpp
Connection.hpp
NetworkConnection.hpp
Service.hpp
kernel.hpp
Logging.hpp
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:116
conffwk.ConfigObject
Definition
ConfigObject.py:1
dunedaq::appmodel
Definition
CardControllerWrapper.hpp:21
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
dunedaq::descriptor
CIB Buffer std::string descriptor Message from std::string descriptor CIB process std::string descriptor descriptor
Definition
CIBModuleIssues.hpp:35
Generated on
for DUNE-DAQ by
1.18.0