LCOV - code coverage report
Current view: top level - rawdatautils/pybindsrc - unpack.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 51 0
Test Date: 2026-10-11 15:05:20 Functions: 0.0 % 2 0

            Line data    Source code
       1              : /**
       2              :  * @file unpack.cpp Python bindings for python unpackers of data
       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 "daqdataformats/Fragment.hpp"
      10              : #include "fddetdataformats/DAPHNEEthFrame.hpp"
      11              : #include "fddetdataformats/DAPHNEEthStreamFrame.hpp"
      12              : #include "fddetdataformats/DAPHNEFrame.hpp"
      13              : #include "fddetdataformats/TDEEthFrame.hpp"
      14              : #include "fddetdataformats/WIBEthFrame.hpp"
      15              : 
      16              : #include <pybind11/numpy.h>
      17              : #include <pybind11/pybind11.h>
      18              : #include <pybind11/stl.h>
      19              : 
      20              : #include <fmt/core.h>
      21              : 
      22              : namespace py = pybind11;
      23              : 
      24              : namespace dunedaq {
      25              : namespace rawdatautils {
      26              : 
      27              : void
      28            0 : print_hex_fragment(daqdataformats::Fragment const& frag)
      29              : {
      30            0 :   uint64_t* data = static_cast<uint64_t*>(frag.get_data());
      31            0 :   size_t data_size = (frag.get_size() - sizeof(daqdataformats::FragmentHeader)) / 8;
      32              : 
      33            0 :   for (size_t i(0); i < data_size; ++i) {
      34            0 :     fmt::print("{:06d} 0x{:016x}\n", i, data[i]);
      35              :   }
      36            0 : }
      37              : 
      38              : namespace wibeth {
      39              : extern uint32_t
      40              : get_n_frames(daqdataformats::Fragment const& frag);
      41              : extern py::array_t<uint16_t>
      42              : np_array_adc(daqdataformats::Fragment const& frag);
      43              : extern py::array_t<uint16_t>
      44              : np_array_adc_data(void* data, uint32_t n_frames);
      45              : extern py::array_t<uint64_t>
      46              : np_array_timestamp(daqdataformats::Fragment const& frag);
      47              : extern py::array_t<uint64_t>
      48              : np_array_timestamp_data(void* data, uint32_t n_frames);
      49              : }
      50              : 
      51              : namespace daphne {
      52              : extern uint32_t
      53              : get_n_frames(daqdataformats::Fragment const& frag);
      54              : extern py::array_t<uint16_t>
      55              : np_array_adc(daqdataformats::Fragment& frag);
      56              : extern py::array_t<uint8_t>
      57              : np_array_channels(daqdataformats::Fragment& frag);
      58              : extern py::array_t<uint16_t>
      59              : np_array_adc_data(void* data, int nframes);
      60              : extern py::array_t<uint64_t>
      61              : np_array_timestamp(daqdataformats::Fragment& frag);
      62              : extern py::array_t<uint64_t>
      63              : np_array_timestamp_data(void* data, int nframes);
      64              : extern py::array_t<uint8_t>
      65              : np_array_channels_data(void* data, int nframes);
      66              : 
      67              : extern uint32_t
      68              : get_n_frames_stream(daqdataformats::Fragment const& frag);
      69              : extern py::array_t<uint16_t>
      70              : np_array_adc_stream(daqdataformats::Fragment& frag);
      71              : extern py::array_t<uint8_t>
      72              : np_array_channels_stream(daqdataformats::Fragment& frag);
      73              : extern py::array_t<uint16_t>
      74              : np_array_adc_stream_data(void* data, int nframes);
      75              : extern py::array_t<uint64_t>
      76              : np_array_timestamp_stream(daqdataformats::Fragment& frag);
      77              : extern py::array_t<uint64_t>
      78              : np_array_timestamp_stream_data(void* data, int nframes);
      79              : extern py::array_t<uint8_t>
      80              : np_array_channels_stream_data(void* data, int nframes);
      81              : 
      82              : }
      83              : 
      84              : namespace daphneeth {
      85              : extern uint32_t
      86              : get_n_frames(daqdataformats::Fragment const& frag);
      87              : extern py::array_t<uint16_t>
      88              : np_array_adc(daqdataformats::Fragment& frag);
      89              : extern py::array_t<uint8_t>
      90              : np_array_channels(daqdataformats::Fragment& frag);
      91              : extern py::array_t<uint16_t>
      92              : np_array_adc_data(void* data, int nframes);
      93              : extern py::array_t<uint64_t>
      94              : np_array_timestamp(daqdataformats::Fragment& frag);
      95              : extern py::array_t<uint64_t>
      96              : np_array_timestamp_data(void* data, int nframes);
      97              : extern py::array_t<uint8_t>
      98              : np_array_channels_data(void* data, int nframes);
      99              : 
     100              : extern uint32_t
     101              : get_n_frames_stream(daqdataformats::Fragment const& frag);
     102              : extern py::array_t<uint16_t>
     103              : np_array_adc_stream(daqdataformats::Fragment& frag);
     104              : extern py::array_t<uint8_t>
     105              : np_array_channels_stream(daqdataformats::Fragment& frag);
     106              : extern py::array_t<uint16_t>
     107              : np_array_adc_stream_data(void* data, int nframes);
     108              : extern py::array_t<uint64_t>
     109              : np_array_timestamp_stream(daqdataformats::Fragment& frag);
     110              : extern py::array_t<uint64_t>
     111              : np_array_timestamp_stream_data(void* data, int nframes);
     112              : extern py::array_t<uint8_t>
     113              : np_array_channels_stream_data(void* data, int nframes);
     114              : 
     115              : }
     116              : 
     117              : namespace tde {
     118              : extern uint32_t
     119              : get_n_frames(daqdataformats::Fragment const& frag);
     120              : extern py::array_t<uint16_t>
     121              : np_array_adc(daqdataformats::Fragment const& frag);
     122              : extern py::array_t<uint16_t>
     123              : np_array_adc_data(void* data, uint32_t n_frames);
     124              : extern py::array_t<long double>
     125              : np_array_timestamp(daqdataformats::Fragment const& frag);
     126              : extern py::array_t<long double>
     127              : np_array_timestamp_data(void* data, uint32_t n_frames);
     128              : 
     129              : }
     130              : 
     131              : namespace unpack {
     132              : namespace python {
     133              : 
     134              : void
     135            0 : register_unpack(py::module& m)
     136              : {
     137              : 
     138            0 :   m.def("print_hex_fragment", &print_hex_fragment);
     139              : 
     140            0 :   py::module_ wibeth_module = m.def_submodule("wibeth");
     141            0 :   wibeth_module.def("get_n_frames", &wibeth::get_n_frames);
     142            0 :   wibeth_module.def("np_array_adc", &wibeth::np_array_adc);
     143            0 :   wibeth_module.def("np_array_timestamp", &wibeth::np_array_timestamp);
     144            0 :   wibeth_module.def("np_array_adc_data", &wibeth::np_array_adc_data);
     145            0 :   wibeth_module.def("np_array_timestamp_data", &wibeth::np_array_timestamp_data);
     146              : 
     147            0 :   py::module_ daphne_module = m.def_submodule("daphne");
     148            0 :   daphne_module.def("get_n_frames", &daphne::get_n_frames);
     149            0 :   daphne_module.def("np_array_adc", &daphne::np_array_adc);
     150            0 :   daphne_module.def("np_array_timestamp", &daphne::np_array_timestamp);
     151            0 :   daphne_module.def("np_array_adc_data", &daphne::np_array_adc_data);
     152            0 :   daphne_module.def("np_array_timestamp_data", &daphne::np_array_timestamp_data);
     153            0 :   daphne_module.def("np_array_channels_data", &daphne::np_array_channels_data);
     154            0 :   daphne_module.def("np_array_channels", &daphne::np_array_channels);
     155              : 
     156            0 :   daphne_module.def("get_n_frames_stream", &daphne::get_n_frames_stream);
     157            0 :   daphne_module.def("np_array_adc_stream", &daphne::np_array_adc_stream);
     158            0 :   daphne_module.def("np_array_timestamp_stream", &daphne::np_array_timestamp_stream);
     159            0 :   daphne_module.def("np_array_adc_stream_data", &daphne::np_array_adc_stream_data);
     160            0 :   daphne_module.def("np_array_timestamp_stream_data", &daphne::np_array_timestamp_stream_data);
     161            0 :   daphne_module.def("np_array_channels_stream_data", &daphne::np_array_channels_stream_data);
     162            0 :   daphne_module.def("np_array_channels_stream", &daphne::np_array_channels_stream);
     163              : 
     164            0 :   py::module_ daphneeth_module = m.def_submodule("daphneeth");
     165            0 :   daphneeth_module.def("get_n_frames", &daphneeth::get_n_frames);
     166            0 :   daphneeth_module.def("np_array_adc", &daphneeth::np_array_adc);
     167            0 :   daphneeth_module.def("np_array_timestamp", &daphneeth::np_array_timestamp);
     168            0 :   daphneeth_module.def("np_array_adc_data", &daphneeth::np_array_adc_data);
     169            0 :   daphneeth_module.def("np_array_timestamp_data", &daphneeth::np_array_timestamp_data);
     170            0 :   daphneeth_module.def("np_array_channels_data", &daphneeth::np_array_channels_data);
     171            0 :   daphneeth_module.def("np_array_channels", &daphneeth::np_array_channels);
     172              : 
     173            0 :   daphneeth_module.def("get_n_frames_stream", &daphneeth::get_n_frames_stream);
     174            0 :   daphneeth_module.def("np_array_adc_stream", &daphneeth::np_array_adc_stream);
     175            0 :   daphneeth_module.def("np_array_timestamp_stream", &daphneeth::np_array_timestamp_stream);
     176            0 :   daphneeth_module.def("np_array_adc_stream_data", &daphneeth::np_array_adc_stream_data);
     177            0 :   daphneeth_module.def("np_array_timestamp_stream_data", &daphneeth::np_array_timestamp_stream_data);
     178            0 :   daphneeth_module.def("np_array_channels_stream_data", &daphneeth::np_array_channels_stream_data);
     179            0 :   daphneeth_module.def("np_array_channels_stream", &daphneeth::np_array_channels_stream);
     180              : 
     181            0 :   py::module_ tde_module = m.def_submodule("tde");
     182            0 :   tde_module.def("get_n_frames", &tde::get_n_frames);
     183            0 :   tde_module.def("np_array_adc", &tde::np_array_adc);
     184            0 :   tde_module.def("np_array_timestamp", &tde::np_array_timestamp);
     185            0 :   tde_module.def("np_array_adc_data", &tde::np_array_adc_data);
     186            0 :   tde_module.def("np_array_timestamp_data", &tde::np_array_timestamp_data);
     187            0 : }
     188              : 
     189              : } // namespace python
     190              : } // namespace rawdatautils
     191              : } // namespace dunedaq
     192              : }
        

Generated by: LCOV version 2.0-1