DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
daphneeth.cpp
Go to the documentation of this file.
1
10
11#include <pybind11/pybind11.h>
12#include <pybind11/stl.h>
13
14namespace py = pybind11;
15
17
18void
19register_daphneeth(py::module& m)
20{
21
22
23 py::class_<DAPHNEEthFrame::Header>(m, "DAPHNEEthHeader")
24 // .def_property("w0",
25 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.w0;},
26 // [](DAPHNEEthFrame::Header& self, uint32_t w0) {self.w0 = w0;}
27 // )
28 .def_property("w1",
29 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.w1;},
30 [](DAPHNEEthFrame::Header& self, uint32_t w1) {self.w1 = w1;}
31 )
32 .def_property("w2",
33 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.w2;},
34 [](DAPHNEEthFrame::Header& self, uint32_t w2) {self.w2 = w2;}
35 )
36 .def_property("w3",
37 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.w3;},
38 [](DAPHNEEthFrame::Header& self, uint32_t w3) {self.w3 = w3;}
39 )
40 .def_property("w4",
41 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.w4;},
42 [](DAPHNEEthFrame::Header& self, uint32_t w4) {self.w4 = w4;}
43 )
44 .def_property("w5",
45 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.w5;},
46 [](DAPHNEEthFrame::Header& self, uint32_t w5) {self.w5 = w5;}
47 )
48 .def_property("w6",
49 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.w6;},
50 [](DAPHNEEthFrame::Header& self, uint32_t w6) {self.w6 = w6;}
51 )
52
53
54
55
56 .def_property("channel",
57 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.channel;},
58 [](DAPHNEEthFrame::Header& self, uint32_t channel) {self.channel = channel;}
59 )
60 .def_property("version",
61 [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.version;},
62 [](DAPHNEEthFrame::Header& self, uint32_t version) {self.version = version;}
63 )
64 // // .def_property("reserved",
65 // // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.reserved;},
66 // // [](DAPHNEEthFrame::Header& self, uint32_t reserved) {self.reserved = reserved;}
67 // // )
68 // .def_property("cd",
69 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.cd;},
70 // [](DAPHNEEthFrame::Header& self, uint32_t cd) {self.version = cd;}
71 // )
72 // .def_property("context",
73 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.context;},
74 // [](DAPHNEEthFrame::Header& self, uint32_t context) {self.version = context;}
75 // )
76 // .def_property("ready",
77 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.ready;},
78 // [](DAPHNEEthFrame::Header& self, uint32_t ready) {self.ready = ready;}
79 // )
80 // .def_property("calibration",
81 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.calibration;},
82 // [](DAPHNEEthFrame::Header& self, uint32_t calibration) {self.calibration = calibration;}
83 // )
84 // .def_property("pulser",
85 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.pulser;},
86 // [](DAPHNEEthFrame::Header& self, uint32_t pulser) {self.pulser = pulser;}
87 // )
88 // .def_property("femb_sync",
89 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.femb_sync;},
90 // [](DAPHNEEthFrame::Header& self, uint32_t femb_sync) {self.femb_sync = femb_sync;}
91 // )
92 // .def_property("wib_sync",
93 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.wib_sync;},
94 // [](DAPHNEEthFrame::Header& self, uint32_t wib_sync) {self.wib_sync = wib_sync;}
95 // )
96 // .def_property("lol",
97 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.lol;},
98 // [](DAPHNEEthFrame::Header& self, uint32_t lol) {self.lol = lol;}
99 // )
100 // .def_property("link_valid",
101 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.link_valid;},
102 // [](DAPHNEEthFrame::Header& self, uint32_t link_valid) {self.link_valid = link_valid;}
103 // )
104 // .def_property("crc_err",
105 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.crc_err;},
106 // [](DAPHNEEthFrame::Header& self, uint32_t crc_err) {self.crc_err = crc_err;}
107 // )
108 // .def_property("colddata_timestamp_1",
109 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.colddata_timestamp_1;},
110 // [](DAPHNEEthFrame::Header& self, uint32_t colddata_timestamp_1) {self.lol = colddata_timestamp_1;}
111 // )
112 // .def_property("colddata_timestamp_0",
113 // [](DAPHNEEthFrame::Header& self) -> uint32_t {return self.colddata_timestamp_0;},
114 // [](DAPHNEEthFrame::Header& self, uint32_t colddata_timestamp_0) {self.colddata_timestamp_0 = colddata_timestamp_0;}
115 // )
116 // .def_property("extra_data",
117 // [](DAPHNEEthFrame::Header& self) -> uint64_t {return self.extra_data;},
118 // [](DAPHNEEthFrame::Header& self, uint64_t extra_data) {self.extra_data = extra_data;}
119 // )
120 ;
121
122 py::class_<DAPHNEEthFrame>(m, "DAPHNEEthFrame", py::buffer_protocol())
123 .def(py::init())
124 .def(py::init([](py::capsule capsule) {
125 auto wfp = *static_cast<DAPHNEEthFrame*>(capsule.get_pointer());
126 return wfp;
127 } ))
128 .def(py::init([](py::bytes bytes){
129 py::buffer_info info(py::buffer(bytes).request());
130 auto wfp = *static_cast<DAPHNEEthFrame*>(info.ptr);
131 return wfp;
132 }))
133 .def("get_daqheader", [](DAPHNEEthFrame& self) -> const detdataformats::DAQEthHeader& {return self.daq_header;}, py::return_value_policy::reference_internal)
134 .def("get_daphneheader", [](DAPHNEEthFrame& self) -> const DAPHNEEthFrame::Header& {return self.header;}, py::return_value_policy::reference_internal)
135 .def("get_adc", &DAPHNEEthFrame::get_adc)
136 .def("set_adc", &DAPHNEEthFrame::set_adc)
137 .def("get_timestamp", &DAPHNEEthFrame::get_timestamp)
138 .def("set_timestamp", &DAPHNEEthFrame::set_timestamp)
139 .def("get_channel", &DAPHNEEthFrame::get_channel)
140 .def("set_channel", &DAPHNEEthFrame::set_channel)
141 .def_static("sizeof", [](){ return sizeof(DAPHNEEthFrame); })
142 .def("get_bytes",
143 [](DAPHNEEthFrame* fr) -> py::bytes {
144 return py::bytes(reinterpret_cast<char*>(fr), sizeof(DAPHNEEthFrame));
145 })
146 ;
147}
148
149} // namespace dunedaq::fddetdataformats::python
Class for accessing raw WIB eth frames, as used in ProtoDUNE-II.
void set_adc(int i, uint16_t val)
Set the ith ADC value in the frame to val.
void set_timestamp(const uint64_t new_timestamp)
Set the starting 64-bit timestamp of the frame.
uint64_t get_timestamp() const
Get the starting 64-bit timestamp of the frame.
void set_channel(const uint8_t new_channel)
Set the channel identifier of the frame.
uint8_t get_channel() const
Get the channel identifier of the frame.
uint16_t get_adc(int i) const
Get the ith ADC value in the frame.
void register_daphneeth(py::module &m)
Definition daphneeth.cpp:19
DAQEthHeader is a versioned and unified structure for every FE electronics.