LCOV - code coverage report
Current view: top level - rawdatautils/pybindsrc - unpack.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 62 0
Test Date: 2025-12-21 13:07:08 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 "fddetdataformats/WIBFrame.hpp"
      10              : #include "fddetdataformats/WIB2Frame.hpp"
      11              : #include "fddetdataformats/DAPHNEFrame.hpp"
      12              : #include "fddetdataformats/DAPHNEEthFrame.hpp"
      13              : #include "fddetdataformats/DAPHNEEthStreamFrame.hpp"
      14              : #include "fddetdataformats/WIBEthFrame.hpp"
      15              : #include "fddetdataformats/TDEEthFrame.hpp"
      16              : #include "daqdataformats/Fragment.hpp"
      17              : 
      18              : #include <pybind11/numpy.h>
      19              : #include <pybind11/pybind11.h>
      20              : #include <pybind11/stl.h>
      21              : 
      22              : #include <fmt/core.h>
      23              : 
      24              : namespace py = pybind11;
      25              : 
      26              : namespace dunedaq {
      27              : namespace rawdatautils {
      28              : 
      29            0 : void print_hex_fragment(daqdataformats::Fragment const& frag) {
      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              : 
      37            0 : }
      38              : 
      39              : 
      40              : namespace wib {
      41              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment& frag);
      42              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, int nframes);
      43              :   extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment& frag);
      44              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
      45              : }
      46              : 
      47              : namespace wib2 {
      48              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      49              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment const& frag);
      50              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, int nframes);
      51              :   extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment const& frag);
      52              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
      53              : }
      54              : 
      55              : namespace wibeth {
      56              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      57              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment const& frag);
      58              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, uint32_t n_frames);
      59              :   extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment const& frag);
      60              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, uint32_t n_frames);
      61              : }
      62              : 
      63              : 
      64              : namespace daphne {
      65              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      66              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment& frag);
      67              :   extern py::array_t<uint8_t> np_array_channels(daqdataformats::Fragment& frag);
      68              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, int nframes);
      69              :   extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment& frag);
      70              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
      71              :   extern py::array_t<uint8_t> np_array_channels_data(void* data, int nframes);
      72              : 
      73              :   extern uint32_t get_n_frames_stream(daqdataformats::Fragment const& frag);
      74              :   extern py::array_t<uint16_t> np_array_adc_stream(daqdataformats::Fragment& frag);
      75              :   extern py::array_t<uint8_t> np_array_channels_stream(daqdataformats::Fragment& frag);
      76              :   extern py::array_t<uint16_t> np_array_adc_stream_data(void* data, int nframes);
      77              :   extern py::array_t<uint64_t> np_array_timestamp_stream(daqdataformats::Fragment& frag);
      78              :   extern py::array_t<uint64_t> np_array_timestamp_stream_data(void* data, int nframes);
      79              :   extern py::array_t<uint8_t> np_array_channels_stream_data(void* data, int nframes);
      80              : 
      81              : }
      82              : 
      83              : namespace daphneeth {
      84              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      85              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment& frag);
      86              :   extern py::array_t<uint8_t> np_array_channels(daqdataformats::Fragment& frag);
      87              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, int nframes);
      88              :   extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment& frag);
      89              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
      90              :   extern py::array_t<uint8_t> np_array_channels_data(void* data, int nframes);
      91              : 
      92              :   extern uint32_t get_n_frames_stream(daqdataformats::Fragment const& frag);
      93              :   extern py::array_t<uint16_t> np_array_adc_stream(daqdataformats::Fragment& frag);
      94              :   extern py::array_t<uint8_t> np_array_channels_stream(daqdataformats::Fragment& frag);
      95              :   extern py::array_t<uint16_t> np_array_adc_stream_data(void* data, int nframes);
      96              :   extern py::array_t<uint64_t> np_array_timestamp_stream(daqdataformats::Fragment& frag);
      97              :   extern py::array_t<uint64_t> np_array_timestamp_stream_data(void* data, int nframes);
      98              :   extern py::array_t<uint8_t> np_array_channels_stream_data(void* data, int nframes);
      99              : 
     100              : }
     101              : 
     102              : namespace tde {
     103              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
     104              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment const& frag);
     105              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, uint32_t n_frames);
     106              :   extern py::array_t<long double> np_array_timestamp(daqdataformats::Fragment const& frag);
     107              :   extern py::array_t<long double> np_array_timestamp_data(void* data, uint32_t n_frames);
     108              : 
     109              : }
     110              : 
     111              : namespace unpack {
     112              : namespace python {
     113              : 
     114              : void
     115            0 : register_unpack(py::module& m) {
     116              : 
     117            0 :   m.def("print_hex_fragment", &print_hex_fragment);
     118              : 
     119            0 :   py::module_ wib_module = m.def_submodule("wib");
     120            0 :   wib_module.def("np_array_adc", &wib::np_array_adc);
     121            0 :   wib_module.def("np_array_timestamp", &wib::np_array_timestamp);
     122            0 :   wib_module.def("np_array_adc_data", &wib::np_array_adc_data);
     123            0 :   wib_module.def("np_array_timestamp_data", &wib::np_array_timestamp_data);
     124              : 
     125            0 :   py::module_ wib2_module = m.def_submodule("wib2");
     126            0 :   wib2_module.def("get_n_frames", &wib2::get_n_frames);
     127            0 :   wib2_module.def("np_array_adc", &wib2::np_array_adc);
     128            0 :   wib2_module.def("np_array_timestamp", &wib2::np_array_timestamp);
     129            0 :   wib2_module.def("np_array_adc_data", &wib2::np_array_adc_data);
     130            0 :   wib2_module.def("np_array_timestamp_data", &wib2::np_array_timestamp_data);
     131              : 
     132            0 :   py::module_ wibeth_module = m.def_submodule("wibeth");
     133            0 :   wibeth_module.def("get_n_frames", &wibeth::get_n_frames);
     134            0 :   wibeth_module.def("np_array_adc", &wibeth::np_array_adc);
     135            0 :   wibeth_module.def("np_array_timestamp", &wibeth::np_array_timestamp);
     136            0 :   wibeth_module.def("np_array_adc_data", &wibeth::np_array_adc_data);
     137            0 :   wibeth_module.def("np_array_timestamp_data", &wibeth::np_array_timestamp_data);
     138              : 
     139            0 :   py::module_ daphne_module = m.def_submodule("daphne");
     140            0 :   daphne_module.def("get_n_frames", &daphne::get_n_frames);
     141            0 :   daphne_module.def("np_array_adc", &daphne::np_array_adc);
     142            0 :   daphne_module.def("np_array_timestamp", &daphne::np_array_timestamp);
     143            0 :   daphne_module.def("np_array_adc_data", &daphne::np_array_adc_data);
     144            0 :   daphne_module.def("np_array_timestamp_data", &daphne::np_array_timestamp_data);
     145            0 :   daphne_module.def("np_array_channels_data", &daphne::np_array_channels_data);
     146            0 :   daphne_module.def("np_array_channels", &daphne::np_array_channels);
     147              : 
     148            0 :   daphne_module.def("get_n_frames_stream", &daphne::get_n_frames_stream);
     149            0 :   daphne_module.def("np_array_adc_stream", &daphne::np_array_adc_stream);
     150            0 :   daphne_module.def("np_array_timestamp_stream", &daphne::np_array_timestamp_stream);
     151            0 :   daphne_module.def("np_array_adc_stream_data", &daphne::np_array_adc_stream_data);
     152            0 :   daphne_module.def("np_array_timestamp_stream_data", &daphne::np_array_timestamp_stream_data);
     153            0 :   daphne_module.def("np_array_channels_stream_data", &daphne::np_array_channels_stream_data);
     154            0 :   daphne_module.def("np_array_channels_stream", &daphne::np_array_channels_stream);
     155              : 
     156            0 :   py::module_ daphneeth_module = m.def_submodule("daphneeth");
     157            0 :   daphneeth_module.def("get_n_frames", &daphneeth::get_n_frames);
     158            0 :   daphneeth_module.def("np_array_adc", &daphneeth::np_array_adc);
     159            0 :   daphneeth_module.def("np_array_timestamp", &daphneeth::np_array_timestamp);
     160            0 :   daphneeth_module.def("np_array_adc_data", &daphneeth::np_array_adc_data);
     161            0 :   daphneeth_module.def("np_array_timestamp_data", &daphneeth::np_array_timestamp_data);
     162            0 :   daphneeth_module.def("np_array_channels_data", &daphneeth::np_array_channels_data);
     163            0 :   daphneeth_module.def("np_array_channels", &daphneeth::np_array_channels);
     164              : 
     165            0 :   daphneeth_module.def("get_n_frames_stream", &daphneeth::get_n_frames_stream);
     166            0 :   daphneeth_module.def("np_array_adc_stream", &daphneeth::np_array_adc_stream);
     167            0 :   daphneeth_module.def("np_array_timestamp_stream", &daphneeth::np_array_timestamp_stream);
     168            0 :   daphneeth_module.def("np_array_adc_stream_data", &daphneeth::np_array_adc_stream_data);
     169            0 :   daphneeth_module.def("np_array_timestamp_stream_data", &daphneeth::np_array_timestamp_stream_data);
     170            0 :   daphneeth_module.def("np_array_channels_stream_data", &daphneeth::np_array_channels_stream_data);
     171            0 :   daphneeth_module.def("np_array_channels_stream", &daphneeth::np_array_channels_stream);
     172              :   
     173            0 :   py::module_ tde_module = m.def_submodule("tde");
     174            0 :   tde_module.def("get_n_frames", &tde::get_n_frames);
     175            0 :   tde_module.def("np_array_adc", &tde::np_array_adc);
     176            0 :   tde_module.def("np_array_timestamp", &tde::np_array_timestamp);
     177            0 :   tde_module.def("np_array_adc_data", &tde::np_array_adc_data);
     178            0 :   tde_module.def("np_array_timestamp_data", &tde::np_array_timestamp_data);
     179              : 
     180            0 : }
     181              : 
     182              : } // namespace python
     183              : } // namespace rawdatautils
     184              : } // namespace dunedaq
     185              : }
        

Generated by: LCOV version 2.0-1