36 std::stringstream status;
40 TLOG() << status.str();
49 std::vector<double> frequencies;
51 for (uint8_t i = 0; i < number_of_clocks; ++i) {
52 getNode(
"ctrl.chan_sel").write(i);
53 getNode(
"ctrl.en_crap_mode").write(0);
54 getClient().dispatch();
58 uhal::ValWord<uint32_t> frequency = getNode(
"freq.count").read();
59 uhal::ValWord<uint32_t> frequency_valid = getNode(
"freq.valid").read();
60 getClient().dispatch();
62 if (frequency_valid.value()) {
63 double freq = frequency.value() * 119.20928 / 1000000;
64 frequencies.push_back(freq);
66 frequencies.push_back(-1);
Base class for timing IO nodes.
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.
FrequencyCounterNode(const uhal::Node &node)
virtual ~FrequencyCounterNode()
TimingNode(const uhal::Node &node)
std::map< std::string, uhal::ValWord< uint32_t > > read_sub_nodes(const uhal::Node &node, bool dispatch=true) const
Read subnodes.
std::string format_reg_table(T data, std::string title, std::vector< std::string > headers)
Format reg-value table.
void millisleep(const double &time_in_milliseconds)