DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::timing::TopDesign Class Reference

Base class for timing top design nodes with IO class. More...

#include <TopDesign.hpp>

Inheritance diagram for dunedaq::timing::TopDesign:
[legend]
Collaboration diagram for dunedaq::timing::TopDesign:
[legend]

Public Member Functions

 TopDesign (const uhal::Node &node)
 
virtual ~TopDesign ()
 
const IONodeget_io_node_plain () const override
 Get io node pointer.
 
void soft_reset_io () const override
 Reset timing node.
 
void reset_io (const std::string &clock_config_file) const override
 Reset timing node.
 
void reset_io (const ClockSource &clock_source) const override
 Reset timing node.
 
void configure (ClockSource clock_source) const override
 Prepare the timing device for data taking.
 
std::string get_hardware_info (bool print_out=false) const override
 Print hardware information.
 
void get_info (timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
 Give info to collector.
 
- Public Member Functions inherited from dunedaq::timing::TopDesignInterface
 TopDesignInterface (const uhal::Node &node)
 
virtual ~TopDesignInterface ()
 
template<class IO >
const IO * get_io_node () const
 
virtual uint32_t read_firmware_version () const =0
 Read firmware version.
 
virtual void validate_firmware_version () const =0
 Validate firmware version.
 
- Public Member Functions inherited from dunedaq::timing::TimingNode
 TimingNode (const uhal::Node &node)
 
virtual ~TimingNode ()
 
virtual std::string get_status (bool print_out=false) const =0
 Get the status string of the timing node. Optionally print it.
 
std::map< std::string, uhal::ValWord< uint32_t > > read_sub_nodes (const uhal::Node &node, bool dispatch=true) const
 Read subnodes.
 
void reset_sub_nodes (const uhal::Node &node, uint32_t aValue=0x0, bool dispatch=true) const
 Reset subnodes.
 

Detailed Description

Base class for timing top design nodes with IO class.

Definition at line 38 of file TopDesign.hpp.

Constructor & Destructor Documentation

◆ TopDesign()

dunedaq::timing::TopDesign::TopDesign ( const uhal::Node & node)
inlineexplicit

Definition at line 41 of file TopDesign.hpp.

42 : TopDesignInterface(node) {}

◆ ~TopDesign()

virtual dunedaq::timing::TopDesign::~TopDesign ( )
inlinevirtual

Definition at line 43 of file TopDesign.hpp.

43{}

Member Function Documentation

◆ configure()

void dunedaq::timing::TopDesign::configure ( ClockSource clock_source) const
inlineoverridevirtual

Prepare the timing device for data taking.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 81 of file TopDesign.hpp.

82 {
83 // Hard resets
84 this->reset_io(clock_source);
85
86 auto start = std::chrono::high_resolution_clock::now();
87
88 // Wait for clocks to be happy
89 while (true)
90 {
91 if (get_io_node_plain()->clocks_ok())
92 {
93 TLOG() << "Clocks ready!";
94 break;
95 }
96
97 auto now = std::chrono::high_resolution_clock::now();
98 auto ms_since_start = std::chrono::duration_cast<std::chrono::milliseconds>(now - start);
99
100 if (ms_since_start.count() > 500)
101 throw ClocksNotReady(ERS_HERE, "IO");
102
103 std::this_thread::sleep_for(std::chrono::microseconds(10));
104 }
105 }
#define ERS_HERE
const IONode * get_io_node_plain() const override
Get io node pointer.
Definition TopDesign.hpp:48
void reset_io(const std::string &clock_config_file) const override
Reset timing node.
Definition TopDesign.hpp:64
static int64_t now()
#define TLOG(...)
Definition macro.hpp:22

◆ get_hardware_info()

std::string dunedaq::timing::TopDesign::get_hardware_info ( bool print_out = false) const
inlineoverridevirtual

Print hardware information.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 110 of file TopDesign.hpp.

111 {
113 if (print_out)
114 TLOG() << info;
115 return info;
116 }
virtual std::string get_hardware_info(bool print_out=false) const
Print hardware information.
Definition IONode.cpp:118

◆ get_info()

void dunedaq::timing::TopDesign::get_info ( timingfirmwareinfo::TimingDeviceInfo & mon_data) const
inlineoverridevirtual

Give info to collector.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 121 of file TopDesign.hpp.

122 {
123 get_io_node_plain()->get_info(mon_data.pll_info);
124 }
virtual void get_info(timinghardwareinfo::TimingPLLMonitorData &mon_data) const
Definition IONode.hpp:186

◆ get_io_node_plain()

const IONode * dunedaq::timing::TopDesign::get_io_node_plain ( ) const
inlineoverridevirtual

Get io node pointer.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 48 of file TopDesign.hpp.

49 {
50 return dynamic_cast<const IONode*>(&uhal::Node::getNode("io"));
51 }

◆ reset_io() [1/2]

void dunedaq::timing::TopDesign::reset_io ( const ClockSource & clock_source) const
inlineoverridevirtual

Reset timing node.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 72 of file TopDesign.hpp.

73 {
74 get_io_node_plain()->reset(clock_source);
75 }
virtual void reset(const std::string &clock_config_file) const =0
Reset timing node.

◆ reset_io() [2/2]

void dunedaq::timing::TopDesign::reset_io ( const std::string & clock_config_file) const
inlineoverridevirtual

Reset timing node.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 64 of file TopDesign.hpp.

65 {
66 get_io_node_plain()->reset(clock_config_file);
67 }

◆ soft_reset_io()

void dunedaq::timing::TopDesign::soft_reset_io ( ) const
inlineoverridevirtual

Reset timing node.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 56 of file TopDesign.hpp.

57 {
59 }
virtual void soft_reset() const
Reset timing node.
Definition IONode.cpp:305

The documentation for this class was generated from the following file: