Line data Source code
1 : /**
2 : * @file trigger_primitive.cpp Python bindings for the trigger primitive formats
3 : *
4 : * This is part of the DUNE DAQ Software Suite, copyright 2020.
5 : * Licensing/copyright details are in the COPYING file that you should have
6 : * received with this code.
7 : */
8 :
9 : #include "trgdataformats/TriggerPrimitive.hpp"
10 :
11 : #include <pybind11/pybind11.h>
12 : #include <pybind11/stl.h>
13 :
14 : // NOLINTBEGIN(build/unsigned)
15 :
16 : namespace py = pybind11;
17 :
18 : namespace dunedaq::trgdataformats::python {
19 :
20 : void
21 0 : register_trigger_primitive(py::module& m)
22 : {
23 :
24 :
25 0 : py::class_<TriggerPrimitive> trigger_primitive(m, "TriggerPrimitive", py::buffer_protocol());
26 0 : trigger_primitive
27 0 : .def(py::init())
28 0 : .def(py::init([](py::capsule capsule) {
29 0 : auto tp = *static_cast<TriggerPrimitive*>(capsule.get_pointer());
30 0 : return tp;
31 : } ))
32 0 : .def_property_readonly_static("s_trigger_primitive_version", [](py::object /*self*/) {return TriggerPrimitive::s_trigger_primitive_version;})
33 0 : .def_property_readonly_static("s_invalid_samples_over_threshold", [](py::object /*self*/) {return TriggerPrimitive::s_invalid_samples_over_threshold;})
34 0 : .def_property_readonly_static("s_invalid_samples_to_peak", [](py::object /*self*/) {return TriggerPrimitive::s_invalid_samples_to_peak;})
35 0 : .def_property_readonly_static("s_invalid_tp_channel", [](py::object /*self*/) {return TriggerPrimitive::s_invalid_tp_channel;})
36 0 : .def_property_readonly_static("s_expected_bytes", [](py::object /*self*/) {return TriggerPrimitive::s_expected_bytes;})
37 0 : .def_property_readonly("version", [](TriggerPrimitive& self) -> uint8_t {return self.version;})
38 0 : .def_property_readonly("flag", [](TriggerPrimitive& self) -> uint8_t {return self.flag;})
39 0 : .def_property_readonly("detid", [](TriggerPrimitive& self) -> uint8_t {return self.detid;})
40 0 : .def_property_readonly("channel", [](TriggerPrimitive& self) -> uint32_t {return uint32_t(self.channel);})
41 0 : .def_property_readonly("samples_over_threshold", [](TriggerPrimitive& self) -> uint16_t {return self.samples_over_threshold;})
42 0 : .def_property_readonly("time_start", [](TriggerPrimitive& self) -> uint64_t {return self.time_start;})
43 0 : .def_property_readonly("samples_to_peak", [](TriggerPrimitive& self) -> uint16_t {return self.samples_to_peak;})
44 0 : .def_property_readonly("adc_integral", [](TriggerPrimitive& self) -> uint32_t {return self.adc_integral;})
45 0 : .def_property_readonly("adc_peak", [](TriggerPrimitive& self) -> uint16_t {return self.adc_peak;})
46 0 : .def("get_timestamp", &TriggerPrimitive::get_timestamp)
47 0 : .def("set_timestamp", &TriggerPrimitive::set_timestamp)
48 0 : .def("__lt__", &TriggerPrimitive::operator<)
49 0 : .def_static("sizeof", [](){ return sizeof(TriggerPrimitive); })
50 : ;
51 :
52 0 : }
53 :
54 : } // namespace dunedaq::trgdataformats::python
55 :
56 : static_assert(
57 : dunedaq::trgdataformats::TriggerPrimitive::s_trigger_primitive_version == 2,
58 : "Version of TriggerPrimitive appears to have changed; as a developer please update the Python bindings in this file before updating this static_assert");
59 :
60 : // NOLINTEND(build/unsigned)
|