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

Base class for timing IO nodes. More...

#include <FrequencyCounterNode.hpp>

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

Public Member Functions

 FrequencyCounterNode (const uhal::Node &node)
 
virtual ~FrequencyCounterNode ()
 
std::string get_status (bool print_out=false) const override
 Get status string, optionally print.
 
std::vector< double > measure_frequencies (uint8_t number_of_clocks) const
 Measure clock frequencies.
 
- 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.
 

Detailed Description

Base class for timing IO nodes.

Definition at line 34 of file FrequencyCounterNode.hpp.

Constructor & Destructor Documentation

◆ FrequencyCounterNode()

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

Definition at line 23 of file FrequencyCounterNode.cpp.

24 : TimingNode(node)
25{}
TimingNode(const uhal::Node &node)

◆ ~FrequencyCounterNode()

dunedaq::timing::FrequencyCounterNode::~FrequencyCounterNode ( )
virtual

Definition at line 29 of file FrequencyCounterNode.cpp.

29{}

Member Function Documentation

◆ get_status()

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

Get status string, optionally print.

Implements dunedaq::timing::TimingNode.

Definition at line 34 of file FrequencyCounterNode.cpp.

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}
std::map< std::string, uhal::ValWord< uint32_t > > read_sub_nodes(const uhal::Node &node, bool dispatch=true) const
Read subnodes.
#define TLOG(...)
Definition macro.hpp:22
std::string format_reg_table(T data, std::string title, std::vector< std::string > headers)
Format reg-value table.
Definition toolbox.hxx:166

◆ measure_frequencies()

std::vector< double > dunedaq::timing::FrequencyCounterNode::measure_frequencies ( uint8_t number_of_clocks) const

Measure clock frequencies.

Returns
{ description_of_the_return_value }

Definition at line 47 of file FrequencyCounterNode.cpp.

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}
void millisleep(const double &time_in_milliseconds)
Definition toolbox.cpp:83

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