DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
hermesmodules
include
hermesmodules
HermesCoreController.hpp
Go to the documentation of this file.
1
2
#ifndef HERMESMODULES_INCLUDE_HERMESCORECONTROLLER_HPP_
3
#define HERMESMODULES_INCLUDE_HERMESCORECONTROLLER_HPP_
4
5
#include "
ers/Issue.hpp
"
6
#include "
logging/Logging.hpp
"
// NOTE: if ISSUES ARE DECLARED BEFORE include logging/Logging.hpp, TLOG_DEBUG<<issue wont work.
7
#include "uhal/uhal.hpp"
8
9
#include "
hermesmodules/opmon/hermescontroller.pb.h
"
10
namespace
dunedaq
{
11
12
ERS_DECLARE_ISSUE
(
hermesmodules
,
13
LinkDoesNotExist,
14
"Hermes Link "
<< lid <<
" does not exist"
,
15
((
int
)lid)
16
);
17
18
ERS_DECLARE_ISSUE
(
hermesmodules
,
19
InputBufferDoesNotExist,
20
"Hermes Input Buffer "
<< bid <<
" does not exist"
,
21
((
int
)bid)
22
);
23
24
25
ERS_DECLARE_ISSUE
(
hermesmodules
,
26
MgtDoesNotExist,
27
"Hermes MGT "
<< mgtid <<
" does not exist"
,
28
((
int
)mgtid)
29
);
30
31
ERS_DECLARE_ISSUE
(
hermesmodules
,
32
MagicNumberError,
33
"Hermes Magic number failed "
<< found <<
" ("
<< expected <<
")"
,
34
((uint32_t)found)((uint32_t)expected)
35
);
36
37
38
ERS_DECLARE_ISSUE
(
hermesmodules
,
39
LinkInError,
40
"Hermes Link "
<< link <<
" is in error (err:"
<< err <<
", eth_rdy:"
<< eth_rdy <<
", src_rdy:"
<< src_rdy <<
", udp_rdy:"
<< udp_rdy <<
" )"
,
41
((uint16_t)link)((
bool
)err)((
bool
)eth_rdy)((
bool
)src_rdy)((
bool
)udp_rdy)
42
);
43
44
namespace
hermesmodules
{
45
46
class
HermesCoreController
{
47
48
public
:
49
50
struct
CoreInfo
{
51
uint32_t
design
;
52
uint32_t
major
;
53
uint32_t
minor
;
54
uint32_t
patch
;
55
uint32_t
n_mgt
;
56
uint32_t
n_src
;
57
uint32_t
ref_freq
;
58
uint32_t
srcs_per_mux
;
59
};
60
61
struct
LinkGeoInfo
{
62
uint16_t
detid
;
63
uint16_t
crateid
;
64
uint16_t
slotid
;
65
};
66
67
explicit
HermesCoreController
(uhal::HwInterface, std::string readout_id=
""
);
68
virtual
~HermesCoreController
();
69
70
const
CoreInfo
&
get_info
()
const
{
return
m_core_info
; }
71
72
void
sel_tx_mux
(uint16_t i) ;
73
74
void
sel_tx_mux_buf
(uint16_t i);
75
76
void
sel_udp_core
(uint16_t i);
77
78
void
reset
(
bool
nuke=
false
);
79
80
bool
is_link_in_error
(uint16_t link,
bool
do_throw=
false
);
81
82
void
enable
(uint16_t link,
bool
enable
);
83
84
void
config_mux
(uint16_t link, uint16_t det, uint16_t crate, uint16_t slot);
85
86
void
config_udp
(uint16_t link, uint64_t src_mac, uint32_t src_ip, uint16_t src_port, uint64_t dst_mac, uint32_t dst_ip, uint16_t dst_port, uint32_t filters);
87
88
void
config_fake_src
(uint16_t link, uint16_t n_src, uint16_t data_len, uint16_t rate);
89
90
LinkGeoInfo
read_link_geo_info
(uint16_t link);
91
92
opmon::LinkInfo
read_link_stats
(uint16_t link);
93
94
95
private
:
96
97
void
load_hw_info
();
98
99
uhal::HwInterface
m_hw
;
100
101
const
uhal::Node&
m_readout
;
102
103
CoreInfo
m_core_info
;
104
105
};
106
107
}
108
}
109
110
#endif
/* HERMESMODULES_INCLUDE_HERMESCORECONTROLLER_HPP_ */
Issue.hpp
dunedaq::hermesmodules::HermesCoreController::get_info
const CoreInfo & get_info() const
Definition
HermesCoreController.hpp:70
dunedaq::hermesmodules::HermesCoreController::m_hw
uhal::HwInterface m_hw
Definition
HermesCoreController.hpp:99
dunedaq::hermesmodules::HermesCoreController::sel_udp_core
void sel_udp_core(uint16_t i)
Definition
HermesCoreController.cpp:95
dunedaq::hermesmodules::HermesCoreController::read_link_stats
opmon::LinkInfo read_link_stats(uint16_t link)
Definition
HermesCoreController.cpp:321
dunedaq::hermesmodules::HermesCoreController::m_core_info
CoreInfo m_core_info
Definition
HermesCoreController.hpp:103
dunedaq::hermesmodules::HermesCoreController::HermesCoreController
HermesCoreController(uhal::HwInterface, std::string readout_id="")
Definition
HermesCoreController.cpp:11
dunedaq::hermesmodules::HermesCoreController::~HermesCoreController
virtual ~HermesCoreController()
Definition
HermesCoreController.cpp:19
dunedaq::hermesmodules::HermesCoreController::config_udp
void config_udp(uint16_t link, uint64_t src_mac, uint32_t src_ip, uint16_t src_port, uint64_t dst_mac, uint32_t dst_ip, uint16_t dst_port, uint32_t filters)
Definition
HermesCoreController.cpp:233
dunedaq::hermesmodules::HermesCoreController::config_mux
void config_mux(uint16_t link, uint16_t det, uint16_t crate, uint16_t slot)
Definition
HermesCoreController.cpp:217
dunedaq::hermesmodules::HermesCoreController::sel_tx_mux_buf
void sel_tx_mux_buf(uint16_t i)
Definition
HermesCoreController.cpp:83
dunedaq::hermesmodules::HermesCoreController::load_hw_info
void load_hw_info()
Definition
HermesCoreController.cpp:25
dunedaq::hermesmodules::HermesCoreController::reset
void reset(bool nuke=false)
Definition
HermesCoreController.cpp:107
dunedaq::hermesmodules::HermesCoreController::m_readout
const uhal::Node & m_readout
Definition
HermesCoreController.hpp:101
dunedaq::hermesmodules::HermesCoreController::is_link_in_error
bool is_link_in_error(uint16_t link, bool do_throw=false)
Definition
HermesCoreController.cpp:146
dunedaq::hermesmodules::HermesCoreController::sel_tx_mux
void sel_tx_mux(uint16_t i)
Definition
HermesCoreController.cpp:71
dunedaq::hermesmodules::HermesCoreController::read_link_geo_info
LinkGeoInfo read_link_geo_info(uint16_t link)
Definition
HermesCoreController.cpp:306
dunedaq::hermesmodules::HermesCoreController::config_fake_src
void config_fake_src(uint16_t link, uint16_t n_src, uint16_t data_len, uint16_t rate)
Definition
HermesCoreController.cpp:273
dunedaq::hermesmodules::opmon::LinkInfo
Definition
hermescontroller.pb.h:83
hermescontroller.pb.h
Logging.hpp
ERS_DECLARE_ISSUE
#define ERS_DECLARE_ISSUE( namespace_name, class_name, message_, attributes)
Definition
macro.hpp:65
dunedaq
Including Qt Headers.
Definition
module.cpp:16
enable
Definition
enable.py:1
hermesmodules
Definition
__init__.py:1
dunedaq::hermesmodules::HermesCoreController::CoreInfo
Definition
HermesCoreController.hpp:50
dunedaq::hermesmodules::HermesCoreController::CoreInfo::srcs_per_mux
uint32_t srcs_per_mux
Definition
HermesCoreController.hpp:58
dunedaq::hermesmodules::HermesCoreController::CoreInfo::major
uint32_t major
Definition
HermesCoreController.hpp:52
dunedaq::hermesmodules::HermesCoreController::CoreInfo::n_src
uint32_t n_src
Definition
HermesCoreController.hpp:56
dunedaq::hermesmodules::HermesCoreController::CoreInfo::design
uint32_t design
Definition
HermesCoreController.hpp:51
dunedaq::hermesmodules::HermesCoreController::CoreInfo::n_mgt
uint32_t n_mgt
Definition
HermesCoreController.hpp:55
dunedaq::hermesmodules::HermesCoreController::CoreInfo::minor
uint32_t minor
Definition
HermesCoreController.hpp:53
dunedaq::hermesmodules::HermesCoreController::CoreInfo::ref_freq
uint32_t ref_freq
Definition
HermesCoreController.hpp:57
dunedaq::hermesmodules::HermesCoreController::CoreInfo::patch
uint32_t patch
Definition
HermesCoreController.hpp:54
dunedaq::hermesmodules::HermesCoreController::LinkGeoInfo
Definition
HermesCoreController.hpp:61
dunedaq::hermesmodules::HermesCoreController::LinkGeoInfo::detid
uint16_t detid
Definition
HermesCoreController.hpp:62
dunedaq::hermesmodules::HermesCoreController::LinkGeoInfo::crateid
uint16_t crateid
Definition
HermesCoreController.hpp:63
dunedaq::hermesmodules::HermesCoreController::LinkGeoInfo::slotid
uint16_t slotid
Definition
HermesCoreController.hpp:64
Generated on
for DUNE-DAQ by
1.17.0