DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
timing
src
FanoutDesign.cpp
Go to the documentation of this file.
1
#include "
timing/FanoutDesign.hpp
"
2
3
#include <sstream>
4
#include <string>
5
6
namespace
dunedaq::timing
{
7
8
UHAL_REGISTER_DERIVED_NODE(
FanoutDesign
)
9
10
//-----------------------------------------------------------------------------
11
FanoutDesign
::
FanoutDesign
(const
uhal
::Node& node)
12
:
TopDesignInterface
(node)
13
,
MuxDesignInterface
(node)
14
,
TopDesign
(node)
15
,
EndpointDesignInterface
(node)
16
,
CDRMuxDesignInterface
(node)
17
{}
18
//-----------------------------------------------------------------------------
19
20
//-----------------------------------------------------------------------------
21
FanoutDesign::~FanoutDesign
()
22
{}
23
//-----------------------------------------------------------------------------
24
25
//-----------------------------------------------------------------------------
26
std::string
27
FanoutDesign::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
//-----------------------------------------------------------------------------
39
void
40
FanoutDesign::validate_firmware_version
()
const
41
{
42
TLOG
() <<
"Firmware version not available in fanout"
;
43
}
44
//-----------------------------------------------------------------------------
45
46
//-----------------------------------------------------------------------------
47
uint32_t
48
FanoutDesign::read_firmware_version
()
const
49
{
50
TLOG
() <<
"Firmware version not available in fanout"
;
51
return
0;
52
}
53
//-----------------------------------------------------------------------------
54
55
//-----------------------------------------------------------------------------
56
void
57
FanoutDesign::configure
(
ClockSource
clock_source)
const
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));
64
get_endpoint_node_plain
(0)->
get_status
(
true
);
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
//-----------------------------------------------------------------------------
73
void
74
FanoutDesign::get_info
(
timingfirmwareinfo::TimingDeviceInfo
& mon_data)
const
75
{
76
TopDesign::get_info
(mon_data);
77
EndpointDesignInterface::get_info
(0, mon_data.
endpoint_info
);
78
}
79
//-----------------------------------------------------------------------------
80
81
}
FanoutDesign.hpp
ERS_HERE
#define ERS_HERE
Definition
LocalContext.hpp:141
dunedaq::timing::CDRMuxDesignInterface::CDRMuxDesignInterface
CDRMuxDesignInterface(const uhal::Node &node)
Definition
CDRMuxDesignInterface.hpp:38
dunedaq::timing::EndpointDesignInterface::get_info
virtual void get_info(uint32_t ept_id, timingendpointinfo::TimingEndpointInfo &mon_data) const
Give info to collector.
Definition
EndpointDesignInterface.hpp:70
dunedaq::timing::EndpointDesignInterface::get_endpoint_node_plain
virtual const EndpointNodeInterface * get_endpoint_node_plain(uint32_t ept_id) const
Return the timing endpoint node.
Definition
EndpointDesignInterface.hpp:50
dunedaq::timing::EndpointDesignInterface::EndpointDesignInterface
EndpointDesignInterface(const uhal::Node &node)
Definition
EndpointDesignInterface.hpp:41
dunedaq::timing::EndpointNodeInterface::reset
virtual void reset(uint32_t address=0, uint32_t partition=0) const =0
Reset the endpoint.
dunedaq::timing::FanoutDesign
Class for timing fanout designs.
Definition
FanoutDesign.hpp:37
dunedaq::timing::FanoutDesign::configure
void configure(ClockSource clock_source) const override
Prepare the timing fanout for data taking.
Definition
FanoutDesign.cpp:57
dunedaq::timing::FanoutDesign::read_firmware_version
uint32_t read_firmware_version() const override
Read firmware version.
Definition
FanoutDesign.cpp:48
dunedaq::timing::FanoutDesign::get_info
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.
Definition
FanoutDesign.cpp:74
dunedaq::timing::FanoutDesign::get_status
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Definition
FanoutDesign.cpp:27
dunedaq::timing::FanoutDesign::FanoutDesign
FanoutDesign(const uhal::Node &node)
Definition
FanoutDesign.cpp:11
dunedaq::timing::FanoutDesign::~FanoutDesign
virtual ~FanoutDesign()
Definition
FanoutDesign.cpp:21
dunedaq::timing::FanoutDesign::validate_firmware_version
void validate_firmware_version() const override
Validate endpoint firmware version.
Definition
FanoutDesign.cpp:40
dunedaq::timing::IONode::get_pll_status
virtual std::string get_pll_status(bool print_out=false) const
Print status of on-board PLL.
Definition
IONode.cpp:289
dunedaq::timing::MuxDesignInterface
Base class for timing endpoint design nodes.
Definition
MuxDesignInterface.hpp:34
dunedaq::timing::TimingNode::get_status
virtual std::string get_status(bool print_out=false) const =0
Get the status string of the timing node. Optionally print it.
dunedaq::timing::TopDesignInterface
Base class for timing top design nodes.
Definition
TopDesignInterface.hpp:40
dunedaq::timing::TopDesign::configure
void configure(ClockSource clock_source) const override
Prepare the timing device for data taking.
Definition
TopDesign.hpp:81
dunedaq::timing::TopDesign::get_info
void get_info(timingfirmwareinfo::TimingDeviceInfo &mon_data) const override
Give info to collector.
Definition
TopDesign.hpp:121
dunedaq::timing::TopDesign::get_io_node_plain
const IONode * get_io_node_plain() const override
Get io node pointer.
Definition
TopDesign.hpp:48
dunedaq::timing::TopDesign::TopDesign
TopDesign(const uhal::Node &node)
Definition
TopDesign.hpp:41
TLOG
#define TLOG(...)
Definition
macro.hpp:22
dunedaq::timing
< Message parameters
Definition
BoreasDesign.hpp:29
dunedaq::timing::ClockSource
ClockSource
Definition
definitions.hpp:115
uhal
Definition
ProtocolAxi4Lite.hpp:63
dunedaq::timing::timingfirmwareinfo::TimingDeviceInfo
Definition
Structs.hpp:105
dunedaq::timing::timingfirmwareinfo::TimingDeviceInfo::endpoint_info
timingendpointinfo::TimingEndpointInfo endpoint_info
Definition
Structs.hpp:117
Generated on
for DUNE-DAQ by
1.17.0