DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
timing
include
timing
HSIDesignInterface.hpp
Go to the documentation of this file.
1
11
12
#ifndef TIMING_INCLUDE_TIMING_HSIDESIGNINTERFACE_HPP_
13
#define TIMING_INCLUDE_TIMING_HSIDESIGNINTERFACE_HPP_
14
15
// PDT Headers
16
#include "
TimingIssues.hpp
"
17
#include "
timing/HSINode.hpp
"
18
#include "
timing/EndpointDesignInterface.hpp
"
19
20
#include "
timing/timingfirmwareinfo/Nljs.hpp
"
21
#include "
timing/timingfirmwareinfo/Structs.hpp
"
22
23
// uHal Headers
24
#include "uhal/DerivedNode.hpp"
25
26
// C++ Headers
27
#include <chrono>
28
#include <sstream>
29
#include <string>
30
31
namespace
dunedaq
{
32
namespace
timing
{
33
37
class
HSIDesignInterface
:
virtual
public
EndpointDesignInterface
38
{
39
40
public
:
41
explicit
HSIDesignInterface
(
const
uhal::Node& node)
42
:
EndpointDesignInterface
(node)
43
{}
44
virtual
~HSIDesignInterface
() {}
45
51
virtual
const
HSINode
&
get_hsi_node
()
const
52
{
53
54
auto
top_level_hsi_nodes = getNodes(
"hsi"
);
55
if
(top_level_hsi_nodes.size() > 0)
56
{
57
return
uhal::Node::getNode<HSINode>(
"hsi"
);
58
}
59
else
60
{
61
return
uhal::Node::getNode<HSINode>(
"endpoint0.hsi"
);
62
}
63
}
64
69
virtual
void
configure_hsi
(uint32_t src,
// NOLINT(build/unsigned)
70
uint32_t re_mask,
// NOLINT(build/unsigned)
71
uint32_t fe_mask,
// NOLINT(build/unsigned)
72
uint32_t inv_mask,
// NOLINT(build/unsigned)
73
double
rate,
74
bool
dispatch =
true
)
const
75
{
76
uint32_t firmware_frequency =
get_io_node_plain
()->
read_firmware_frequency
();
// NOLINT(build/unsigned)
77
get_hsi_node
().
configure_hsi
(src, re_mask, fe_mask, inv_mask, rate, firmware_frequency, dispatch);
78
}
79
83
void
get_info
(
timingfirmwareinfo::TimingDeviceInfo
& mon_data)
const override
84
{
85
EndpointDesignInterface::get_info
(0, mon_data.
endpoint_info
);
86
HSIDesignInterface::get_info
(mon_data.
hsi_info
);
87
}
88
92
virtual
void
get_info
(
timingfirmwareinfo::HSIFirmwareMonitorData
& mon_data)
const
93
{
94
95
get_hsi_node
().
get_info
(mon_data);
96
}
97
98
using
EndpointDesignInterface::get_info
;
99
using
TopDesignInterface::get_info
;
100
};
101
102
}
// namespace timing
103
}
// namespace dunedaq
104
105
#endif
// TIMING_INCLUDE_TIMING_HSIDESIGNINTERFACE_HPP_
EndpointDesignInterface.hpp
HSINode.hpp
dunedaq::timing::EndpointDesignInterface::get_info
virtual void get_info(uint32_t ept_id, timingendpointinfo::TimingEndpointInfo &mon_data) const
Give info to collector.
Definition
EndpointDesignInterface.hpp:70
dunedaq::timing::EndpointDesignInterface::EndpointDesignInterface
EndpointDesignInterface(const uhal::Node &node)
Definition
EndpointDesignInterface.hpp:41
dunedaq::timing::HSIDesignInterface::~HSIDesignInterface
virtual ~HSIDesignInterface()
Definition
HSIDesignInterface.hpp:44
dunedaq::timing::HSIDesignInterface::get_info
virtual void get_info(timingfirmwareinfo::HSIFirmwareMonitorData &mon_data) const
Give info to collector.
Definition
HSIDesignInterface.hpp:92
dunedaq::timing::HSIDesignInterface::HSIDesignInterface
HSIDesignInterface(const uhal::Node &node)
Definition
HSIDesignInterface.hpp:41
dunedaq::timing::HSIDesignInterface::configure_hsi
virtual void configure_hsi(uint32_t src, uint32_t re_mask, uint32_t fe_mask, uint32_t inv_mask, double rate, bool dispatch=true) const
Configure the HSI node.
Definition
HSIDesignInterface.hpp:69
dunedaq::timing::HSIDesignInterface::get_info
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.
Definition
HSIDesignInterface.hpp:83
dunedaq::timing::HSIDesignInterface::get_hsi_node
virtual const HSINode & get_hsi_node() const
Get the HSI node.
Definition
HSIDesignInterface.hpp:51
dunedaq::timing::HSINode
Class for HSI nodes.
Definition
HSINode.hpp:37
dunedaq::timing::HSINode::get_info
void get_info(timingfirmwareinfo::HSIFirmwareMonitorData &mon_data) const
Collect monitoring information for timing endpoint.
Definition
HSINode.cpp:315
dunedaq::timing::HSINode::configure_hsi
void configure_hsi(uint32_t src, uint32_t re_mask, uint32_t fe_mask, uint32_t inv_mask, double rate, uint32_t clock_frequency_hz, bool dispatch=true) const
Configure HSI triggering.
Definition
HSINode.cpp:174
dunedaq::timing::IONode::read_firmware_frequency
virtual uint32_t read_firmware_frequency() const
Read the word identifying the frequency [units of Hz] of the firmware in the FPGA.
Definition
IONode.cpp:78
dunedaq::timing::TopDesignInterface::get_io_node_plain
virtual const IONode * get_io_node_plain() const =0
Get io node pointer.
dunedaq::timing::TopDesignInterface::get_info
virtual void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const =0
Give info to collector.
TimingIssues.hpp
dunedaq::timing
< Message parameters
Definition
BoreasDesign.hpp:29
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::timing::timingfirmwareinfo::HSIFirmwareMonitorData
Definition
Structs.hpp:31
dunedaq::timing::timingfirmwareinfo::TimingDeviceInfo
Definition
Structs.hpp:105
dunedaq::timing::timingfirmwareinfo::TimingDeviceInfo::hsi_info
HSIFirmwareMonitorData hsi_info
Definition
Structs.hpp:120
dunedaq::timing::timingfirmwareinfo::TimingDeviceInfo::endpoint_info
timingendpointinfo::TimingEndpointInfo endpoint_info
Definition
Structs.hpp:117
Nljs.hpp
Structs.hpp
Generated on
for DUNE-DAQ by
1.17.0