DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
HSIDesignInterface.hpp
Go to the documentation of this file.
1
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"
19
22
23// uHal Headers
24#include "uhal/DerivedNode.hpp"
25
26// C++ Headers
27#include <chrono>
28#include <sstream>
29#include <string>
30
31namespace dunedaq {
32namespace timing {
33
38{
39
40public:
41 explicit HSIDesignInterface(const uhal::Node& node)
43 {}
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
88
93 {
94
95 get_hsi_node().get_info(mon_data);
96 }
97
100};
101
102} // namespace timing
103} // namespace dunedaq
104
105#endif // TIMING_INCLUDE_TIMING_HSIDESIGNINTERFACE_HPP_
Base class for timing endpoint design nodes.
virtual void get_info(uint32_t ept_id, timingendpointinfo::TimingEndpointInfo &mon_data) const
Give info to collector.
Base class for timing hsi design nodes.
virtual void get_info(timingfirmwareinfo::HSIFirmwareMonitorData &mon_data) const
Give info to collector.
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.
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.
virtual const HSINode & get_hsi_node() const
Get the HSI node.
Class for HSI nodes.
Definition HSINode.hpp:37
void get_info(timingfirmwareinfo::HSIFirmwareMonitorData &mon_data) const
Collect monitoring information for timing endpoint.
Definition HSINode.cpp:315
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
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
virtual const IONode * get_io_node_plain() const =0
Get io node pointer.
virtual void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const =0
Give info to collector.
Including Qt Headers.
timingendpointinfo::TimingEndpointInfo endpoint_info
Definition Structs.hpp:117