LCOV - code coverage report
Current view: top level - fddetdataformats/pybindsrc - daphne.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 182 0
Test Date: 2026-05-24 15:29:04 Functions: 0.0 % 90 0

            Line data    Source code
       1              : /**
       2              :  * @file daphne.cpp Python bindings for the DAPHNEFrame 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/DAPHNEFrame.hpp"
      10              : #include "fddetdataformats/DAPHNEStreamFrame.hpp"
      11              : 
      12              : #include <pybind11/pybind11.h>
      13              : #include <pybind11/stl.h>
      14              : 
      15              : namespace py = pybind11;
      16              : 
      17              : namespace dunedaq::fddetdataformats::python {
      18              : 
      19              : // NOLINTBEGIN(build/unsigned)
      20              : 
      21              : void
      22            0 : register_daphne(py::module& m)
      23              : {
      24              : 
      25            0 :   py::class_<DAPHNEFrame>(m, "DAPHNEFrame", py::buffer_protocol())
      26            0 :     .def(py::init())
      27            0 :     .def(py::init([](py::capsule capsule) {
      28            0 :       auto wfp = *static_cast<DAPHNEFrame*>(capsule.get_pointer());
      29            0 :       return wfp;
      30              :     }))
      31            0 :     .def(py::init([](py::bytes bytes) {
      32            0 :       py::buffer_info info(py::buffer(bytes).request());
      33            0 :       auto wfp = *static_cast<DAPHNEFrame*>(info.ptr);
      34            0 :       return wfp;
      35            0 :     }))
      36            0 :     .def(
      37              :       "get_daqheader",
      38            0 :       [](DAPHNEFrame& self) -> const detdataformats::DAQHeader& { return self.daq_header; },
      39            0 :       py::return_value_policy::reference_internal)
      40            0 :     .def(
      41              :       "get_header",
      42            0 :       [](DAPHNEFrame& self) -> const DAPHNEFrame::Header& { return self.header; },
      43            0 :       py::return_value_policy::reference_internal)
      44            0 :     .def(
      45              :       "get_peaks_data",
      46            0 :       [](DAPHNEFrame& self) -> const DAPHNEFrame::PeakDescriptorData& { return self.peaks_data; },
      47            0 :       py::return_value_policy::reference_internal)
      48            0 :     .def("get_adc", static_cast<uint16_t (DAPHNEFrame::*)(const int) const>(&DAPHNEFrame::get_adc))
      49            0 :     .def("get_timestamp", &DAPHNEFrame::get_timestamp)
      50            0 :     .def("get_channel", &DAPHNEFrame::get_channel)
      51            0 :     .def_static("sizeof", []() { return sizeof(DAPHNEFrame); });
      52              : 
      53            0 :   py::class_<DAPHNEFrame::Header>(m, "DAPHNEFrameHeader")
      54            0 :     .def_property(
      55              :       "channel",
      56            0 :       [](DAPHNEFrame::Header& self) -> uint8_t { return self.channel; },
      57            0 :       [](DAPHNEFrame::Header& self, uint8_t channel) { self.channel = channel; })
      58            0 :     .def_property(
      59              :       "algorithm_id",
      60            0 :       [](DAPHNEFrame::Header& self) -> uint8_t { return self.algorithm_id; },
      61            0 :       [](DAPHNEFrame::Header& self, uint8_t algorithm_id) { self.algorithm_id = algorithm_id; })
      62            0 :     .def_property(
      63              :       "r1",
      64            0 :       [](DAPHNEFrame::Header& self) -> uint8_t { return self.r1; },
      65            0 :       [](DAPHNEFrame::Header& self, uint8_t r1) { self.r1 = r1; })
      66            0 :     .def_property(
      67              :       "trigger_sample_value",
      68            0 :       [](DAPHNEFrame::Header& self) -> uint16_t { return self.trigger_sample_value; },
      69            0 :       [](DAPHNEFrame::Header& self, uint16_t tsv) { self.trigger_sample_value = tsv; })
      70            0 :     .def_property(
      71              :       "threshold",
      72            0 :       [](DAPHNEFrame::Header& self) -> uint16_t { return self.threshold; },
      73            0 :       [](DAPHNEFrame::Header& self, uint16_t threshold) { self.threshold = threshold; })
      74            0 :     .def_property(
      75              :       "baseline",
      76            0 :       [](DAPHNEFrame::Header& self) -> uint16_t { return self.baseline; },
      77            0 :       [](DAPHNEFrame::Header& self, uint16_t baseline) { self.baseline = baseline; });
      78              : 
      79            0 :   py::class_<DAPHNEFrame::PeakDescriptorData>(m, "DAPHNEFramePeakDescriptorData")
      80            0 :     .def("is_found", &DAPHNEFrame::PeakDescriptorData::is_found)
      81            0 :     .def("set_found", &DAPHNEFrame::PeakDescriptorData::set_found)
      82              : 
      83            0 :     .def("get_adc_integral", &DAPHNEFrame::PeakDescriptorData::get_adc_integral)
      84            0 :     .def("set_adc_integral", &DAPHNEFrame::PeakDescriptorData::set_adc_integral)
      85              : 
      86            0 :     .def("get_num_subpeaks", &DAPHNEFrame::PeakDescriptorData::get_num_subpeaks)
      87            0 :     .def("set_num_subpeaks", &DAPHNEFrame::PeakDescriptorData::set_num_subpeaks)
      88              : 
      89            0 :     .def("get_samples_over_baseline", &DAPHNEFrame::PeakDescriptorData::get_samples_over_baseline)
      90            0 :     .def("set_samples_over_baseline", &DAPHNEFrame::PeakDescriptorData::set_samples_over_baseline)
      91              : 
      92            0 :     .def("get_adc_max", &DAPHNEFrame::PeakDescriptorData::get_adc_max)
      93            0 :     .def("set_adc_max", &DAPHNEFrame::PeakDescriptorData::set_adc_max)
      94              : 
      95            0 :     .def("get_sample_start", &DAPHNEFrame::PeakDescriptorData::get_sample_start)
      96            0 :     .def("set_sample_start", &DAPHNEFrame::PeakDescriptorData::set_sample_start)
      97              : 
      98            0 :     .def_property(
      99              :       "num_subpeaks_0",
     100            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.num_subpeaks_0; },
     101            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.num_subpeaks_0 = val; })
     102            0 :     .def_property(
     103              :       "adc_integral_0",
     104            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint32_t { return self.adc_integral_0; },
     105            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint32_t val) { self.adc_integral_0 = val; })
     106            0 :     .def_property(
     107              :       "found_0",
     108            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.found_0; },
     109            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.found_0 = val; })
     110            0 :     .def_property(
     111              :       "adc_max_0",
     112            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.adc_max_0; },
     113            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.adc_max_0 = val; })
     114            0 :     .def_property(
     115              :       "sample_max_0",
     116            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.sample_max_0; },
     117            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.sample_max_0 = val; })
     118            0 :     .def_property(
     119              :       "samples_over_baseline_0",
     120            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.samples_over_baseline_0; },
     121            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.samples_over_baseline_0 = val; })
     122              : 
     123            0 :     .def_property(
     124              :       "num_subpeaks_1",
     125            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.num_subpeaks_1; },
     126            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.num_subpeaks_1 = val; })
     127            0 :     .def_property(
     128              :       "adc_integral_1",
     129            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint32_t { return self.adc_integral_1; },
     130            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint32_t val) { self.adc_integral_1 = val; })
     131            0 :     .def_property(
     132              :       "found_1",
     133            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.found_1; },
     134            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.found_1 = val; })
     135            0 :     .def_property(
     136              :       "adc_max_1",
     137            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.adc_max_1; },
     138            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.adc_max_1 = val; })
     139            0 :     .def_property(
     140              :       "sample_max_1",
     141            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.sample_max_1; },
     142            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.sample_max_1 = val; })
     143            0 :     .def_property(
     144              :       "samples_over_baseline_1",
     145            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.samples_over_baseline_1; },
     146            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.samples_over_baseline_1 = val; })
     147              : 
     148            0 :     .def_property(
     149              :       "num_subpeaks_2",
     150            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.num_subpeaks_2; },
     151            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.num_subpeaks_2 = val; })
     152            0 :     .def_property(
     153              :       "adc_integral_2",
     154            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint32_t { return self.adc_integral_2; },
     155            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint32_t val) { self.adc_integral_2 = val; })
     156            0 :     .def_property(
     157              :       "found_2",
     158            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.found_2; },
     159            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.found_2 = val; })
     160            0 :     .def_property(
     161              :       "adc_max_2",
     162            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.adc_max_2; },
     163            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.adc_max_2 = val; })
     164            0 :     .def_property(
     165              :       "sample_max_2",
     166            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.sample_max_2; },
     167            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.sample_max_2 = val; })
     168            0 :     .def_property(
     169              :       "samples_over_baseline_2",
     170            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.samples_over_baseline_2; },
     171            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.samples_over_baseline_2 = val; })
     172              : 
     173            0 :     .def_property(
     174              :       "num_subpeaks_3",
     175            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.num_subpeaks_3; },
     176            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.num_subpeaks_3 = val; })
     177            0 :     .def_property(
     178              :       "adc_integral_3",
     179            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint32_t { return self.adc_integral_3; },
     180            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint32_t val) { self.adc_integral_3 = val; })
     181            0 :     .def_property(
     182              :       "found_3",
     183            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.found_3; },
     184            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.found_3 = val; })
     185            0 :     .def_property(
     186              :       "adc_max_3",
     187            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.adc_max_3; },
     188            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.adc_max_3 = val; })
     189            0 :     .def_property(
     190              :       "sample_max_3",
     191            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.sample_max_3; },
     192            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.sample_max_3 = val; })
     193            0 :     .def_property(
     194              :       "samples_over_baseline_3",
     195            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.samples_over_baseline_3; },
     196            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.samples_over_baseline_3 = val; })
     197              : 
     198            0 :     .def_property(
     199              :       "num_subpeaks_4",
     200            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.num_subpeaks_4; },
     201            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.num_subpeaks_4 = val; })
     202            0 :     .def_property(
     203              :       "adc_integral_4",
     204            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint32_t { return self.adc_integral_4; },
     205            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint32_t val) { self.adc_integral_4 = val; })
     206            0 :     .def_property(
     207              :       "found_4",
     208            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint8_t { return self.found_4; },
     209            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint8_t val) { self.found_4 = val; })
     210            0 :     .def_property(
     211              :       "adc_max_4",
     212            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.adc_max_4; },
     213            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.adc_max_4 = val; })
     214            0 :     .def_property(
     215              :       "sample_max_4",
     216            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.sample_max_4; },
     217            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.sample_max_4 = val; })
     218            0 :     .def_property(
     219              :       "samples_over_baseline_4",
     220            0 :       [](DAPHNEFrame::PeakDescriptorData& self) -> uint16_t { return self.samples_over_baseline_4; },
     221            0 :       [](DAPHNEFrame::PeakDescriptorData& self, uint16_t val) { self.samples_over_baseline_4 = val; });
     222              : 
     223            0 :   py::class_<DAPHNEStreamFrame::Header>(m, "DAPHNEStreamHeader")
     224            0 :     .def_property(
     225              :       "channel_0",
     226            0 :       [](DAPHNEStreamFrame::Header& self) -> uint32_t { return self.channel_0; },
     227            0 :       [](DAPHNEStreamFrame::Header& self, uint32_t channel_0) { self.channel_0 = channel_0; })
     228            0 :     .def_property(
     229              :       "channel_1",
     230            0 :       [](DAPHNEStreamFrame::Header& self) -> uint32_t { return self.channel_1; },
     231            0 :       [](DAPHNEStreamFrame::Header& self, uint32_t channel_1) { self.channel_1 = channel_1; })
     232            0 :     .def_property(
     233              :       "channel_2",
     234            0 :       [](DAPHNEStreamFrame::Header& self) -> uint32_t { return self.channel_2; },
     235            0 :       [](DAPHNEStreamFrame::Header& self, uint32_t channel_2) { self.channel_2 = channel_2; })
     236            0 :     .def_property(
     237              :       "channel_3",
     238            0 :       [](DAPHNEStreamFrame::Header& self) -> uint32_t { return self.channel_3; },
     239            0 :       [](DAPHNEStreamFrame::Header& self, uint32_t channel_3) { self.channel_3 = channel_3; });
     240              : 
     241            0 :   py::class_<DAPHNEStreamFrame>(m, "DAPHNEStreamFrame", py::buffer_protocol())
     242            0 :     .def(py::init())
     243            0 :     .def(py::init([](py::capsule capsule) {
     244            0 :       auto wfp = *static_cast<DAPHNEStreamFrame*>(capsule.get_pointer());
     245            0 :       return wfp;
     246              :     }))
     247            0 :     .def(
     248              :       "get_daqheader",
     249            0 :       [](DAPHNEStreamFrame& self) -> const detdataformats::DAQHeader& { return self.daq_header; },
     250            0 :       py::return_value_policy::reference_internal)
     251            0 :     .def(
     252              :       "get_header",
     253            0 :       [](DAPHNEStreamFrame& self) -> const DAPHNEStreamFrame::Header& { return self.header; },
     254            0 :       py::return_value_policy::reference_internal)
     255              :     //.def("get_trailer", [](DAPHNEStreamFrame& self) -> const DAPHNEStreamFrame::PeakDescriptorData& {return
     256              :     //self.trailer;}, py::return_value_policy::reference_internal)
     257            0 :     .def("get_timestamp", &DAPHNEStreamFrame::get_timestamp)
     258            0 :     .def("set_timestamp", &DAPHNEStreamFrame::set_timestamp)
     259            0 :     .def("get_adc", &DAPHNEStreamFrame::get_adc)
     260            0 :     .def("set_adc", &DAPHNEStreamFrame::set_adc)
     261            0 :     .def("get_channel0", &DAPHNEStreamFrame::get_channel0)
     262            0 :     .def("get_channel1", &DAPHNEStreamFrame::get_channel1)
     263            0 :     .def("get_channel2", &DAPHNEStreamFrame::get_channel2)
     264            0 :     .def("get_channel3", &DAPHNEStreamFrame::get_channel3)
     265            0 :     .def_static("sizeof", []() { return sizeof(DAPHNEStreamFrame); })
     266            0 :     .def("get_bytes", [](DAPHNEStreamFrame* fr) -> py::bytes {
     267            0 :       return py::bytes(reinterpret_cast<char*>(fr), sizeof(DAPHNEStreamFrame)); // NOLINT
     268              :     });
     269            0 : } // NOLINT function length
     270              : 
     271              : // NOLINTEND(build/unsigned)
     272              : 
     273              : } // namespace dunedaq::fddetdataformats::python
        

Generated by: LCOV version 2.0-1