DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
datahandlinglibs
include
datahandlinglibs
detail
FakeCardReaderBase.hxx
Go to the documentation of this file.
1
namespace
dunedaq
{
2
namespace
datahandlinglibs
{
3
4
FakeCardReaderBase::FakeCardReaderBase
(
const
std::string& name)
5
:
m_configured
(false)
6
,
m_name
(name)
7
,
m_run_marker
{ false }
8
{
9
}
10
11
void
12
FakeCardReaderBase::init
(std::shared_ptr<appfwk::ConfigurationManager> cfg)
13
{
14
m_cfg
= cfg;
15
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
16
<<
get_fcr_name
() <<
": Entering init() method"
;
17
// auto ini = args.get<appfwk::app::ModInit>();
18
auto
ini = cfg->get_dal<
appmodel::DataReaderModule
>(
m_name
);
19
if
(ini !=
nullptr
&& ini->get_configuration()->get_emulation_mode()) {
20
21
for
(
auto
cb : ini->get_raw_data_callbacks()) {
22
23
try
{
24
if
(
m_source_emus
.find(cb->UID()) !=
m_source_emus
.end()) {
25
TLOG
() <<
get_fcr_name
() <<
"Same callback instance used twice"
;
26
throw
datahandlinglibs::FailedFakeCardInitialization(
ERS_HERE
,
get_fcr_name
(),
""
);
27
}
28
m_source_emus
[cb->UID()] =
create_source_emulator
(cb,
m_run_marker
);
29
if
(
m_source_emus
[cb->UID()].get() ==
nullptr
) {
30
TLOG
() <<
get_fcr_name
() <<
"Source emulator could not be created"
;
31
throw
datahandlinglibs::FailedFakeCardInitialization(
ERS_HERE
,
get_fcr_name
(),
""
);
32
}
33
// m_source_emus[cb->UID()]->init(cfg);
34
}
catch
(
const
ers::Issue
& excpt) {
35
throw
datahandlinglibs::ResourceQueueError(
ERS_HERE
, cb->UID(),
get_fcr_name
(), excpt);
36
}
37
}
38
}
39
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
40
<<
get_fcr_name
() <<
": Exiting init() method"
;
41
}
42
43
void
44
FakeCardReaderBase::do_conf
(
const
appfwk::DAQModule::CommandData_t&
/*args*/
)
45
{
46
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
47
<<
get_fcr_name
() <<
": Entering do_conf() method"
;
48
49
if
(
m_configured
) {
50
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_WORK_STEPS
) <<
"This module is already configured!"
;
51
}
else
{
52
auto
cfg =
m_cfg
->get_dal<
appmodel::DataReaderModule
>(
get_fcr_name
());
53
54
std::map<uint32_t, const confmodel::DetectorStream*> streams;
55
for
(
const
auto
& det_connections : cfg->get_connections()) {
56
57
for
(
const
auto
& stream : det_connections->streams()) {
58
streams[stream->get_source_id()] = stream;
59
}
60
}
61
62
for
(
const
auto
& cb : cfg->get_raw_data_callbacks()) {
63
if
(
m_source_emus
.find(cb->UID()) ==
m_source_emus
.end()) {
64
TLOG
() <<
"Cannot find queue: "
<< cb->UID() << std::endl;
65
throw
datahandlinglibs::GenericConfigurationError(
ERS_HERE
,
"Cannot find queue: "
+ cb->UID());
66
}
67
if
(
m_source_emus
[cb->UID()]->is_configured()) {
68
TLOG
() <<
"Emulator for queue name "
<< cb->UID() <<
" was already configured"
;
69
throw
datahandlinglibs::GenericConfigurationError(
ERS_HERE
,
"Emulator configured twice: "
+ cb->UID());
70
}
71
m_source_emus
[cb->UID()]->set_sink_config(cb);
72
m_source_emus
[cb->UID()]->conf(streams[cb->get_source_id()], cfg->get_configuration()->get_emulation_conf());
73
}
74
for
(
auto
& [name, emu] :
m_source_emus
) {
75
if
(!emu->is_configured()) {
76
throw
datahandlinglibs::GenericConfigurationError(
ERS_HERE
,
"Not all links were configured"
);
77
}
78
}
79
80
// Mark configured
81
m_configured
=
true
;
82
}
83
84
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
85
<<
get_fcr_name
() <<
": Exiting do_conf() method"
;
86
}
87
88
void
89
FakeCardReaderBase::do_scrap
(
const
appfwk::DAQModule::CommandData_t& args)
90
{
91
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
92
<<
get_fcr_name
() <<
": Entering do_scrap() method"
;
93
94
for
(
auto
& [name, emu] :
m_source_emus
) {
95
emu->scrap(args);
96
}
97
98
m_configured
=
false
;
99
100
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
101
<<
get_fcr_name
() <<
": Exiting do_scrap() method"
;
102
}
103
void
104
FakeCardReaderBase::do_start
(
const
appfwk::DAQModule::CommandData_t& args)
105
{
106
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
107
<<
get_fcr_name
() <<
": Entering do_start() method"
;
108
109
m_run_marker
.store(
true
);
110
111
for
(
auto
& [name, emu] :
m_source_emus
) {
112
emu->acquire_callback();
113
emu->start(args);
114
}
115
116
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
117
<<
get_fcr_name
() <<
": Exiting do_start() method"
;
118
}
119
120
void
121
FakeCardReaderBase::do_stop
(
const
appfwk::DAQModule::CommandData_t& args)
122
{
123
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
124
<<
get_fcr_name
() <<
": Entering do_stop() method"
;
125
126
m_run_marker
=
false
;
127
128
for
(
auto
& [name, emu] :
m_source_emus
) {
129
emu->stop(args);
130
}
131
132
TLOG_DEBUG
(
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
)
133
<<
get_fcr_name
() <<
": Exiting do_stop() method"
;
134
}
135
136
}
// namespace datahandlinglibs
137
}
// namespace dunedaq
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:127
dunedaq::appmodel::DataReaderModule
Definition
DataReaderModule.hpp:36
dunedaq::datahandlinglibs::FakeCardReaderBase::m_name
std::string m_name
Definition
FakeCardReaderBase.hpp:79
dunedaq::datahandlinglibs::FakeCardReaderBase::init
void init(std::shared_ptr< appfwk::ConfigurationManager > cfg)
Definition
FakeCardReaderBase.hxx:12
dunedaq::datahandlinglibs::FakeCardReaderBase::get_fcr_name
std::string get_fcr_name()
Definition
FakeCardReaderBase.hpp:74
dunedaq::datahandlinglibs::FakeCardReaderBase::do_stop
void do_stop(const appfwk::DAQModule::CommandData_t &)
Definition
FakeCardReaderBase.hxx:121
dunedaq::datahandlinglibs::FakeCardReaderBase::do_scrap
void do_scrap(const appfwk::DAQModule::CommandData_t &)
Definition
FakeCardReaderBase.hxx:89
dunedaq::datahandlinglibs::FakeCardReaderBase::do_conf
void do_conf(const appfwk::DAQModule::CommandData_t &)
Definition
FakeCardReaderBase.hxx:44
dunedaq::datahandlinglibs::FakeCardReaderBase::m_source_emus
std::map< std::string, std::shared_ptr< datahandlinglibs::SourceEmulatorConcept > > m_source_emus
Definition
FakeCardReaderBase.hpp:82
dunedaq::datahandlinglibs::FakeCardReaderBase::create_source_emulator
virtual std::shared_ptr< datahandlinglibs::SourceEmulatorConcept > create_source_emulator(const appmodel::DataMoveCallbackConf *cb, std::atomic< bool > &run_marker)=0
dunedaq::datahandlinglibs::FakeCardReaderBase::m_cfg
std::shared_ptr< appfwk::ConfigurationManager > m_cfg
Definition
FakeCardReaderBase.hpp:80
dunedaq::datahandlinglibs::FakeCardReaderBase::FakeCardReaderBase
FakeCardReaderBase(const std::string &name)
FakeCardReaderBase Constructor.
Definition
FakeCardReaderBase.hxx:4
dunedaq::datahandlinglibs::FakeCardReaderBase::do_start
void do_start(const appfwk::DAQModule::CommandData_t &)
Definition
FakeCardReaderBase.hxx:104
dunedaq::datahandlinglibs::FakeCardReaderBase::m_run_marker
std::atomic< bool > m_run_marker
Definition
FakeCardReaderBase.hpp:88
dunedaq::datahandlinglibs::FakeCardReaderBase::m_configured
bool m_configured
Definition
FakeCardReaderBase.hpp:78
ers::Issue
Base class for any user define issue.
Definition
Issue.hpp:76
TLOG_DEBUG
#define TLOG_DEBUG(lvl,...)
Definition
Logging.hpp:116
TLOG
#define TLOG(...)
Definition
macro.hpp:21
dunedaq::datahandlinglibs::logging::TLVL_ENTER_EXIT_METHODS
@ TLVL_ENTER_EXIT_METHODS
Definition
ReadoutLogging.hpp:22
dunedaq::datahandlinglibs::logging::TLVL_WORK_STEPS
@ TLVL_WORK_STEPS
Definition
ReadoutLogging.hpp:23
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
Generated on
for DUNE-DAQ by
1.18.0