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