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("get_daq_header", [](TDE16Frame& self) -> detdataformats::DAQEthHeader* {return self.get_daq_header();}, py::return_value_policy::reference_internal)
37 0 : .def("get_tde_header", [](TDE16Frame& self) -> TDEHeader* {return self.get_tde_header();}, py::return_value_policy::reference_internal)
38 0 : .def("get_adc_sample", &TDE16Frame::get_adc_sample)
39 0 : .def_static("sizeof", [](){ return sizeof(TDE16Frame); })
40 0 : .def("get_bytes",
41 0 : [](TDE16Frame* fr) -> py::bytes {
42 0 : return py::bytes(reinterpret_cast<char*>(fr), sizeof(TDE16Frame));
43 : }
44 : )
45 : ;
46 :
47 0 : py::class_<TDEHeader>(m, "TDEHeader")
48 0 : .def_property_readonly("channel", [](TDEHeader& self) -> uint16_t {return self.channel;})
49 0 : .def_property_readonly("version", [](TDEHeader& self) -> uint16_t {return self.version;})
50 0 : .def_property_readonly("tde_header", [](TDEHeader& self) -> uint16_t {return self.tde_header;})
51 0 : .def_property_readonly("tde_errors", [](TDEHeader& self) -> uint16_t {return self.tde_errors;})
52 0 : .def_property_readonly("TAItime", [](TDEHeader& self) -> uint64_t {return self.TAItime;})
53 : ;
54 0 : }
55 :
56 : } // namespace dunedaq::fddetdataformats::python
|