DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
FanoutDesign.cpp
Go to the documentation of this file.
2
3#include <sstream>
4#include <string>
5
6namespace dunedaq::timing {
7
8UHAL_REGISTER_DERIVED_NODE(FanoutDesign)
9
10//-----------------------------------------------------------------------------
11FanoutDesign::FanoutDesign(const uhal::Node& node)
12 : TopDesignInterface(node)
13 , MuxDesignInterface(node)
14 , TopDesign(node)
17{}
18//-----------------------------------------------------------------------------
19
20//-----------------------------------------------------------------------------
23//-----------------------------------------------------------------------------
24
25//-----------------------------------------------------------------------------
26std::string
27FanoutDesign::get_status(bool print_out) const
28{
29 std::stringstream status;
30 status << get_io_node_plain()->get_pll_status();
31 // TODO fanout specific status
32 if (print_out)
33 TLOG() << status.str();
34 return status.str();
35}
36//-----------------------------------------------------------------------------
37
38//-----------------------------------------------------------------------------
39void
41{
42 TLOG() << "Firmware version not available in fanout";
43}
44//-----------------------------------------------------------------------------
45
46//-----------------------------------------------------------------------------
47uint32_t
49{
50 TLOG() << "Firmware version not available in fanout";
51 return 0;
52}
53//-----------------------------------------------------------------------------
54
55//-----------------------------------------------------------------------------
56void
58{
59 // Hard reset
60 TopDesign::configure(clock_source); // fanout design is nominally FIB with input from backplane
61
62 get_endpoint_node_plain(0)->reset(0x20); //TODO set correct address
63 std::this_thread::sleep_for(std::chrono::milliseconds(1000));
65 if (!get_endpoint_node_plain(0)->endpoint_ready())
66 {
67 throw EndpointNotReady(ERS_HERE, "Fanout endpoint not ready!", get_endpoint_node_plain(0)->read_endpoint_state());
68 }
69}
70//-----------------------------------------------------------------------------
71
72//-----------------------------------------------------------------------------
73void
79//-----------------------------------------------------------------------------
80
81}
#define ERS_HERE
Base class for timing endpoint design nodes.
Base class for timing endpoint design nodes.
virtual void get_info(uint32_t ept_id, timingendpointinfo::TimingEndpointInfo &mon_data) const
Give info to collector.
virtual const EndpointNodeInterface * get_endpoint_node_plain(uint32_t ept_id) const
Return the timing endpoint node.
virtual void reset(uint32_t address=0, uint32_t partition=0) const =0
Reset the endpoint.
Class for timing fanout designs.
void configure(ClockSource clock_source) const override
Give info to collector.
uint32_t read_firmware_version() const override
Read firmware version.
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void validate_firmware_version() const override
Validate endpoint firmware version.
virtual std::string get_pll_status(bool print_out=false) const
Print status of on-board PLL.
Definition IONode.cpp:288
Base class for timing endpoint design nodes.
virtual std::string get_status(bool print_out=false) const =0
Get the status string of the timing node. Optionally print it.
Base class for timing top design nodes.
Base class for timing top design nodes with IO class.
Definition TopDesign.hpp:39
void configure(ClockSource clock_source) const override
Prepare the timing device for data taking.
Definition TopDesign.hpp:81
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.
const IONode * get_io_node_plain() const override
Get io node pointer.
Definition TopDesign.hpp:48
#define TLOG(...)
Definition macro.hpp:22
< Message parameters
timingendpointinfo::TimingEndpointInfo endpoint_info
Definition Structs.hpp:117