30{
31
32 py::class_<timing::BoreasDesign, uhal::Node>(m, "BoreasDesign")
39 py::arg("channel"),
40 py::arg("rate"),
41 py::arg("poisson"))
44 py::arg("command"),
45 py::arg("channel"),
46 py::arg("rate"),
47 py::arg("poisson"))
48 .def("apply_endpoint_delay",
50 py::arg("address"),
51 py::arg("coarse_delay"),
52 py::arg("fine_delay"),
53 py::arg("phase_delay"),
54 py::arg("measure_rtt") = false,
55 py::arg("control_sfp") = true,
56 py::arg("sfp_mux") = -1)
57 .def("measure_endpoint_rtt",
59 py::arg("address"),
60 py::arg("control_sfp") = true,
61 py::arg("sfp_mux") = -1)
63 .def("configure_hsi",
65 py::arg("src"),
66 py::arg("re_mask"),
67 py::arg("fe_mask"),
68 py::arg("inv_mask"),
69 py::arg("rate"),
70 py::arg("dispatch") = true)
72 ;
73
74
75 py::class_<timing::FanoutDesign, uhal::Node>(m, "FanoutDesign")
81 ;
82
83
84 py::class_<timing::OuroborosMuxDesign, uhal::Node>(m, "OuroborosMuxDesign")
90 py::arg("channel"),
91 py::arg("rate"),
92 py::arg("poisson"))
95 py::arg("command"),
96 py::arg("channel"),
97 py::arg("rate"),
98 py::arg("poisson"))
101 .def("apply_endpoint_delay",
103 py::arg("address"),
104 py::arg("coarse_delay"),
105 py::arg("fine_delay"),
106 py::arg("phase_delay"),
107 py::arg("measure_rtt") = false,
108 py::arg("control_sfp") = true,
109 py::arg("sfp_mux") = -1)
110 .def("measure_endpoint_rtt",
112 py::arg("address"),
113 py::arg("control_sfp") = true,
114 py::arg("sfp_mux") = -1)
117 ;
118
119
120 py::class_<timing::MasterMuxDesign, uhal::Node>(m, "MasterMuxDesign")
126 py::arg("channel"),
127 py::arg("rate"),
128 py::arg("poisson"))
131 py::arg("command"),
132 py::arg("channel"),
133 py::arg("rate"),
134 py::arg("poisson"))
137 .def("apply_endpoint_delay",
139 py::arg("address"),
140 py::arg("coarse_delay"),
141 py::arg("fine_delay"),
142 py::arg("phase_delay"),
143 py::arg("measure_rtt") = false,
144 py::arg("control_sfp") = true,
145 py::arg("sfp_mux") = -1)
146 .def("measure_endpoint_rtt",
148 py::arg("address"),
149 py::arg("control_sfp") = true,
150 py::arg("sfp_mux") = -1)
153 ;
154
155
156 py::class_<timing::MasterDesign, uhal::Node>(m, "MasterDesign")
163 py::arg("channel"),
164 py::arg("rate"),
165 py::arg("poisson"))
168 py::arg("command"),
169 py::arg("channel"),
170 py::arg("rate"),
171 py::arg("poisson"))
172 .def("apply_endpoint_delay",
174 py::arg("address"),
175 py::arg("coarse_delay"),
176 py::arg("fine_delay"),
177 py::arg("phase_delay"),
178 py::arg("measure_rtt") = false,
179 py::arg("control_sfp") = true,
180 py::arg("sfp_mux") = -1)
181 .def("measure_endpoint_rtt",
183 py::arg("address"),
184 py::arg("control_sfp") = true,
185 py::arg("sfp_mux") = -1)
187 ;
188
189
190 py::class_<timing::OuroborosDesign, uhal::Node>(m, "OuroborosDesign")
197 py::arg("channel"),
198 py::arg("rate"),
199 py::arg("poisson"))
202 py::arg("command"),
203 py::arg("channel"),
204 py::arg("rate"),
205 py::arg("poisson"))
206 .def("apply_endpoint_delay",
208 py::arg("address"),
209 py::arg("coarse_delay"),
210 py::arg("fine_delay"),
211 py::arg("phase_delay"),
212 py::arg("measure_rtt") = false,
213 py::arg("control_sfp") = true,
214 py::arg("sfp_mux") = -1)
215 .def("measure_endpoint_rtt",
217 py::arg("address"),
218 py::arg("control_sfp") = true,
219 py::arg("sfp_mux") = -1)
221 ;
222
223
224 py::class_<timing::EndpointDesign, uhal::Node>(m, "EndpointDesign")
229 ;
230
231
232 py::class_<timing::ChronosDesign, uhal::Node>(m, "ChronosDesign")
237 .def("configure_hsi",
239 py::arg("src"),
240 py::arg("re_mask"),
241 py::arg("fe_mask"),
242 py::arg("inv_mask"),
243 py::arg("rate"),
244 py::arg("dispatch") = true)
246 ;
247
248
249 py::class_<timing::HadesDesign, uhal::Node>(m, "HadesDesign")
254 .def("configure_hsi",
256 py::arg("src"),
257 py::arg("re_mask"),
258 py::arg("fe_mask"),
259 py::arg("inv_mask"),
260 py::arg("rate"),
261 py::arg("dispatch") = true)
263 ;
264
265
266 py::class_<timing::KerberosDesign, uhal::Node>(m, "KerberosDesign")
272 py::arg("channel"),
273 py::arg("rate"),
274 py::arg("poisson"))
277 py::arg("command"),
278 py::arg("channel"),
279 py::arg("rate"),
280 py::arg("poisson"))
281 .def("apply_endpoint_delay",
283 py::arg("address"),
284 py::arg("coarse_delay"),
285 py::arg("fine_delay"),
286 py::arg("phase_delay"),
287 py::arg("measure_rtt") = false,
288 py::arg("control_sfp") = true,
289 py::arg("sfp_mux") = -1)
290 .def("measure_endpoint_rtt",
292 py::arg("address"),
293 py::arg("control_sfp") = true,
294 py::arg("sfp_mux") = -1)
301 ;
302
303
304 py::class_<timing::GaiaDesign, uhal::Node>(m, "GaiaDesign")
310 py::arg("channel"),
311 py::arg("rate"),
312 py::arg("poisson"))
315 py::arg("command"),
316 py::arg("channel"),
317 py::arg("rate"),
318 py::arg("poisson"))
319 .def("apply_endpoint_delay",
321 py::arg("address"),
322 py::arg("coarse_delay"),
323 py::arg("fine_delay"),
324 py::arg("phase_delay"),
325 py::arg("measure_rtt") = false,
326 py::arg("control_sfp") = true,
327 py::arg("sfp_mux") = -1)
328 .def("measure_endpoint_rtt",
330 py::arg("address"),
331 py::arg("control_sfp") = true,
332 py::arg("sfp_mux") = -1)
336 ;
337}
Class for timing master with integrated HSI designs.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void configure(ClockSource clock_source, TimestampSource ts_source) const override
Prepare the timing master for data taking.
uint8_t read_active_mux() const override
Read cdr mux.
void switch_mux(uint8_t mux_channel, bool resync_cdr=false) const override
Switch cdr mux.
uint32_t read_firmware_version() const override
Read endpoint firmware version.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void configure(ClockSource clock_source) const override
Prepare the timing endpoint for data taking.
void validate_firmware_version() const override
Validate endpoint firmware version.
uint32_t read_firmware_version() const override
Give info to collector.
void configure(ClockSource clock_source) const override
Prepare the timing endpoint for data taking.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void validate_firmware_version() const override
Validate endpoint firmware version.
void configure(ClockSource clock_source) const override
Give info to collector.
uint32_t read_firmware_version() const override
Read firmware version.
void validate_firmware_version() const override
Validate endpoint firmware version.
Class for timing fanout designs.
void configure(ClockSource clock_source, TimestampSource ts_source, TimestampTimebase timebase) const
Give info to collector.
virtual void configure_hsi(uint32_t src, uint32_t re_mask, uint32_t fe_mask, uint32_t inv_mask, double rate, bool dispatch=true) const
Configure the HSI node.
virtual const HSINode & get_hsi_node() const
Get the HSI node.
Class for timing fanout designs.
void configure(ClockSource clock_source, TimestampSource ts_source) const override
Give info to collector.
void switch_timing_source(ClockSource clock_source) const override
Switch timing source.
Base class for timing master designs.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
void apply_endpoint_delay(uint32_t address, uint32_t coarse_delay, uint32_t fine_delay, uint32_t phase_delay, bool measure_rtt=false, bool control_sfp=true, int sfp_mux=-1) const override
Apply delay to endpoint.
uint32_t measure_endpoint_rtt(uint32_t address, bool control_sfp=true, int sfp_mux=-1) const override
Measure the endpoint round trip time.
void sync_timestamp(TimestampSource source) const override
Sync timestamp to current machine value.
void validate_firmware_version() const override
Validate master firmware version.
void enable_periodic_fl_cmd(uint32_t channel, double rate, bool poisson=false) const override
Configure fake trigger generator.
uint32_t read_firmware_version() const override
Read master firmware version.
void configure(ClockSource clock_source, TimestampSource ts_source) const override
Prepare the timing master for data taking.
Class for PDI timing master design on mux board.
std::vector< uint32_t > scan_sfp_mux() const override
Scan SFP for alive timing transmitters.
uint32_t measure_endpoint_rtt(uint32_t address, bool control_sfp=true, int sfp_mux=-1) const override
Measure the endpoint round trip time.
void apply_endpoint_delay(uint32_t address, uint32_t coarse_delay, uint32_t fine_delay, uint32_t phase_delay, bool measure_rtt=false, bool control_sfp=true, int sfp_mux=-1) const override
Apply delay to endpoint.
virtual uint8_t read_active_mux() const =0
Read cdr mux.
virtual void switch_mux(uint8_t mux_channel, bool resync_cdr=false) const =0
Switch cdr mux.
Class for PDI timing master design (known as overlord).
void configure(ClockSource clock_source, TimestampSource ts_source) const override
Prepare the timing master for data taking.
std::string get_status(bool print_out=false) const override
Get status string, optionally print.
Class for PDI ouroboros timing master design.
virtual void switch_timing_source_mux(uint8_t mux_channel) const
Switch timing source mux.
virtual uint8_t read_active_timing_source_mux() const
Read timing source mux.