12#ifndef TIMING_INCLUDE_TIMING_TOPDESIGN_HPP_
13#define TIMING_INCLUDE_TIMING_TOPDESIGN_HPP_
23#include "uhal/DerivedNode.hpp"
25#include <nlohmann/json.hpp>
50 return dynamic_cast<const IONode*
>(&uhal::Node::getNode(
"io"));
64 void reset_io(
const std::string& clock_config_file)
const override
86 auto start = std::chrono::high_resolution_clock::now();
93 TLOG() <<
"Clocks ready!";
97 auto now = std::chrono::high_resolution_clock::now();
98 auto ms_since_start = std::chrono::duration_cast<std::chrono::milliseconds>(
now - start);
100 if (ms_since_start.count() > 500)
101 throw ClocksNotReady(
ERS_HERE,
"IO");
103 std::this_thread::sleep_for(std::chrono::microseconds(10));
Base class for timing IO nodes.
virtual void reset(const std::string &clock_config_file) const =0
Reset timing node.
virtual std::string get_hardware_info(bool print_out=false) const
Print hardware information.
virtual void soft_reset() const
Reset timing node.
virtual void get_info(timinghardwareinfo::TimingPLLMonitorData &mon_data) const
Base class for timing top design nodes.
Base class for timing top design nodes with IO class.
void configure(ClockSource clock_source) const override
Prepare the timing device for data taking.
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.
void soft_reset_io() const override
Reset timing node.
void reset_io(const ClockSource &clock_source) const override
Reset timing node.
const IONode * get_io_node_plain() const override
Get io node pointer.
std::string get_hardware_info(bool print_out=false) const override
Print hardware information.
void reset_io(const std::string &clock_config_file) const override
Reset timing node.
TopDesign(const uhal::Node &node)
timinghardwareinfo::TimingPLLMonitorData pll_info