DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
tde.cpp
Go to the documentation of this file.
1
8
10
11#include <pybind11/pybind11.h>
12#include <pybind11/stl.h>
13
14namespace py = pybind11;
15
17
18void
19register_tde(py::module& m)
20{
21
22 py::class_<TDE16Frame>(m, "TDE16Frame", py::buffer_protocol())
23 .def(py::init())
24 .def(py::init([](py::capsule capsule) {
25 auto wfp = *static_cast<TDE16Frame*>(capsule.get_pointer());
26 return wfp;
27 }))
28 .def(py::init([](py::bytes bytes) {
29 py::buffer_info info(py::buffer(bytes).request());
30 auto wfp = *static_cast<TDE16Frame*>(info.ptr);
31 return wfp;
32 }))
33 .def("get_timestamp", &TDE16Frame::get_timestamp)
34 .def("set_timestamp", &TDE16Frame::set_timestamp)
35 .def("get_channel", &TDE16Frame::get_channel)
36 .def(
37 "get_daq_header",
38 [](TDE16Frame& self) -> detdataformats::DAQEthHeader* { return self.get_daq_header(); },
39 py::return_value_policy::reference_internal)
40 .def(
41 "get_tde_header",
42 [](TDE16Frame& self) -> TDEHeader* { return self.get_tde_header(); },
43 py::return_value_policy::reference_internal)
44 .def("get_adc_sample", &TDE16Frame::get_adc_sample)
45 .def_static("sizeof", []() { return sizeof(TDE16Frame); })
46 .def("get_bytes",
47 [](TDE16Frame* fr) -> py::bytes { return py::bytes(reinterpret_cast<char*>(fr), sizeof(TDE16Frame)); });
48
49 py::class_<TDEHeader>(m, "TDEHeader")
50 .def_property_readonly("channel", [](TDEHeader& self) -> uint16_t { return self.channel; })
51 .def_property_readonly("version", [](TDEHeader& self) -> uint16_t { return self.version; })
52 .def_property_readonly("tde_header", [](TDEHeader& self) -> uint16_t { return self.tde_header; })
53 .def_property_readonly("tde_errors", [](TDEHeader& self) -> uint16_t { return self.tde_errors; })
54 .def_property_readonly("TAItime", [](TDEHeader& self) -> uint64_t { return self.TAItime; });
55}
56
57} // namespace dunedaq::fddetdataformats::python
const detdataformats::DAQEthHeader * get_daq_header() const
void set_timestamp(const uint64_t new_timestamp)
const TDEHeader * get_tde_header() const
uint16_t get_adc_sample(int sample_no) const
void register_tde(pybind11::module &)
DAQEthHeader is a versioned and unified structure for every FE electronics.