Line data Source code
1 : /**
2 : * @file tde.cpp Python bindings for the TDE16Frame 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/TDE16Frame.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_tde(py::module& m)
20 : {
21 :
22 0 : py::class_<TDE16Frame>(m, "TDE16Frame", py::buffer_protocol())
23 0 : .def(py::init())
24 0 : .def(py::init([](py::capsule capsule) {
25 0 : auto wfp = *static_cast<TDE16Frame*>(capsule.get_pointer());
26 0 : return wfp;
27 : }))
28 0 : .def(py::init([](py::bytes bytes) {
29 0 : py::buffer_info info(py::buffer(bytes).request());
30 0 : auto wfp = *static_cast<TDE16Frame*>(info.ptr);
31 0 : return wfp;
32 0 : }))
33 0 : .def("get_timestamp", &TDE16Frame::get_timestamp)
34 0 : .def("set_timestamp", &TDE16Frame::set_timestamp)
35 0 : .def("get_channel", &TDE16Frame::get_channel)
36 0 : .def(
37 : "get_daq_header",
38 0 : [](TDE16Frame& self) -> detdataformats::DAQEthHeader* { return self.get_daq_header(); },
39 0 : py::return_value_policy::reference_internal)
40 0 : .def(
41 : "get_tde_header",
42 0 : [](TDE16Frame& self) -> TDEHeader* { return self.get_tde_header(); },
43 0 : py::return_value_policy::reference_internal)
44 0 : .def("get_adc_sample", &TDE16Frame::get_adc_sample)
45 0 : .def_static("sizeof", []() { return sizeof(TDE16Frame); })
46 0 : .def("get_bytes",
47 0 : [](TDE16Frame* fr) -> py::bytes { return py::bytes(reinterpret_cast<char*>(fr), sizeof(TDE16Frame)); });
48 :
49 0 : py::class_<TDEHeader>(m, "TDEHeader")
50 0 : .def_property_readonly("channel", [](TDEHeader& self) -> uint16_t { return self.channel; })
51 0 : .def_property_readonly("version", [](TDEHeader& self) -> uint16_t { return self.version; })
52 0 : .def_property_readonly("tde_header", [](TDEHeader& self) -> uint16_t { return self.tde_header; })
53 0 : .def_property_readonly("tde_errors", [](TDEHeader& self) -> uint16_t { return self.tde_errors; })
54 0 : .def_property_readonly("TAItime", [](TDEHeader& self) -> uint64_t { return self.TAItime; });
55 0 : }
56 :
57 : } // namespace dunedaq::fddetdataformats::python
|