Line data Source code
1 : /**
2 : * @file wibeth.cpp Python bindings for the TDEEthFrame format
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 "fddetdataformats/TDEEthFrame.hpp"
10 :
11 : #include <pybind11/pybind11.h>
12 : #include <pybind11/stl.h>
13 :
14 : namespace py = pybind11;
15 :
16 : namespace dunedaq::fddetdataformats::python {
17 :
18 : void
19 0 : register_tdeeth(py::module& m)
20 : {
21 :
22 : // NOLINTBEGIN(build/unsigned)
23 :
24 : // py::class_<TDEEthFrame::TDEHeader>(m, "TDEHeader")
25 : // .def_property("channel",
26 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.channel;},
27 : // [](TDEEthFrame::TDEHeader& self, uint32_t channel) {self.channel = channel;}
28 : // )
29 : // .def_property("version",
30 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.version;},
31 : // [](TDEEthFrame::TDEHeader& self, uint32_t version) {self.version = version;}
32 : // )
33 : // // .def_property("reserved",
34 : // // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.reserved;},
35 : // // [](TDEEthFrame::TDEHeader& self, uint32_t reserved) {self.reserved = reserved;}
36 : // // )
37 : // .def_property("cd",
38 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.cd;},
39 : // [](TDEEthFrame::TDEHeader& self, uint32_t cd) {self.version = cd;}
40 : // )
41 : // .def_property("context",
42 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.context;},
43 : // [](TDEEthFrame::TDEHeader& self, uint32_t context) {self.version = context;}
44 : // )
45 : // .def_property("ready",
46 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.ready;},
47 : // [](TDEEthFrame::TDEHeader& self, uint32_t ready) {self.ready = ready;}
48 : // )
49 : // .def_property("calibration",
50 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.calibration;},
51 : // [](TDEEthFrame::TDEHeader& self, uint32_t calibration) {self.calibration = calibration;}
52 : // )
53 : // .def_property("pulser",
54 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.pulser;},
55 : // [](TDEEthFrame::TDEHeader& self, uint32_t pulser) {self.pulser = pulser;}
56 : // )
57 : // .def_property("femb_sync",
58 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.femb_sync;},
59 : // [](TDEEthFrame::TDEHeader& self, uint32_t femb_sync) {self.femb_sync = femb_sync;}
60 : // )
61 : // .def_property("wib_sync",
62 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.wib_sync;},
63 : // [](TDEEthFrame::TDEHeader& self, uint32_t wib_sync) {self.wib_sync = wib_sync;}
64 : // )
65 : // .def_property("lol",
66 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.lol;},
67 : // [](TDEEthFrame::TDEHeader& self, uint32_t lol) {self.lol = lol;}
68 : // )
69 : // .def_property("link_valid",
70 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.link_valid;},
71 : // [](TDEEthFrame::TDEHeader& self, uint32_t link_valid) {self.link_valid = link_valid;}
72 : // )
73 : // .def_property("crc_err",
74 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.crc_err;},
75 : // [](TDEEthFrame::TDEHeader& self, uint32_t crc_err) {self.crc_err = crc_err;}
76 : // )
77 : // .def_property("colddata_timestamp_1",
78 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.colddata_timestamp_1;},
79 : // [](TDEEthFrame::TDEHeader& self, uint32_t colddata_timestamp_1) {self.lol = colddata_timestamp_1;}
80 : // )
81 : // .def_property("colddata_timestamp_0",
82 : // [](TDEEthFrame::TDEHeader& self) -> uint32_t {return self.colddata_timestamp_0;},
83 : // [](TDEEthFrame::TDEHeader& self, uint32_t colddata_timestamp_0) {self.colddata_timestamp_0 =
84 : // colddata_timestamp_0;}
85 : // )
86 : // .def_property("extra_data",
87 : // [](TDEEthFrame::TDEHeader& self) -> uint64_t {return self.extra_data;},
88 : // [](TDEEthFrame::TDEHeader& self, uint64_t extra_data) {self.extra_data = extra_data;}
89 : // )
90 : // ;
91 :
92 0 : py::class_<TDEEthFrame::TDEEthHeader>(m, "TDEEthHeader")
93 0 : .def_property(
94 : "channel",
95 0 : [](TDEEthFrame::TDEEthHeader& self) -> uint16_t { return self.channel; },
96 0 : [](TDEEthFrame::TDEEthHeader& self, uint16_t channel) { self.channel = channel; })
97 0 : .def_property(
98 : "version",
99 0 : [](TDEEthFrame::TDEEthHeader& self) -> uint16_t { return self.version; },
100 0 : [](TDEEthFrame::TDEEthHeader& self, uint16_t version) { self.version = version; })
101 0 : .def_property(
102 : "tde_header",
103 0 : [](TDEEthFrame::TDEEthHeader& self) -> uint16_t { return self.tde_header; },
104 0 : [](TDEEthFrame::TDEEthHeader& self, uint16_t tde_header) { self.tde_header = tde_header; })
105 0 : .def_property(
106 : "tde_errors",
107 0 : [](TDEEthFrame::TDEEthHeader& self) -> uint16_t { return self.tde_errors; },
108 0 : [](TDEEthFrame::TDEEthHeader& self, uint16_t tde_errors) { self.tde_errors = tde_errors; })
109 0 : .def_property(
110 : "TAItime",
111 0 : [](TDEEthFrame::TDEEthHeader& self) -> uint64_t { return self.TAItime; },
112 0 : [](TDEEthFrame::TDEEthHeader& self, uint64_t TAItime) { self.TAItime = TAItime; });
113 :
114 0 : py::class_<TDEEthFrame>(m, "TDEEthFrame", py::buffer_protocol())
115 0 : .def(py::init())
116 0 : .def(py::init([](py::capsule capsule) {
117 0 : auto tfp = *static_cast<TDEEthFrame*>(capsule.get_pointer());
118 0 : return tfp;
119 : }))
120 0 : .def(py::init([](py::bytes bytes) {
121 0 : py::buffer_info info(py::buffer(bytes).request());
122 0 : auto tfp = *static_cast<TDEEthFrame*>(info.ptr);
123 0 : return tfp;
124 0 : }))
125 0 : .def(
126 : "get_daqheader",
127 0 : [](TDEEthFrame& self) -> const detdataformats::DAQEthHeader& { return self.daq_header; },
128 0 : py::return_value_policy::reference_internal)
129 0 : .def(
130 : "get_tdeheader",
131 0 : [](TDEEthFrame& self) -> const TDEEthFrame::TDEEthHeader& { return self.header; },
132 0 : py::return_value_policy::reference_internal)
133 0 : .def("get_adc", &TDEEthFrame::get_adc)
134 0 : .def("set_adc", &TDEEthFrame::set_adc)
135 0 : .def("get_timestamp", &TDEEthFrame::get_timestamp)
136 0 : .def("set_timestamp", &TDEEthFrame::set_timestamp)
137 0 : .def("get_channel", &TDEEthFrame::get_channel)
138 0 : .def("set_channel", &TDEEthFrame::set_channel)
139 0 : .def_static("sizeof", []() { return sizeof(TDEEthFrame); })
140 0 : .def("get_bytes", [](TDEEthFrame* fr) -> py::bytes {
141 0 : return py::bytes(reinterpret_cast<char*>(fr), sizeof(TDEEthFrame)); // NOLINT reinterpret_cast
142 : });
143 0 : }
144 :
145 : // NOLINTEND(build/unsigned)
146 :
147 : } // namespace dunedaq::fddetdataformats::python
|