LCOV - code coverage report
Current view: top level - fddetdataformats/pybindsrc - daphneethstream.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 50 0
Test Date: 2025-12-21 13:07:08 Functions: 0.0 % 15 0

            Line data    Source code
       1              : /**
       2              :  * @file daphneethstream.cpp Python bindings for the DAPHNEEthStreamFrame 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/DAPHNEEthStreamFrame.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_daphneethstream(py::module& m)
      20              : {
      21              : 
      22              : 
      23            0 :   py::class_<DAPHNEEthStreamFrame::ChannelWord>(m, "DAPHNEEthStreamChannelWord")
      24            0 :     .def_property("tbd", 
      25            0 :       [](DAPHNEEthStreamFrame::ChannelWord& self) -> uint64_t {return self.tbd;},
      26            0 :       [](DAPHNEEthStreamFrame::ChannelWord& self, uint64_t tbd) {self.tbd = tbd;}
      27              :     )
      28            0 :     .def_property("version", 
      29            0 :       [](DAPHNEEthStreamFrame::ChannelWord& self) -> uint64_t {return self.version;},
      30            0 :       [](DAPHNEEthStreamFrame::ChannelWord& self, uint64_t version) {self.version = version;}
      31              :     )
      32            0 :     .def_property("channel", 
      33            0 :       [](DAPHNEEthStreamFrame::ChannelWord& self) -> uint64_t {return self.channel;},
      34            0 :       [](DAPHNEEthStreamFrame::ChannelWord& self, uint64_t channel) {self.channel = channel;}
      35              :     )
      36              :     ;
      37              : 
      38            0 :   py::class_<DAPHNEEthStreamFrame::Header>(m, "DAPHNEEthStreamHeader")
      39            0 :     .def_property("channel_words",
      40            0 :       [](DAPHNEEthStreamFrame::Header& self) -> py::list {
      41            0 :         py::list result;
      42            0 :         for (int i = 0; i < 4; i++) {
      43            0 :           result.append(self.channel_words[i]);
      44              :         }
      45            0 :         return result;
      46            0 :       },
      47            0 :       [](DAPHNEEthStreamFrame::Header& self, py::list channel_words) {
      48            0 :         for (int i = 0; i < 4 && i < len(channel_words); i++) {
      49            0 :           self.channel_words[i] = channel_words[i].cast<DAPHNEEthStreamFrame::ChannelWord>();
      50              :         }
      51            0 :       }
      52              :     )
      53              :     ;
      54              : 
      55            0 :   py::class_<DAPHNEEthStreamFrame>(m, "DAPHNEEthStreamFrame", py::buffer_protocol())
      56            0 :     .def(py::init())
      57            0 :     .def(py::init([](py::capsule capsule) {
      58            0 :         auto wfp = *static_cast<DAPHNEEthStreamFrame*>(capsule.get_pointer());
      59            0 :         return wfp;
      60              :     } ))
      61            0 :     .def(py::init([](py::bytes bytes){
      62            0 :         py::buffer_info info(py::buffer(bytes).request());
      63            0 :         auto wfp = *static_cast<DAPHNEEthStreamFrame*>(info.ptr);
      64            0 :         return wfp;
      65            0 :     }))
      66            0 :     .def("get_daqheader", [](DAPHNEEthStreamFrame& self) -> const detdataformats::DAQEthHeader& {return self.daq_header;}, py::return_value_policy::reference_internal)
      67            0 :     .def("get_daphneheader", [](DAPHNEEthStreamFrame& self) -> const DAPHNEEthStreamFrame::Header& {return self.header;}, py::return_value_policy::reference_internal)
      68            0 :     .def("get_adc", &DAPHNEEthStreamFrame::get_adc)
      69            0 :     .def("set_adc", &DAPHNEEthStreamFrame::set_adc)
      70            0 :     .def("get_timestamp", &DAPHNEEthStreamFrame::get_timestamp)
      71            0 :     .def("set_timestamp", &DAPHNEEthStreamFrame::set_timestamp)
      72            0 :     .def("get_channel", &DAPHNEEthStreamFrame::get_channel)
      73            0 :     .def("set_channel", &DAPHNEEthStreamFrame::set_channel)
      74            0 :     .def("get_channel0", &DAPHNEEthStreamFrame::get_channel0)
      75            0 :     .def("get_channel1", &DAPHNEEthStreamFrame::get_channel1)
      76            0 :     .def("get_channel2", &DAPHNEEthStreamFrame::get_channel2)
      77            0 :     .def("get_channel3", &DAPHNEEthStreamFrame::get_channel3)
      78            0 :     .def_static("sizeof", [](){ return sizeof(DAPHNEEthStreamFrame); })
      79            0 :     .def("get_bytes",
      80            0 :          [](DAPHNEEthStreamFrame* fr) -> py::bytes {
      81            0 :            return py::bytes(reinterpret_cast<char*>(fr), sizeof(DAPHNEEthStreamFrame));
      82              :         })
      83              :   ;
      84            0 : }
      85              : 
      86              : } // namespace dunedaq::fddetdataformats::python
        

Generated by: LCOV version 2.0-1