DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
io.cpp
Go to the documentation of this file.
1
10#include "timing/IONode.hpp"
12#include "timing/FIBIONode.hpp"
14#include "timing/SIMIONode.hpp"
15#include "timing/TLUIONode.hpp"
16#include "timing/MIBIONode.hpp"
19#include "timing/GIBIONode.hpp"
20
21#include <pybind11/pybind11.h>
22#include <pybind11/stl.h>
23
24#include <string>
25
26namespace py = pybind11;
27
28namespace dunedaq {
29namespace timing {
30namespace python {
31
32void
33register_io(py::module& m)
34{
35
36 py::class_<timing::IONode, uhal::Node>(m, "IONode");
37
38 py::class_<timing::FMCIONode, timing::IONode, uhal::Node>(m, "FMCIONode")
39 .def(py::init<const uhal::Node&>())
40 .def<void (timing::FMCIONode::*)(const std::string&) const>(
41 "reset", &timing::FMCIONode::reset, py::arg("clock_config_file"))
42 .def<void (timing::FMCIONode::*)(const timing::ClockSource&) const>(
43 "reset", &timing::FMCIONode::reset, py::arg("clock_source"))
44 .def("soft_reset", &timing::FMCIONode::soft_reset)
45 .def("read_firmware_frequency", &timing::FMCIONode::read_firmware_frequency)
46 .def("get_clock_frequencies_table", &timing::FMCIONode::get_clock_frequencies_table, py::arg("print_out") = false)
47 .def("get_status", &timing::FMCIONode::get_status, py::arg("print_out") = false)
48 .def("get_pll_status", &timing::FMCIONode::get_pll_status, py::arg("print_out") = false)
49 .def("get_hardware_info", &timing::FMCIONode::get_hardware_info, py::arg("print_out") = false)
50 .def("get_sfp_status", &timing::FMCIONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
51 .def("switch_sfp_soft_tx_control_bit", &timing::FMCIONode::switch_sfp_soft_tx_control_bit)
52 .def("switch_sfp_tx", &timing::FMCIONode::switch_sfp_tx);
53
54 py::class_<timing::PC059IONode, timing::IONode, uhal::Node>(m, "PC059IONode")
55 .def(py::init<const uhal::Node&>())
56 .def<void (timing::PC059IONode::*)(const std::string&) const>(
57 "reset", &timing::PC059IONode::reset, py::arg("clock_config_file"))
58 .def<void (timing::PC059IONode::*)(const timing::ClockSource&) const>(
59 "reset", &timing::PC059IONode::reset, py::arg("clock_source"))
60 .def("soft_reset", &timing::PC059IONode::soft_reset)
61 .def("read_firmware_frequency", &timing::PC059IONode::read_firmware_frequency)
62 .def("get_clock_frequencies_table", &timing::PC059IONode::get_clock_frequencies_table, py::arg("print_out") = false)
63 .def("get_status", &timing::PC059IONode::get_status, py::arg("print_out") = false)
64 .def("get_pll_status", &timing::PC059IONode::get_pll_status, py::arg("print_out") = false)
65 .def("get_hardware_info", &timing::PC059IONode::get_hardware_info, py::arg("print_out") = false)
66 .def("get_sfp_status", &timing::PC059IONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
67 .def("switch_sfp_soft_tx_control_bit", &timing::PC059IONode::switch_sfp_soft_tx_control_bit)
68 .def("switch_sfp_mux_channel", &timing::PC059IONode::switch_sfp_mux_channel, py::arg("mux_channel"))
69 .def("read_active_sfp_mux_channel", &timing::PC059IONode::read_active_sfp_mux_channel)
70 .def("switch_sfp_tx", &timing::PC059IONode::switch_sfp_tx);
71
72 py::class_<timing::FIBIONode, timing::IONode, uhal::Node>(m, "FIBIONode")
73 .def(py::init<const uhal::Node&>())
74 .def<void (timing::FIBIONode::*)(const std::string&) const>(
75 "reset", &timing::FIBIONode::reset, py::arg("clock_config_file"))
76 .def<void (timing::FIBIONode::*)(const timing::ClockSource&) const>(
77 "reset", &timing::FIBIONode::reset, py::arg("clock_source"))
78 .def("soft_reset", &timing::FIBIONode::soft_reset)
79 .def("read_firmware_frequency", &timing::FIBIONode::read_firmware_frequency)
80 .def("get_clock_frequencies_table", &timing::FIBIONode::get_clock_frequencies_table, py::arg("print_out") = false)
81 .def("get_status", &timing::FIBIONode::get_status, py::arg("print_out") = false)
82 .def("get_pll_status", &timing::FIBIONode::get_pll_status, py::arg("print_out") = false)
83 .def("get_hardware_info", &timing::FIBIONode::get_hardware_info, py::arg("print_out") = false)
84 .def("get_sfp_status", &timing::FIBIONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
85 .def("switch_sfp_soft_tx_control_bit", &timing::FIBIONode::switch_sfp_soft_tx_control_bit)
86 .def("switch_sfp_mux_channel", &timing::FIBIONode::switch_sfp_mux_channel, py::arg("mux_channel"))
87 .def("read_active_sfp_mux_channel", &timing::FIBIONode::read_active_sfp_mux_channel)
88 .def("switch_sfp_tx", &timing::FIBIONode::switch_sfp_tx);
89
90 py::class_<timing::FIBV2IONode, timing::IONode, uhal::Node>(m, "FIBV2IONode")
91 .def(py::init<const uhal::Node&>())
92 .def<void (timing::FIBV2IONode::*)(const timing::ClockSource&) const>(
93 "reset", &timing::FIBV2IONode::reset, py::arg("clock_source"))
94 .def("soft_reset", &timing::FIBV2IONode::soft_reset)
95 .def("read_firmware_frequency", &timing::FIBV2IONode::read_firmware_frequency)
96 .def("get_clock_frequencies_table", &timing::FIBV2IONode::get_clock_frequencies_table, py::arg("print_out") = false)
97 .def("get_status", &timing::FIBV2IONode::get_status, py::arg("print_out") = false)
98 .def("get_pll_status", &timing::FIBV2IONode::get_pll_status, py::arg("print_out") = false)
99 .def("get_hardware_info", &timing::FIBV2IONode::get_hardware_info, py::arg("print_out") = false)
100 .def("get_sfp_status", &timing::FIBV2IONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
101 .def("switch_sfp_soft_tx_control_bit", &timing::FIBV2IONode::switch_sfp_soft_tx_control_bit)
102 .def("switch_sfp_tx", &timing::FIBV2IONode::switch_sfp_tx);
103
104 py::class_<timing::TLUIONode, timing::IONode, uhal::Node>(m, "TLUIONode")
105 .def(py::init<const uhal::Node&>())
106 .def<void (timing::TLUIONode::*)(const std::string&) const>(
107 "reset", &timing::TLUIONode::reset, py::arg("clock_config_file"))
108 .def<void (timing::TLUIONode::*)(const timing::ClockSource&) const>(
109 "reset", &timing::TLUIONode::reset, py::arg("clock_source"))
110 .def("soft_reset", &timing::TLUIONode::soft_reset)
111 .def("read_firmware_frequency", &timing::TLUIONode::read_firmware_frequency)
112 .def("get_clock_frequencies_table", &timing::TLUIONode::get_clock_frequencies_table, py::arg("print_out") = false)
113 .def("get_status", &timing::TLUIONode::get_status, py::arg("print_out") = false)
114 .def("get_pll_status", &timing::TLUIONode::get_pll_status, py::arg("print_out") = false)
115 .def("get_hardware_info", &timing::TLUIONode::get_hardware_info, py::arg("print_out") = false)
116 .def("get_sfp_status", &timing::TLUIONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
117 .def("switch_sfp_soft_tx_control_bit", &timing::TLUIONode::switch_sfp_soft_tx_control_bit)
118 .def("configure_dac",
120 py::arg("dac_id"),
121 py::arg("dac_value"),
122 py::arg("internal_ref") = false)
123 .def("switch_sfp_tx", &timing::TLUIONode::switch_sfp_tx);
124
125 py::class_<timing::SIMIONode, timing::IONode, uhal::Node>(m, "SIMIONode")
126 .def(py::init<const uhal::Node&>())
127 .def<void (timing::SIMIONode::*)(const std::string&) const>(
128 "reset", &timing::SIMIONode::reset, py::arg("clock_config_file"))
129 .def<void (timing::SIMIONode::*)(const timing::ClockSource&) const>(
130 "reset", &timing::SIMIONode::reset, py::arg("clock_source"))
131 .def("soft_reset", &timing::SIMIONode::soft_reset)
132 .def("read_firmware_frequency", &timing::SIMIONode::read_firmware_frequency)
133 .def("get_clock_frequencies_table", &timing::SIMIONode::get_clock_frequencies_table, py::arg("print_out") = false)
134 .def("get_status", &timing::SIMIONode::get_status, py::arg("print_out") = false)
135 .def("get_pll_status", &timing::SIMIONode::get_pll_status, py::arg("print_out") = false)
136 .def("get_hardware_info", &timing::SIMIONode::get_hardware_info, py::arg("print_out") = false)
137 .def("get_sfp_status", &timing::SIMIONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
138 .def("switch_sfp_soft_tx_control_bit", &timing::SIMIONode::switch_sfp_soft_tx_control_bit)
139 .def("switch_sfp_tx", &timing::SIMIONode::switch_sfp_tx);
140
141 py::class_<timing::MIBIONode, timing::IONode, uhal::Node>(m, "MIBIONode")
142 .def(py::init<const uhal::Node&>())
143 .def<void (timing::MIBIONode::*)(const std::string&) const>(
144 "reset", &timing::MIBIONode::reset, py::arg("clock_config_file"))
145 .def<void (timing::MIBIONode::*)(const timing::ClockSource&) const>(
146 "reset", &timing::MIBIONode::reset, py::arg("clock_source"))
147 .def("soft_reset", &timing::MIBIONode::soft_reset)
148 .def("read_firmware_frequency", &timing::MIBIONode::read_firmware_frequency)
149 .def("get_clock_frequencies_table", &timing::MIBIONode::get_clock_frequencies_table, py::arg("print_out") = false)
150 .def("get_status", &timing::MIBIONode::get_status, py::arg("print_out") = false)
151 .def("get_pll_status", &timing::MIBIONode::get_pll_status, py::arg("print_out") = false)
152 .def("get_pll", &timing::MIBIONode::get_pll)
153 .def("get_hardware_info", &timing::MIBIONode::get_hardware_info, py::arg("print_out") = false)
154 .def("get_sfp_status", &timing::MIBIONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
155 .def("switch_sfp_soft_tx_control_bit", &timing::MIBIONode::switch_sfp_soft_tx_control_bit)
156 .def("switch_sfp_tx", &timing::MIBIONode::switch_sfp_tx)
157 ;
158
159 py::class_<timing::SwitchyardNode, uhal::Node>(m, "SwitchyardNode")
160 .def("get_status", &timing::SwitchyardNode::get_status, py::arg("print_out") = false)
161 .def("configure_master_source", &timing::SwitchyardNode::configure_master_source, py::arg("master_source"), py::arg("dispatch") = true)
162 .def("configure_endpoint_source", &timing::SwitchyardNode::configure_endpoint_source, py::arg("endpoint_source"), py::arg("dispatch") = true);
163
164 py::class_<timing::MIBV2IONode, timing::IONode, uhal::Node>(m, "MIBV2IONode")
165 .def(py::init<const uhal::Node&>())
166 .def<void (timing::MIBV2IONode::*)(const std::string&) const>(
167 "reset", &timing::MIBV2IONode::reset, py::arg("clock_config_file"))
168 .def<void (timing::MIBV2IONode::*)(const timing::ClockSource&) const>(
169 "reset", &timing::MIBV2IONode::reset, py::arg("clock_source"))
170 .def("soft_reset", &timing::MIBV2IONode::soft_reset)
171 .def("read_firmware_frequency", &timing::MIBV2IONode::read_firmware_frequency)
172 .def("get_clock_frequencies_table", &timing::MIBV2IONode::get_clock_frequencies_table, py::arg("print_out") = false)
173 .def("get_status", &timing::MIBV2IONode::get_status, py::arg("print_out") = false)
174 .def("get_pll_status", &timing::MIBV2IONode::get_pll_status, py::arg("print_out") = false)
175 .def("get_pll", &timing::MIBV2IONode::get_pll)
176 .def("get_hardware_info", &timing::MIBV2IONode::get_hardware_info, py::arg("print_out") = false)
177 .def("get_sfp_status", &timing::MIBV2IONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
178 .def("switch_sfp_soft_tx_control_bit", &timing::MIBV2IONode::switch_sfp_soft_tx_control_bit)
179 .def("switch_sfp_tx", &timing::MIBV2IONode::switch_sfp_tx)
180 ;
181
182 py::class_<timing::GIBIONode, timing::IONode, uhal::Node>(m, "GIBIONode")
183 .def(py::init<const uhal::Node&>())
184 .def<void (timing::GIBIONode::*)(const std::string&) const>(
185 "reset", &timing::GIBIONode::reset, py::arg("clock_config_file"))
186 .def<void (timing::GIBIONode::*)(const timing::ClockSource&) const>(
187 "reset", &timing::GIBIONode::reset, py::arg("clock_source"))
188 .def("soft_reset", &timing::GIBIONode::soft_reset)
189 .def("read_firmware_frequency", &timing::GIBIONode::read_firmware_frequency)
190 .def("get_clock_frequencies_table", &timing::GIBIONode::get_clock_frequencies_table, py::arg("print_out") = false)
191 .def("get_status", &timing::GIBIONode::get_status, py::arg("print_out") = false)
192 .def("get_pll_status", &timing::GIBIONode::get_pll_status, py::arg("print_out") = false)
193 .def("get_pll", &timing::GIBIONode::get_pll)
194 .def("get_hardware_info", &timing::GIBIONode::get_hardware_info, py::arg("print_out") = false)
195 .def("get_sfp_status", &timing::GIBIONode::get_sfp_status, py::arg("sfp_id"), py::arg("print_out") = false)
196 .def("switch_sfp_soft_tx_control_bit", &timing::GIBIONode::switch_sfp_soft_tx_control_bit)
197 .def("set_i2c_mux_channels", &timing::GIBIONode::set_i2c_mux_channels)
198 .def("switch_sfp_tx", &timing::GIBIONode::switch_sfp_tx)
199 ;
200
201} // NOLINT
202
203} // namespace python
204} // namespace timing
205} // namespace dunedaq
Class for the FIB board.
Definition FIBIONode.hpp:32
void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
void reset(const std::string &clock_config_file) const override
Reset FIB node.
Definition FIBIONode.cpp:67
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Print status of on-board SFP.
void switch_sfp_tx(uint32_t sfp_id, bool turn_on) const override
reset on-board SFP flags using I2C IO expanders
uint32_t read_active_sfp_mux_channel() const override
Read the active SFP mux channel.
void switch_sfp_mux_channel(uint32_t mux_channel) const override
Switch the SFP mux channel.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Definition FIBIONode.cpp:43
Class for the FIB board.
std::string get_pll_status(bool print_out=false) const override
Print status of on-board PLL.
void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void switch_sfp_tx(uint32_t sfp_id, bool turn_on) const override
Switch on or off the SFP tx laser via the I2C IO expander controlling the sfp tx disable pin....
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Print status of on-board SFP.
void reset(const ClockSource &clock_source) const override
Reset IO, with clock file look up.
Class for the timing FMC board.
Definition FMCIONode.hpp:33
std::string get_clock_frequencies_table(bool print_out=false) const override
Print frequencies of on-board clocks.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Definition FMCIONode.cpp:45
void reset(const std::string &clock_config_file) const override
Reset FMC IO.
Definition FMCIONode.cpp:60
void switch_sfp_tx(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP
Class for the timing FMC board.
Definition GIBIONode.hpp:33
void switch_sfp_tx(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
void set_i2c_mux_channels(uint8_t mux_channel_bitmask) const
Fill hardware monitoring structure.
void reset(const std::string &clock_config_file) const override
Reset GIB IO.
Definition GIBIONode.cpp:75
std::unique_ptr< const SI534xSlave > get_pll() const override
GET PLL I2C interface.
Definition GIBIONode.cpp:55
void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
std::string get_hardware_info(bool print_out) const override
Print hardware information.
Definition GIBIONode.cpp:65
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Print status of on-board SFP.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Definition GIBIONode.cpp:40
virtual void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const
control tx laser of on-board SFP softly (I2C command)
Definition IONode.cpp:343
virtual std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const
Print status of on-board SFP.
Definition IONode.cpp:324
virtual std::string get_hardware_info(bool print_out=false) const
Print hardware information.
Definition IONode.cpp:118
virtual void soft_reset() const
Reset timing node.
Definition IONode.cpp:305
virtual std::unique_ptr< const SI534xSlave > get_pll() const
Get the PLL chip.
Definition IONode.cpp:239
virtual uint32_t read_firmware_frequency() const
Read the word identifying the frequency [units of Hz] of the firmware in the FPGA.
Definition IONode.cpp:78
virtual std::string get_clock_frequencies_table(bool print_out=false) const
Print frequencies of on-board clocks.
Definition IONode.cpp:272
virtual std::string get_pll_status(bool print_out=false) const
Print status of on-board PLL.
Definition IONode.cpp:288
Class for the timing FMC board.
Definition MIBIONode.hpp:34
void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Switch the SFP mux channel.
void reset(const std::string &clock_config_file) const override
Reset MIB IO.
Definition MIBIONode.cpp:77
void switch_sfp_tx(uint32_t, bool) const override
control tx laser of on-board SFP
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Definition MIBIONode.cpp:40
std::string get_pll_status(bool print_out=false) const override
Print status of on-board PLL.
Definition MIBIONode.cpp:66
Class for the timing FMC board.
void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
void reset(const std::string &clock_config_file) const override
Reset MIB v2 IO.
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Print status of on-board SFP.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void switch_sfp_tx(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP
Class for the PC059 board.
uint32_t read_active_sfp_mux_channel() const override
Read the active SFP mux channel.
void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
void switch_sfp_mux_channel(uint32_t mux_channel) const override
Switch the SFP mux channel.
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Print status of on-board SFP.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void switch_sfp_tx(uint32_t sfp_id, bool turn_on) const override
control tx laser of on-board SFP softly (I2C command)
void reset(const std::string &clock_config_file) const override
Reset pc059 node.
Class for the timing simulation IO.
Definition SIMIONode.hpp:34
std::string get_clock_frequencies_table(bool print_out=false) const override
Print frequencies of on-board clocks.
void switch_sfp_soft_tx_control_bit(uint32_t sfp_id, bool turn_on) const override
Control tx laser of on-board SFP softly (I2C command)
std::string get_pll_status(bool print_out=false) const override
Print status of on-board PLL.
std::string get_hardware_info(bool print_out=false) const override
Print hardware information.
Definition SIMIONode.cpp:73
void reset(const std::string &clock_config_file) const override
Reset IO.
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Print status of on-board SFP.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Definition SIMIONode.cpp:42
void switch_sfp_tx(uint32_t sfp_id, bool turn_on) const override
Control tx laser of on-board SFP softly (I2C command)
void configure_endpoint_source(uint8_t endpoint_source, bool dispatch=true) const
Configure endpoint source.
void configure_master_source(uint8_t master_source, bool dispatch=true) const
Configure master source.
std::string get_status(bool print_out=false) const override
Print the status of the timing node.
Class for the TLU board.
Definition TLUIONode.hpp:34
void reset(const std::string &clock_config_file) const override
Reset IO node.
Definition TLUIONode.cpp:53
void switch_sfp_tx(uint32_t, bool) const override
Control tx laser of on-board SFP softly (I2C command)
void configure_dac(uint32_t dac_id, uint32_t dac_value, bool internal_ref=false) const
Configure on-board DAC.
std::string get_status(bool print_out=false) const
Print the status of the timing node.
Definition TLUIONode.cpp:39
void switch_sfp_soft_tx_control_bit(uint32_t, bool) const override
Control tx laser of on-board SFP softly (I2C command)
std::string get_sfp_status(uint32_t sfp_id, bool print_out=false) const override
Print status of on-board SFP.
void register_io(py::module &m)
Definition io.cpp:33
Including Qt Headers.