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

Base class for timing endpoint design nodes. More...

#include <EndpointDesign.hpp>

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

Public Member Functions

 EndpointDesign (const uhal::Node &node)
 
virtual ~EndpointDesign ()
 
std::string get_status (bool print_out=false) const override
 Get status string, optionally print.
 
uint32_t read_firmware_version () const override
 Give info to collector.
 
void validate_firmware_version () const override
 Validate endpoint firmware version.
 
void configure (ClockSource clock_source) const override
 Prepare the timing endpoint for data taking.
 
void get_info (timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
 Give info to collector.
 
- Public Member Functions inherited from dunedaq::timing::TopDesign
 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
 
- Public Member Functions inherited from dunedaq::timing::TimingNode
 TimingNode (const uhal::Node &node)
 
virtual ~TimingNode ()
 
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.
 
- Public Member Functions inherited from dunedaq::timing::EndpointDesignInterface
 EndpointDesignInterface (const uhal::Node &node)
 
virtual ~EndpointDesignInterface ()
 
virtual const EndpointNodeInterfaceget_endpoint_node_plain (uint32_t ept_id) const
 Return the timing endpoint node.
 
virtual uint32_t get_number_of_endpoint_nodes () const
 Return the timing endpoint node.
 
virtual void get_info (uint32_t ept_id, timingendpointinfo::TimingEndpointInfo &mon_data) const
 Give info to collector.
 
virtual void get_info (timingfirmwareinfo::TimingDeviceInfo &mon_data) const=0
 Give info to collector.
 

Detailed Description

Base class for timing endpoint design nodes.

Definition at line 35 of file EndpointDesign.hpp.

Constructor & Destructor Documentation

◆ EndpointDesign()

dunedaq::timing::EndpointDesign::EndpointDesign ( const uhal::Node & node)
explicit

Definition at line 19 of file EndpointDesign.cpp.

20 : TopDesignInterface(node)
21 , TopDesign(node)
23
24{}
TopDesign(const uhal::Node &node)
Definition TopDesign.hpp:41

◆ ~EndpointDesign()

dunedaq::timing::EndpointDesign::~EndpointDesign ( )
virtual

Definition at line 28 of file EndpointDesign.cpp.

29{}

Member Function Documentation

◆ configure()

void dunedaq::timing::EndpointDesign::configure ( ClockSource clock_source) const
overridevirtual

Prepare the timing endpoint for data taking.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 51 of file EndpointDesign.cpp.

52{
53 TopDesign::configure(clock_source);
54
55 for (uint i=0; i < get_number_of_endpoint_nodes(); ++i)
56 {
58 std::this_thread::sleep_for(std::chrono::milliseconds(1000));
60 if (!get_endpoint_node_plain(i)->endpoint_ready())
61 {
62 ers::error(EndpointNotReady(ERS_HERE, "Endpoint "+std::to_string(i)+" not ready!", get_endpoint_node_plain(i)->read_endpoint_state()));
63 }
64 }
65}
#define ERS_HERE
virtual const EndpointNodeInterface * get_endpoint_node_plain(uint32_t ept_id) const
Return the timing endpoint node.
virtual uint32_t get_number_of_endpoint_nodes() const
Return the timing endpoint node.
virtual void reset(uint32_t address=0, uint32_t partition=0) const =0
Reset the endpoint.
virtual std::string get_status(bool print_out=false) const =0
Get the status string of the timing node. Optionally print it.
void configure(ClockSource clock_source) const override
Prepare the timing device for data taking.
Definition TopDesign.hpp:81
void error(const Issue &issue)
Definition ers.hpp:81

◆ get_info()

void dunedaq::timing::EndpointDesign::get_info ( timingfirmwareinfo::TimingDeviceInfo & mon_data) const
overridevirtual

Give info to collector.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 98 of file EndpointDesign.cpp.

99{
100 TopDesign::get_info(mon_data);
101 EndpointDesignInterface::get_info(0, mon_data.endpoint_info);
102}
virtual void get_info(uint32_t ept_id, timingendpointinfo::TimingEndpointInfo &mon_data) const
Give info to collector.
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.

◆ get_status()

std::string dunedaq::timing::EndpointDesign::get_status ( bool print_out = false) const
overridevirtual

Get status string, optionally print.

Implements dunedaq::timing::TimingNode.

Definition at line 34 of file EndpointDesign.cpp.

35{
36 std::stringstream status;
38 size_t number_of_endpoint_nodes = EndpointDesign::get_number_of_endpoint_nodes();
39 for (size_t i = 0; i < number_of_endpoint_nodes; ++i) {
40 status << "Endpoint node " << i << " status" << std::endl;
42 }
43 if (print_out)
44 TLOG() << status.str();
45 return status.str();
46}
virtual std::string get_pll_status(bool print_out=false) const
Print status of on-board PLL.
Definition IONode.cpp:288
const IONode * get_io_node_plain() const override
Get io node pointer.
Definition TopDesign.hpp:48
#define TLOG(...)
Definition macro.hpp:22

◆ read_firmware_version()

uint32_t dunedaq::timing::EndpointDesign::read_firmware_version ( ) const
overridevirtual

Give info to collector.

Read endpoint firmware version.

Returns
{ description_of_the_return_value }

Implements dunedaq::timing::TopDesignInterface.

Definition at line 70 of file EndpointDesign.cpp.

71{
72 return 0; //TODO
73 //return get_endpoint_node_plain(0)->read_version();
74}

◆ validate_firmware_version()

void dunedaq::timing::EndpointDesign::validate_firmware_version ( ) const
overridevirtual

Validate endpoint firmware version.

Implements dunedaq::timing::TopDesignInterface.

Definition at line 79 of file EndpointDesign.cpp.

80{
81// TODO
82// auto firmware_version = read_firmware_version();
83//
84// int major_firmware_version = (firmware_version >> 16) & 0xff;
85// int minor_firmware_version = (firmware_version >> 8) & 0xff;
86// int patch_firmware_version = (firmware_version >> 0) & 0xff;
87//
88// if (major_firmware_version != g_required_major_endpoint_firmware_version)
89// ers::error(IncompatibleMajorEndpointFirmwareVersion(ERS_HERE, major_firmware_version, g_required_major_endpoint_firmware_version));
90// if (minor_firmware_version != g_required_minor_endpoint_firmware_version)
91// ers::warning(IncompatibleMinorEndpointFirmwareVersion(ERS_HERE, minor_firmware_version, g_required_minor_endpoint_firmware_version));
92// if (patch_firmware_version != g_required_patch_endpoint_firmware_version)
93// ers::warning(IncompatiblePatchEndpointFirmwareVersion(ERS_HERE, patch_firmware_version, g_required_patch_endpoint_firmware_version));
94}

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