DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TopDesignInterface.hpp
Go to the documentation of this file.
1
12#ifndef TIMING_INCLUDE_TIMING_TOPDESIGNINTERFACE_HPP_
13#define TIMING_INCLUDE_TIMING_TOPDESIGNINTERFACE_HPP_
14
15// PDT Headers
16#include "TimingIssues.hpp"
17#include "timing/TimingNode.hpp"
18#include "timing/IONode.hpp"
19
22
23// uHal Headers
24#include "uhal/DerivedNode.hpp"
25
26#include <nlohmann/json.hpp>
27
28// C++ Headers
29#include <chrono>
30#include <sstream>
31#include <string>
32
33namespace dunedaq {
34namespace timing {
35
40{
41public:
42 explicit TopDesignInterface(const uhal::Node& node)
43 : TimingNode(node) {}
45
49 virtual const IONode* get_io_node_plain() const = 0;
50
51
52 template<class IO>
53 const IO* get_io_node() const
54 {
55 return dynamic_cast<const IO*>(get_io_node_plain());
56 }
57
61 virtual void soft_reset_io() const = 0;
62
66 virtual void reset_io(const std::string& clock_config_file) const = 0;
67
71 virtual void reset_io(const ClockSource& clock_source) const = 0;
72
77 virtual void configure(ClockSource clock_source) const = 0;
78
82 virtual std::string get_hardware_info(bool print_out = false) const = 0;
83
89 virtual uint32_t read_firmware_version() const = 0; // NOLINT(build/unsigned)
90
95 virtual void validate_firmware_version() const = 0;
96
100 virtual void get_info(timingfirmwareinfo::TimingDeviceInfo& mon_data) const = 0;
101
102};
103
104} // namespace timing
105} // namespace dunedaq
106
107#endif // TIMING_INCLUDE_TIMING_TOPDESIGNINTERFACE_HPP_
Base class for timing IO nodes.
Definition IONode.hpp:44
Base class for timing nodes.
Base class for timing top design nodes.
virtual void soft_reset_io() const =0
Reset timing node.
virtual uint32_t read_firmware_version() const =0
Read firmware version.
virtual void reset_io(const ClockSource &clock_source) const =0
Reset timing node.
virtual const IONode * get_io_node_plain() const =0
Get io node pointer.
virtual void reset_io(const std::string &clock_config_file) const =0
Reset timing node.
virtual void validate_firmware_version() const =0
Validate firmware version.
virtual std::string get_hardware_info(bool print_out=false) const =0
Print hardware information.
virtual void configure(ClockSource clock_source) const =0
Prepare the timing device for data taking.
virtual void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const =0
Give info to collector.
Including Qt Headers.