TimingEndpointControllerBase is a DAQModule implementation that provides that provides a control interface for a timing endpoint.
More...
#include <TimingEndpointControllerBase.hpp>
TimingEndpointControllerBase is a DAQModule implementation that provides that provides a control interface for a timing endpoint.
Definition at line 36 of file TimingEndpointControllerBase.hpp.
◆ TimingEndpointControllerBase() [1/3]
dunedaq::timinglibs::TimingEndpointControllerBase::TimingEndpointControllerBase |
( |
const std::string & | name, |
|
|
uint | number_hw_commands ) |
|
explicit |
TimingEndpointControllerBase Constructor.
- Parameters
-
Definition at line 34 of file TimingEndpointControllerBase.cpp.
35 : dunedaq::timinglibs::TimingController(name, number_hw_commands)
36{
37
41}
virtual void do_endpoint_disable(const nlohmann::json &data)
virtual void do_endpoint_reset(const nlohmann::json &data)
virtual void do_endpoint_enable(const nlohmann::json &data)
◆ TimingEndpointControllerBase() [2/3]
◆ TimingEndpointControllerBase() [3/3]
◆ construct_endpoint_hw_cmd()
timingcmd::TimingHwCmd dunedaq::timinglibs::TimingEndpointControllerBase::construct_endpoint_hw_cmd |
( |
const std::string & | cmd_id, |
|
|
uint | endpoint_id ) |
|
protected |
Definition at line 67 of file TimingEndpointControllerBase.cpp.
68{
69 timingcmd::TimingHwCmd hw_cmd;
70 timingcmd::TimingEndpointCmdPayload cmd_payload;
71
72 cmd_payload.endpoint_id = endpoint_id;
74
75 hw_cmd.id = cmd_id;
76 hw_cmd.device = m_timing_device;
77 return hw_cmd;
78}
void to_json(data_t &j, const EndpointLocation &obj)
◆ do_configure()
void dunedaq::timinglibs::TimingEndpointControllerBase::do_configure |
( |
const nlohmann::json & | data | ) |
|
|
overrideprotected |
Definition at line 44 of file TimingEndpointControllerBase.cpp.
45{
46 auto mdal = m_params->cast<dal::TimingEndpointControllerConf>();
47
48 TimingController::do_configure(data);
49
50
52
53 configure_hardware_or_recover_state<TimingEndpointNotReady>(data,
"Timing endpoint",
m_endpoint_state);
54
55 TLOG() << get_name() <<
" conf done for endpoint, device: " << m_timing_device;
56}
uint m_managed_endpoint_id
std::atomic< uint > m_endpoint_state
◆ do_endpoint_disable()
void dunedaq::timinglibs::TimingEndpointControllerBase::do_endpoint_disable |
( |
const nlohmann::json & | data | ) |
|
|
protectedvirtual |
Definition at line 96 of file TimingEndpointControllerBase.cpp.
97{
98 timingcmd::TimingHwCmd hw_cmd =
99 construct_hw_cmd( "endpoint_disable", data);
100 send_hw_cmd(std::move(hw_cmd));
101 ++(m_sent_hw_command_counters.at(3).atomic);
102}
◆ do_endpoint_enable()
void dunedaq::timinglibs::TimingEndpointControllerBase::do_endpoint_enable |
( |
const nlohmann::json & | data | ) |
|
|
protectedvirtual |
Definition at line 81 of file TimingEndpointControllerBase.cpp.
82{
83 timingcmd::TimingHwCmd hw_cmd =
84 construct_hw_cmd( "endpoint_enable", data);
85
86
87 timingcmd::TimingEndpointConfigureCmdPayload cmd_payload;
89
90 TLOG_DEBUG(0) <<
"ept enable hw cmd; a: " << cmd_payload.address;
91 send_hw_cmd(std::move(hw_cmd));
92 ++(m_sent_hw_command_counters.at(2).atomic);
93}
#define TLOG_DEBUG(lvl,...)
void from_json(const data_t &j, EndpointLocation &obj)
◆ do_endpoint_reset()
void dunedaq::timinglibs::TimingEndpointControllerBase::do_endpoint_reset |
( |
const nlohmann::json & | data | ) |
|
|
protectedvirtual |
Definition at line 105 of file TimingEndpointControllerBase.cpp.
106{
107 timingcmd::TimingHwCmd hw_cmd =
108 construct_hw_cmd( "endpoint_reset", data);
109
110 send_hw_cmd(std::move(hw_cmd));
111 ++(m_sent_hw_command_counters.at(4).atomic);
112}
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ process_device_info()
void dunedaq::timinglibs::TimingEndpointControllerBase::process_device_info |
( |
nlohmann::json | info | ) |
|
|
overrideprotected |
Definition at line 131 of file TimingEndpointControllerBase.cpp.
132{
133 ++m_device_infos_received_count;
134
135 timing::timingfirmwareinfo::TimingDeviceInfo device_info;
137
138 auto ept_info = device_info.endpoint_info;
139
141 bool ready = ept_info.ready;
142
143 TLOG_DEBUG(3) <<
"state: 0x" << std::hex <<
m_endpoint_state <<
", ready: " << ready << std::dec <<
", infos received: " << m_device_infos_received_count;
144
146 {
147 if (!m_device_ready)
148 {
149 m_device_ready = true;
150 TLOG_DEBUG(2) <<
"Timing endpoint became ready";
151 }
152 }
153 else
154 {
155 if (m_device_ready)
156 {
157 m_device_ready = false;
158 TLOG_DEBUG(2) <<
"Timing endpoint no longer ready";
159 }
160 }
161}
◆ send_configure_hardware_commands()
void dunedaq::timinglibs::TimingEndpointControllerBase::send_configure_hardware_commands |
( |
const nlohmann::json & | data | ) |
|
|
overrideprotected |
◆ m_endpoint_state
std::atomic<uint> dunedaq::timinglibs::TimingEndpointControllerBase::m_endpoint_state |
|
protected |
◆ m_managed_endpoint_id
uint dunedaq::timinglibs::TimingEndpointControllerBase::m_managed_endpoint_id |
|
protected |
The documentation for this class was generated from the following files: