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

Class for timestamp generator node. More...

#include <IRIGTimestampNode.hpp>

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

Public Member Functions

 IRIGTimestampNode (const uhal::Node &node)
 
virtual ~IRIGTimestampNode ()
 
std::string get_status (bool print_out=false) const override
 Print the status of the timing node.
 
uhal::ValVector< uint32_t > read_raw_timestamp (bool dispatch=true) const
 Read the current timestamp words.
 
uint64_t read_timestamp () const
 Read the current timestamp words.
 
void set_irig_epoch (IRIGEpoch irig_epoch) const
 Set IRIG epoch: TAI/UNIX.
 
uint32_t read_pps_counter () const
 Read the current pps ctr word.
 
uint64_t read_seconds_since_epoch () const
 Read the current seconds since epoch words.
 
- 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

Class for timestamp generator node.

Definition at line 33 of file IRIGTimestampNode.hpp.

Constructor & Destructor Documentation

◆ IRIGTimestampNode()

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

Definition at line 22 of file IRIGTimestampNode.cpp.

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

◆ ~IRIGTimestampNode()

dunedaq::timing::IRIGTimestampNode::~IRIGTimestampNode ( )
virtual

Definition at line 28 of file IRIGTimestampNode.cpp.

28{}

Member Function Documentation

◆ get_status()

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

Print the status of the timing node.

Implements dunedaq::timing::TimingNode.

Definition at line 33 of file IRIGTimestampNode.cpp.

34{
35 std::stringstream status;
36 status << "Timestamp: 0x" << std::hex << read_timestamp() << std::endl;
37
38 auto ctrl_subnodes = read_sub_nodes(getNode("csr.ctrl"));
39 status << format_reg_table(ctrl_subnodes, "IRIG ts ctrl");
40
41 auto stat_subnodes = read_sub_nodes(getNode("csr.stat"));
42 status << format_reg_table(stat_subnodes, "IRIG ts state");
43
44 auto date_subnodes = read_sub_nodes(getNode("csr.irig_date"));
45 status << format_reg_table(date_subnodes, "IRIG date");
46
47 auto time_subnodes = read_sub_nodes(getNode("csr.irig_time"));
48 status << format_reg_table(time_subnodes, "IRIG time");
49
50 status << "PPS counter: 0x" << std::hex << read_pps_counter() << std::endl;
51
52 status << "Seconds since epoch: 0x" << std::hex << read_seconds_since_epoch() << std::endl;
53
54 if (print_out)
55 TLOG() << status.str();
56 return status.str();
57}
uint64_t read_timestamp() const
Read the current timestamp words.
uint64_t read_seconds_since_epoch() const
Read the current seconds since epoch words.
uint32_t read_pps_counter() const
Read the current pps ctr word.
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

◆ read_pps_counter()

uint32_t dunedaq::timing::IRIGTimestampNode::read_pps_counter ( ) const

Read the current pps ctr word.

Returns
{ description_of_the_return_value }

Definition at line 92 of file IRIGTimestampNode.cpp.

93{
94 auto counter = getNode("pps_ctr").read();
95 getClient().dispatch();
96 return counter.value();
97}

◆ read_raw_timestamp()

uhal::ValVector< uint32_t > dunedaq::timing::IRIGTimestampNode::read_raw_timestamp ( bool dispatch = true) const

Read the current timestamp words.

Returns
{ description_of_the_return_value }

Definition at line 62 of file IRIGTimestampNode.cpp.

63{
64 auto timestamp = getNode("tstamp").readBlock(2);
65 if (dispatch)
66 getClient().dispatch();
67 return timestamp;
68}

◆ read_seconds_since_epoch()

uint64_t dunedaq::timing::IRIGTimestampNode::read_seconds_since_epoch ( ) const

Read the current seconds since epoch words.

Returns
{ description_of_the_return_value }

Definition at line 102 of file IRIGTimestampNode.cpp.

103{
104 auto seconds_since_epoch = getNode("seconds_since_epoch").readBlock(2);
105 getClient().dispatch();
106 return tstamp2int(seconds_since_epoch);
107}
uint64_t tstamp2int(uhal::ValVector< uint32_t > raw_timestamp)
Definition toolbox.cpp:175

◆ read_timestamp()

uint64_t dunedaq::timing::IRIGTimestampNode::read_timestamp ( ) const

Read the current timestamp words.

Returns
{ description_of_the_return_value }

Definition at line 73 of file IRIGTimestampNode.cpp.

74{
76}
uhal::ValVector< uint32_t > read_raw_timestamp(bool dispatch=true) const
Read the current timestamp words.

◆ set_irig_epoch()

void dunedaq::timing::IRIGTimestampNode::set_irig_epoch ( IRIGEpoch irig_epoch) const

Set IRIG epoch: TAI/UNIX.

Definition at line 81 of file IRIGTimestampNode.cpp.

82{
83 getNode("csr.ctrl.rst").write(0x1);
84 getNode("csr.ctrl.irig_epoch").write(irig_epoch);
85 getNode("csr.ctrl.rst").write(0x0);
86 getClient().dispatch();
87}

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