DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
flxlibs
src
ElinkConcept.hpp
Go to the documentation of this file.
1
10
#ifndef FLXLIBS_SRC_ELINKCONCEPT_HPP_
11
#define FLXLIBS_SRC_ELINKCONCEPT_HPP_
12
13
#include "
DefaultParserImpl.hpp
"
14
15
#include "
appfwk/DAQModule.hpp
"
16
#include "packetformat/detail/block_parser.hpp"
17
18
#include "
appmodel/DataMoveCallbackConf.hpp
"
19
20
#include <memory>
21
#include <sstream>
22
#include <string>
23
24
namespace
dunedaq
{
25
namespace
flxlibs
{
26
27
class
ElinkConcept
:
public
opmonlib::MonitorableObject
28
{
29
public
:
30
ElinkConcept
()
31
:
m_parser_impl
()
32
,
m_card_id
(0)
33
,
m_logical_unit
(0)
34
,
m_link_id
(0)
35
,
m_link_tag
(0)
36
,
m_elink_str
(
""
)
37
,
m_elink_source_tid
(
""
)
38
{
39
m_parser
= std::make_unique<felix::packetformat::BlockParser<DefaultParserImpl>>(
m_parser_impl
);
40
}
41
virtual
~ElinkConcept
() {}
42
43
ElinkConcept
(
const
ElinkConcept
&) =
delete
;
44
ElinkConcept
&
operator=
(
const
ElinkConcept
&) =
delete
;
45
ElinkConcept
(
ElinkConcept
&&) =
delete
;
46
ElinkConcept
&
operator=
(
ElinkConcept
&&) =
delete
;
47
48
virtual
void
init
(
const
size_t
block_queue_capacity) = 0;
49
virtual
void
acquire_callback
() = 0;
50
51
virtual
void
conf
(
size_t
block_size,
bool
is_32b_trailers) = 0;
52
virtual
void
start
() = 0;
53
virtual
void
stop
() = 0;
54
55
virtual
bool
queue_in_block_address
(uint64_t block_addr) = 0;
// NOLINT
56
57
DefaultParserImpl
&
get_parser
() {
return
std::ref(
m_parser_impl
); }
58
59
void
set_sink_config
(
const
appmodel::DataMoveCallbackConf
* sink_conf)
60
{
61
m_sink_conf
= sink_conf;
62
}
63
64
void
set_ids
(
int
card,
int
slr,
int
id
,
int
tag)
65
{
66
m_card_id
= card;
67
m_logical_unit
= slr;
68
m_link_id
= id;
69
m_link_tag
= tag;
70
71
std::ostringstream lidstrs;
72
lidstrs <<
"Elink["
73
<<
"cid:"
<< std::to_string(
m_card_id
) <<
"|"
74
<<
"slr:"
<< std::to_string(
m_logical_unit
) <<
"|"
75
<<
"lid:"
<< std::to_string(
m_link_id
) <<
"|"
76
<<
"tag:"
<< std::to_string(
m_link_tag
) <<
"]"
;
77
m_elink_str
= lidstrs.str();
78
79
std::ostringstream tidstrs;
80
tidstrs <<
"ept-"
<< std::to_string(
m_card_id
) <<
"-"
<< std::to_string(
m_logical_unit
);
81
m_elink_source_tid
= tidstrs.str();
82
83
}
84
85
const
appmodel::DataMoveCallbackConf
*
m_sink_conf
;
86
87
protected
:
88
// Block Parser
89
DefaultParserImpl
m_parser_impl
;
90
std::unique_ptr<felix::packetformat::BlockParser<DefaultParserImpl>>
m_parser
;
91
92
int
m_card_id
;
93
int
m_logical_unit
;
94
int
m_link_id
;
95
int
m_link_tag
;
96
std::string
m_elink_str
;
97
std::string
m_elink_source_tid
;
98
std::chrono::time_point<std::chrono::high_resolution_clock>
m_t0
;
99
100
private
:
101
};
102
103
}
// namespace flxlibs
104
}
// namespace dunedaq
105
106
#endif
// FLXLIBS_SRC_ELINKCONCEPT_HPP_
DAQModule.hpp
DefaultParserImpl.hpp
dunedaq::appmodel::DataMoveCallbackConf
Definition
DataMoveCallbackConf.hpp:20
dunedaq::flxlibs::DefaultParserImpl
Definition
DefaultParserImpl.hpp:26
dunedaq::flxlibs::ElinkConcept::stop
virtual void stop()=0
dunedaq::flxlibs::ElinkConcept::~ElinkConcept
virtual ~ElinkConcept()
Definition
ElinkConcept.hpp:41
dunedaq::flxlibs::ElinkConcept::m_elink_str
std::string m_elink_str
Definition
ElinkConcept.hpp:96
dunedaq::flxlibs::ElinkConcept::operator=
ElinkConcept & operator=(const ElinkConcept &)=delete
ElinkConcept is not copy-assginable.
dunedaq::flxlibs::ElinkConcept::m_logical_unit
int m_logical_unit
Definition
ElinkConcept.hpp:93
dunedaq::flxlibs::ElinkConcept::m_link_id
int m_link_id
Definition
ElinkConcept.hpp:94
dunedaq::flxlibs::ElinkConcept::get_parser
DefaultParserImpl & get_parser()
Definition
ElinkConcept.hpp:57
dunedaq::flxlibs::ElinkConcept::m_parser
std::unique_ptr< felix::packetformat::BlockParser< DefaultParserImpl > > m_parser
Definition
ElinkConcept.hpp:90
dunedaq::flxlibs::ElinkConcept::ElinkConcept
ElinkConcept()
Definition
ElinkConcept.hpp:30
dunedaq::flxlibs::ElinkConcept::ElinkConcept
ElinkConcept(ElinkConcept &&)=delete
ElinkConcept is not move-constructible.
dunedaq::flxlibs::ElinkConcept::set_sink_config
void set_sink_config(const appmodel::DataMoveCallbackConf *sink_conf)
Definition
ElinkConcept.hpp:59
dunedaq::flxlibs::ElinkConcept::m_t0
std::chrono::time_point< std::chrono::high_resolution_clock > m_t0
Definition
ElinkConcept.hpp:98
dunedaq::flxlibs::ElinkConcept::m_parser_impl
DefaultParserImpl m_parser_impl
Definition
ElinkConcept.hpp:89
dunedaq::flxlibs::ElinkConcept::m_link_tag
int m_link_tag
Definition
ElinkConcept.hpp:95
dunedaq::flxlibs::ElinkConcept::queue_in_block_address
virtual bool queue_in_block_address(uint64_t block_addr)=0
dunedaq::flxlibs::ElinkConcept::operator=
ElinkConcept & operator=(ElinkConcept &&)=delete
ElinkConcept is not move-assignable.
dunedaq::flxlibs::ElinkConcept::m_sink_conf
const appmodel::DataMoveCallbackConf * m_sink_conf
Definition
ElinkConcept.hpp:85
dunedaq::flxlibs::ElinkConcept::m_card_id
int m_card_id
Definition
ElinkConcept.hpp:92
dunedaq::flxlibs::ElinkConcept::init
virtual void init(const size_t block_queue_capacity)=0
dunedaq::flxlibs::ElinkConcept::set_ids
void set_ids(int card, int slr, int id, int tag)
Definition
ElinkConcept.hpp:64
dunedaq::flxlibs::ElinkConcept::m_elink_source_tid
std::string m_elink_source_tid
Definition
ElinkConcept.hpp:97
dunedaq::flxlibs::ElinkConcept::conf
virtual void conf(size_t block_size, bool is_32b_trailers)=0
dunedaq::flxlibs::ElinkConcept::acquire_callback
virtual void acquire_callback()=0
dunedaq::flxlibs::ElinkConcept::start
virtual void start()=0
dunedaq::flxlibs::ElinkConcept::ElinkConcept
ElinkConcept(const ElinkConcept &)=delete
ElinkConcept is not copy-constructible.
dunedaq::opmonlib::MonitorableObject
Definition
MonitorableObject.hpp:74
DataMoveCallbackConf.hpp
dunedaq::flxlibs
Definition
AvailableParserOperations.hpp:27
dunedaq
Including Qt Headers.
Definition
module.cpp:16
Generated on
for DUNE-DAQ by
1.17.0