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

Generated by: LCOV version 2.0-1