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-07-12 15:23:06 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/DAPHNEFrame.hpp"
      10              : #include "fddetdataformats/DAPHNEEthFrame.hpp"
      11              : #include "fddetdataformats/DAPHNEEthStreamFrame.hpp"
      12              : #include "fddetdataformats/WIBEthFrame.hpp"
      13              : #include "fddetdataformats/TDEEthFrame.hpp"
      14              : #include "daqdataformats/Fragment.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            0 : void print_hex_fragment(daqdataformats::Fragment const& frag) {
      28            0 :   uint64_t* data = static_cast<uint64_t*>(frag.get_data());
      29            0 :   size_t data_size = (frag.get_size() - sizeof(daqdataformats::FragmentHeader))/8;
      30              : 
      31            0 :   for ( size_t i(0); i<data_size; ++i) {
      32            0 :     fmt::print("{:06d} 0x{:016x}\n", i, data[i]);
      33              :   }
      34              : 
      35            0 : }
      36              : 
      37              : namespace wibeth {
      38              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      39              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment const& frag);
      40              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, uint32_t n_frames);
      41              :   extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment const& frag);
      42              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, uint32_t n_frames);
      43              : }
      44              : 
      45              : 
      46              : namespace daphne {
      47              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      48              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment& frag);
      49              :   extern py::array_t<uint8_t> np_array_channels(daqdataformats::Fragment& 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& frag);
      52              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
      53              :   extern py::array_t<uint8_t> np_array_channels_data(void* data, int nframes);
      54              : 
      55              :   extern uint32_t get_n_frames_stream(daqdataformats::Fragment const& frag);
      56              :   extern py::array_t<uint16_t> np_array_adc_stream(daqdataformats::Fragment& frag);
      57              :   extern py::array_t<uint8_t> np_array_channels_stream(daqdataformats::Fragment& frag);
      58              :   extern py::array_t<uint16_t> np_array_adc_stream_data(void* data, int nframes);
      59              :   extern py::array_t<uint64_t> np_array_timestamp_stream(daqdataformats::Fragment& frag);
      60              :   extern py::array_t<uint64_t> np_array_timestamp_stream_data(void* data, int nframes);
      61              :   extern py::array_t<uint8_t> np_array_channels_stream_data(void* data, int nframes);
      62              : 
      63              : }
      64              : 
      65              : namespace daphneeth {
      66              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      67              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment& frag);
      68              :   extern py::array_t<uint8_t> np_array_channels(daqdataformats::Fragment& frag);
      69              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, int nframes);
      70              :   extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment& frag);
      71              :   extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
      72              :   extern py::array_t<uint8_t> np_array_channels_data(void* data, int nframes);
      73              : 
      74              :   extern uint32_t get_n_frames_stream(daqdataformats::Fragment const& frag);
      75              :   extern py::array_t<uint16_t> np_array_adc_stream(daqdataformats::Fragment& frag);
      76              :   extern py::array_t<uint8_t> np_array_channels_stream(daqdataformats::Fragment& frag);
      77              :   extern py::array_t<uint16_t> np_array_adc_stream_data(void* data, int nframes);
      78              :   extern py::array_t<uint64_t> np_array_timestamp_stream(daqdataformats::Fragment& frag);
      79              :   extern py::array_t<uint64_t> np_array_timestamp_stream_data(void* data, int nframes);
      80              :   extern py::array_t<uint8_t> np_array_channels_stream_data(void* data, int nframes);
      81              : 
      82              : }
      83              : 
      84              : namespace tde {
      85              :   extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
      86              :   extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment const& frag);
      87              :   extern py::array_t<uint16_t> np_array_adc_data(void* data, uint32_t n_frames);
      88              :   extern py::array_t<long double> np_array_timestamp(daqdataformats::Fragment const& frag);
      89              :   extern py::array_t<long double> np_array_timestamp_data(void* data, uint32_t n_frames);
      90              : 
      91              : }
      92              : 
      93              : namespace unpack {
      94              : namespace python {
      95              : 
      96              : void
      97            0 : register_unpack(py::module& m) {
      98              : 
      99            0 :   m.def("print_hex_fragment", &print_hex_fragment);
     100              : 
     101            0 :   py::module_ wibeth_module = m.def_submodule("wibeth");
     102            0 :   wibeth_module.def("get_n_frames", &wibeth::get_n_frames);
     103            0 :   wibeth_module.def("np_array_adc", &wibeth::np_array_adc);
     104            0 :   wibeth_module.def("np_array_timestamp", &wibeth::np_array_timestamp);
     105            0 :   wibeth_module.def("np_array_adc_data", &wibeth::np_array_adc_data);
     106            0 :   wibeth_module.def("np_array_timestamp_data", &wibeth::np_array_timestamp_data);
     107              : 
     108            0 :   py::module_ daphne_module = m.def_submodule("daphne");
     109            0 :   daphne_module.def("get_n_frames", &daphne::get_n_frames);
     110            0 :   daphne_module.def("np_array_adc", &daphne::np_array_adc);
     111            0 :   daphne_module.def("np_array_timestamp", &daphne::np_array_timestamp);
     112            0 :   daphne_module.def("np_array_adc_data", &daphne::np_array_adc_data);
     113            0 :   daphne_module.def("np_array_timestamp_data", &daphne::np_array_timestamp_data);
     114            0 :   daphne_module.def("np_array_channels_data", &daphne::np_array_channels_data);
     115            0 :   daphne_module.def("np_array_channels", &daphne::np_array_channels);
     116              : 
     117            0 :   daphne_module.def("get_n_frames_stream", &daphne::get_n_frames_stream);
     118            0 :   daphne_module.def("np_array_adc_stream", &daphne::np_array_adc_stream);
     119            0 :   daphne_module.def("np_array_timestamp_stream", &daphne::np_array_timestamp_stream);
     120            0 :   daphne_module.def("np_array_adc_stream_data", &daphne::np_array_adc_stream_data);
     121            0 :   daphne_module.def("np_array_timestamp_stream_data", &daphne::np_array_timestamp_stream_data);
     122            0 :   daphne_module.def("np_array_channels_stream_data", &daphne::np_array_channels_stream_data);
     123            0 :   daphne_module.def("np_array_channels_stream", &daphne::np_array_channels_stream);
     124              : 
     125            0 :   py::module_ daphneeth_module = m.def_submodule("daphneeth");
     126            0 :   daphneeth_module.def("get_n_frames", &daphneeth::get_n_frames);
     127            0 :   daphneeth_module.def("np_array_adc", &daphneeth::np_array_adc);
     128            0 :   daphneeth_module.def("np_array_timestamp", &daphneeth::np_array_timestamp);
     129            0 :   daphneeth_module.def("np_array_adc_data", &daphneeth::np_array_adc_data);
     130            0 :   daphneeth_module.def("np_array_timestamp_data", &daphneeth::np_array_timestamp_data);
     131            0 :   daphneeth_module.def("np_array_channels_data", &daphneeth::np_array_channels_data);
     132            0 :   daphneeth_module.def("np_array_channels", &daphneeth::np_array_channels);
     133              : 
     134            0 :   daphneeth_module.def("get_n_frames_stream", &daphneeth::get_n_frames_stream);
     135            0 :   daphneeth_module.def("np_array_adc_stream", &daphneeth::np_array_adc_stream);
     136            0 :   daphneeth_module.def("np_array_timestamp_stream", &daphneeth::np_array_timestamp_stream);
     137            0 :   daphneeth_module.def("np_array_adc_stream_data", &daphneeth::np_array_adc_stream_data);
     138            0 :   daphneeth_module.def("np_array_timestamp_stream_data", &daphneeth::np_array_timestamp_stream_data);
     139            0 :   daphneeth_module.def("np_array_channels_stream_data", &daphneeth::np_array_channels_stream_data);
     140            0 :   daphneeth_module.def("np_array_channels_stream", &daphneeth::np_array_channels_stream);
     141              :   
     142            0 :   py::module_ tde_module = m.def_submodule("tde");
     143            0 :   tde_module.def("get_n_frames", &tde::get_n_frames);
     144            0 :   tde_module.def("np_array_adc", &tde::np_array_adc);
     145            0 :   tde_module.def("np_array_timestamp", &tde::np_array_timestamp);
     146            0 :   tde_module.def("np_array_adc_data", &tde::np_array_adc_data);
     147            0 :   tde_module.def("np_array_timestamp_data", &tde::np_array_timestamp_data);
     148              : 
     149            0 : }
     150              : 
     151              : } // namespace python
     152              : } // namespace rawdatautils
     153              : } // namespace dunedaq
     154              : }
        

Generated by: LCOV version 2.0-1