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

            Line data    Source code
       1              : /**
       2              :  * @file wib2.cpp Python bindings for the WIB2Frame 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/WIB2Frame.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_wib2(py::module& m)
      20              : {
      21              : 
      22            0 :   py::class_<WIB2Frame>(m, "WIB2Frame", py::buffer_protocol())
      23            0 :     .def(py::init())
      24            0 :     .def(py::init([](py::capsule capsule) {
      25            0 :         auto wfp = *static_cast<WIB2Frame*>(capsule.get_pointer());
      26            0 :         return wfp;
      27              :     } ))
      28            0 :     .def(py::init([](py::bytes bytes){
      29            0 :       py::buffer_info info(py::buffer(bytes).request());
      30            0 :       auto wfp = *static_cast<WIB2Frame*>(info.ptr);
      31            0 :       return wfp;
      32            0 :     }))
      33            0 :     .def("get_adc", static_cast<uint16_t (WIB2Frame::*)(const int) const>(&WIB2Frame::get_adc))
      34            0 :     .def("set_adc", static_cast<void (WIB2Frame::*)(int, uint16_t)>(&WIB2Frame::set_adc))
      35            0 :     .def("get_timestamp", &WIB2Frame::get_timestamp)
      36            0 :     .def("get_header", [](WIB2Frame& self) -> const WIB2Frame::Header& {return self.header;})
      37            0 :     .def("get_trailer", [](WIB2Frame& self) -> const WIB2Frame::Trailer& {return self.trailer;})
      38            0 :     .def_static("sizeof", [](){ return sizeof(WIB2Frame); })
      39            0 :     .def("get_bytes",
      40            0 :          [](WIB2Frame* fr) -> py::bytes {
      41            0 :            return py::bytes(reinterpret_cast<char*>(fr), sizeof(WIB2Frame));
      42              :         }
      43              :     )
      44              :   ;
      45              : 
      46            0 :   py::class_<WIB2Frame::Header>(m, "WIB2Header")
      47            0 :     .def_property_readonly("version", [](WIB2Frame::Header& self) -> uint32_t {return self.version;})
      48            0 :     .def_property_readonly("detector_id", [](WIB2Frame::Header& self) -> uint32_t {return self.detector_id;})
      49            0 :     .def_property_readonly("crate", [](WIB2Frame::Header& self) -> uint32_t {return self.crate;})
      50            0 :     .def_property_readonly("slot", [](WIB2Frame::Header& self) -> uint32_t {return self.slot;})
      51            0 :     .def_property_readonly("link", [](WIB2Frame::Header& self) -> uint32_t {return self.link;})
      52            0 :     .def_property_readonly("timestamp_1", [](WIB2Frame::Header& self) -> uint32_t {return self.timestamp_1;})
      53            0 :     .def_property_readonly("timestamp_2", [](WIB2Frame::Header& self) -> uint32_t {return self.timestamp_2;})
      54            0 :     .def_property_readonly("colddata_timestamp_id", [](WIB2Frame::Header& self) -> uint32_t {return self.colddata_timestamp_id;})
      55            0 :     .def_property_readonly("femb_valid", [](WIB2Frame::Header& self) -> uint32_t {return self.femb_valid;})
      56            0 :     .def_property_readonly("link_mask", [](WIB2Frame::Header& self) -> uint32_t {return self.link_mask;})
      57            0 :     .def_property_readonly("lock_output_status", [](WIB2Frame::Header& self) -> uint32_t {return self.lock_output_status;})
      58            0 :     .def_property_readonly("femb_pulser_frame_bits", [](WIB2Frame::Header& self) -> uint32_t {return self.femb_pulser_frame_bits;})
      59            0 :     .def_property_readonly("femb_sync_flags", [](WIB2Frame::Header& self) -> uint32_t {return self.femb_sync_flags;})
      60            0 :     .def_property_readonly("colddata_timestamp", [](WIB2Frame::Header& self) -> uint32_t {return self.colddata_timestamp;})
      61              :   ;
      62              :   
      63            0 :   py::class_<WIB2Frame::Trailer>(m, "WIB2Trailer")
      64            0 :     .def_property_readonly("flex_bits", [](WIB2Frame::Trailer& self) -> uint32_t {return self.flex_bits;})
      65            0 :     .def_property_readonly("ws", [](WIB2Frame::Trailer& self) -> uint32_t {return self.ws;})
      66            0 :     .def_property_readonly("psr_cal", [](WIB2Frame::Trailer& self) -> uint32_t {return self.psr_cal;})
      67            0 :     .def_property_readonly("ready", [](WIB2Frame::Trailer& self) -> uint32_t {return self.ready;})
      68            0 :     .def_property_readonly("context_code", [](WIB2Frame::Trailer& self) -> uint32_t {return self.context_code;})
      69              :   ;
      70              : 
      71            0 : }
      72              : 
      73              : } // namespace dunedaq::fddetdataformats::python
        

Generated by: LCOV version 2.0-1