DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
timing
src
FrequencyCounterNode.cpp
Go to the documentation of this file.
1
8
9
#include "
timing/FrequencyCounterNode.hpp
"
10
11
#include "
timing/toolbox.hpp
"
12
#include "
logging/Logging.hpp
"
13
14
#include <string>
15
#include <vector>
16
17
namespace
dunedaq
{
18
namespace
timing
{
19
20
UHAL_REGISTER_DERIVED_NODE(
FrequencyCounterNode
)
21
22
//-----------------------------------------------------------------------------
23
FrequencyCounterNode
::
FrequencyCounterNode
(const
uhal
::Node& node)
24
:
TimingNode
(node)
25
{}
26
//-----------------------------------------------------------------------------
27
28
//-----------------------------------------------------------------------------
29
FrequencyCounterNode::~FrequencyCounterNode
() {}
30
//-----------------------------------------------------------------------------
31
32
//-----------------------------------------------------------------------------
33
std::string
34
FrequencyCounterNode::get_status
(
bool
print_out)
const
35
{
36
std::stringstream status;
37
auto
subnodes =
read_sub_nodes
(getNode(
"csr.ctrl"
));
38
status <<
format_reg_table
(subnodes,
"Freq counter state"
);
39
if
(print_out)
40
TLOG
() << status.str();
41
return
status.str();
42
}
43
//-----------------------------------------------------------------------------
44
45
//-----------------------------------------------------------------------------
46
std::vector<double>
47
FrequencyCounterNode::measure_frequencies
(uint8_t number_of_clocks)
const
// NOLINT(build/unsigned)
48
{
49
std::vector<double> frequencies;
50
51
for
(uint8_t i = 0; i < number_of_clocks; ++i) {
// NOLINT(build/unsigned)
52
getNode(
"ctrl.chan_sel"
).write(i);
53
getNode(
"ctrl.en_crap_mode"
).write(0);
54
getClient().dispatch();
55
56
millisleep
(2000);
57
58
uhal::ValWord<uint32_t> frequency = getNode(
"freq.count"
).read();
// NOLINT(build/unsigned)
59
uhal::ValWord<uint32_t> frequency_valid = getNode(
"freq.valid"
).read();
// NOLINT(build/unsigned)
60
getClient().dispatch();
61
62
if
(frequency_valid.value()) {
63
double
freq = frequency.value() * 119.20928 / 1000000;
64
frequencies.push_back(freq);
65
}
else
{
66
frequencies.push_back(-1);
67
}
68
}
69
return
frequencies;
70
}
71
//-----------------------------------------------------------------------------
72
73
}
// namespace timing
74
}
// namespace dunedaq
FrequencyCounterNode.hpp
dunedaq::timing::FrequencyCounterNode
Base class for timing IO nodes.
Definition
FrequencyCounterNode.hpp:35
dunedaq::timing::FrequencyCounterNode::get_status
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Definition
FrequencyCounterNode.cpp:34
dunedaq::timing::FrequencyCounterNode::measure_frequencies
std::vector< double > measure_frequencies(uint8_t number_of_clocks) const
Measure clock frequencies.
Definition
FrequencyCounterNode.cpp:47
dunedaq::timing::FrequencyCounterNode::FrequencyCounterNode
FrequencyCounterNode(const uhal::Node &node)
Definition
FrequencyCounterNode.cpp:23
dunedaq::timing::FrequencyCounterNode::~FrequencyCounterNode
virtual ~FrequencyCounterNode()
Definition
FrequencyCounterNode.cpp:29
dunedaq::timing::TimingNode::TimingNode
TimingNode(const uhal::Node &node)
Definition
TimingNode.cpp:18
dunedaq::timing::TimingNode::read_sub_nodes
std::map< std::string, uhal::ValWord< uint32_t > > read_sub_nodes(const uhal::Node &node, bool dispatch=true) const
Read subnodes.
Definition
TimingNode.cpp:29
Logging.hpp
TLOG
#define TLOG(...)
Definition
macro.hpp:22
dunedaq::timing
< Message parameters
Definition
BoreasDesign.hpp:29
dunedaq::timing::format_reg_table
std::string format_reg_table(T data, std::string title, std::vector< std::string > headers)
Format reg-value table.
Definition
toolbox.hxx:166
dunedaq::timing::millisleep
void millisleep(const double &time_in_milliseconds)
Definition
toolbox.cpp:83
dunedaq
Including Qt Headers.
Definition
module.cpp:16
uhal
Definition
ProtocolAxi4Lite.hpp:63
toolbox.hpp
Generated on
for DUNE-DAQ by
1.17.0