LCOV - code coverage report
Current view: top level - daqdataformats/pybindsrc - trigger_record.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 123 0
Test Date: 2026-05-24 15:29:04 Functions: 0.0 % 17 0

            Line data    Source code
       1              : /**
       2              :  * @file trigger_record.cpp
       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/TriggerRecord.hpp"
      10              : #include "daqdataformats/TriggerRecordHeader.hpp"
      11              : 
      12              : #include <pybind11/pybind11.h>
      13              : #include <pybind11/stl.h>
      14              : 
      15              : #include <memory>
      16              : #include <sstream>
      17              : #include <vector>
      18              : 
      19              : namespace py = pybind11;
      20              : 
      21              : namespace dunedaq::daqdataformats::python {
      22              : 
      23              : void
      24            0 : register_trigger_record(py::module& m)
      25              : {
      26            0 :   py::class_<TriggerRecordHeader>(m, "TriggerRecordHeader", pybind11::buffer_protocol())
      27            0 :     .def(py::init<std::vector<ComponentRequest> const&>())
      28            0 :     .def(py::init([](py::capsule capsule, bool copy_from_buffer) {
      29            0 :       return std::make_unique<TriggerRecordHeader>(capsule.get_pointer(), copy_from_buffer);
      30              :     }))
      31            0 :     .def(py::init<TriggerRecordHeader const&>())
      32            0 :     .def("get_header", &TriggerRecordHeader::get_header)
      33            0 :     .def("get_trigger_number", &TriggerRecordHeader::get_trigger_number)
      34              :     //.def("set_trigger_number", &TriggerRecordHeader::set_trigger_number)
      35            0 :     .def("get_trigger_timestamp", &TriggerRecordHeader::get_trigger_timestamp)
      36              :     //.def("set_trigger_timestamp", &TriggerRecordHeader::set_trigger_timestamp)
      37            0 :     .def("get_num_requested_components", &TriggerRecordHeader::get_num_requested_components)
      38            0 :     .def("get_run_number", &TriggerRecordHeader::get_run_number)
      39              :     //.def("set_run_number", &TriggerRecordHeader::set_run_number)
      40            0 :     .def("get_status_bits", &TriggerRecordHeader::get_status_bits)
      41              :     //.def("set_status_bits", &TriggerRecordHeader::set_status_bits)
      42            0 :     .def("get_status_bit", &TriggerRecordHeader::get_status_bit)
      43              :     //.def("set_status_bit", &TriggerRecordHeader::set_status_bit)
      44            0 :     .def("get_trigger_type", &TriggerRecordHeader::get_trigger_type)
      45              :     //.def("set_trigger_type", &TriggerRecordHeader::set_trigger_type)
      46            0 :     .def("get_sequence_number", &TriggerRecordHeader::get_sequence_number)
      47              :     //.def("set_sequence_number", &TriggerRecordHeader::set_sequence_number)
      48            0 :     .def("get_max_sequence_number", &TriggerRecordHeader::get_max_sequence_number)
      49              :     //.def("set_max_sequence_number", &TriggerRecordHeader::set_max_sequence_number)
      50            0 :     .def("get_total_size_bytes", &TriggerRecordHeader::get_total_size_bytes)
      51            0 :     .def(
      52            0 :       "get_storage_location", &TriggerRecordHeader::get_storage_location, py::return_value_policy::reference_internal)
      53            0 :     .def("get_element_id", &TriggerRecordHeader::get_element_id)
      54            0 :     .def("get_component_for_source_id",
      55            0 :          &TriggerRecordHeader::get_component_for_source_id,
      56            0 :          py::return_value_policy::reference_internal)
      57            0 :     .def("at", &TriggerRecordHeader::at)
      58            0 :     .def("__getitem__", &TriggerRecordHeader::at, py::return_value_policy::reference_internal);
      59              : 
      60            0 :   py::class_<TriggerRecordHeaderData>(m, "TriggerRecordHeaderData")
      61            0 :     .def(py::init<>())
      62            0 :     .def_property_readonly_static("s_trigger_record_header_magic",
      63            0 :                                   [](const py::object&) -> uint32_t { // NOLINT(build/unsigned)
      64              :                                     return TriggerRecordHeaderData::s_trigger_record_header_magic;
      65              :                                   })
      66            0 :     .def_property_readonly_static("s_trigger_record_header_version",
      67            0 :                                   [](const py::object&) -> uint32_t { // NOLINT(build/unsigned)
      68              :                                     return TriggerRecordHeaderData::s_trigger_record_header_version;
      69              :                                   })
      70            0 :     .def_property_readonly_static("s_invalid_number_components",
      71            0 :                                   [](const py::object&) -> uint64_t { // NOLINT(build/unsigned)
      72              :                                     return TriggerRecordHeaderData::s_invalid_number_components;
      73              :                                   })
      74            0 :     .def_property_readonly_static("s_default_status_bits",
      75            0 :                                   [](const py::object&) -> uint32_t { // NOLINT(build/unsigned)
      76              :                                     return TriggerRecordHeaderData::s_default_status_bits;
      77              :                                   })
      78            0 :     .def_property_readonly("trigger_record_header_marker",
      79            0 :                            [](const TriggerRecordHeaderData& self) -> uint32_t { // NOLINT(build/unsigned)
      80            0 :                              return self.trigger_record_header_marker;
      81              :                            })
      82            0 :     .def_property_readonly(
      83            0 :       "version", [](const TriggerRecordHeaderData& self) -> uint32_t { return self.version; }) // NOLINT(build/unsigned)
      84            0 :     .def_property_readonly("trigger_number",
      85            0 :                            [](const TriggerRecordHeaderData& self) -> trigger_number_t { return self.trigger_number; })
      86            0 :     .def_property_readonly("trigger_timestamp",
      87            0 :                            [](const TriggerRecordHeaderData& self) -> timestamp_t { return self.trigger_timestamp; })
      88            0 :     .def_property_readonly("num_requested_components",
      89            0 :                            [](const TriggerRecordHeaderData& self) -> uint64_t { // NOLINT(build/unsigned)
      90            0 :                              return self.num_requested_components;
      91              :                            })
      92            0 :     .def_property_readonly("run_number",
      93            0 :                            [](const TriggerRecordHeaderData& self) -> run_number_t { return self.run_number; })
      94            0 :     .def_property_readonly(
      95              :       "status_bits",
      96            0 :       [](const TriggerRecordHeaderData& self) -> uint32_t { return self.status_bits; }) // NOLINT(build/unsigned)
      97            0 :     .def_property_readonly("trigger_type",
      98            0 :                            [](const TriggerRecordHeaderData& self) -> trigger_type_t { return self.trigger_type; })
      99            0 :     .def_property_readonly(
     100            0 :       "sequence_number", [](const TriggerRecordHeaderData& self) -> sequence_number_t { return self.sequence_number; })
     101            0 :     .def_property_readonly(
     102              :       "max_sequence_number",
     103            0 :       [](const TriggerRecordHeaderData& self) -> sequence_number_t { return self.max_sequence_number; })
     104            0 :     .def_property_readonly("element_id",
     105            0 :                            [](const TriggerRecordHeaderData& self) -> SourceID { return self.element_id; })
     106            0 :     .def("__str__",
     107            0 :          [](const TriggerRecordHeaderData& hdr) {
     108            0 :            std::ostringstream oss;
     109            0 :            oss << hdr;
     110            0 :            return oss.str();
     111            0 :          })
     112            0 :     .def("__repr__", [](const TriggerRecordHeaderData& hdr) {
     113            0 :       std::ostringstream oss;
     114            0 :       oss << "<daqdataformats::TriggerRecordHeaderData " << hdr << ">";
     115            0 :       return oss.str();
     116            0 :     });
     117              : 
     118            0 :   py::enum_<TriggerRecordStatusBits>(m, "TriggerRecordStatusBits")
     119            0 :     .value("kIncomplete", TriggerRecordStatusBits::kIncomplete)
     120            0 :     .value("kMismatch", TriggerRecordStatusBits::kMismatch)
     121            0 :     .value("kUnassigned2", TriggerRecordStatusBits::kUnassigned2)
     122            0 :     .value("kUnassigned3", TriggerRecordStatusBits::kUnassigned3)
     123            0 :     .value("kUnassigned4", TriggerRecordStatusBits::kUnassigned4)
     124            0 :     .value("kUnassigned5", TriggerRecordStatusBits::kUnassigned5)
     125            0 :     .value("kUnassigned6", TriggerRecordStatusBits::kUnassigned6)
     126            0 :     .value("kUnassigned7", TriggerRecordStatusBits::kUnassigned7)
     127            0 :     .value("kUnassigned8", TriggerRecordStatusBits::kUnassigned8)
     128            0 :     .value("kUnassigned9", TriggerRecordStatusBits::kUnassigned9)
     129            0 :     .value("kUnassigned10", TriggerRecordStatusBits::kUnassigned10)
     130            0 :     .value("kUnassigned11", TriggerRecordStatusBits::kUnassigned11)
     131            0 :     .value("kUnassigned12", TriggerRecordStatusBits::kUnassigned12)
     132            0 :     .value("kUnassigned13", TriggerRecordStatusBits::kUnassigned13)
     133            0 :     .value("kUnassigned14", TriggerRecordStatusBits::kUnassigned14)
     134            0 :     .value("kUnassigned15", TriggerRecordStatusBits::kUnassigned15)
     135            0 :     .value("kUnassigned16", TriggerRecordStatusBits::kUnassigned16)
     136            0 :     .value("kUnassigned17", TriggerRecordStatusBits::kUnassigned17)
     137            0 :     .value("kUnassigned18", TriggerRecordStatusBits::kUnassigned18)
     138            0 :     .value("kUnassigned19", TriggerRecordStatusBits::kUnassigned19)
     139            0 :     .value("kUnassigned20", TriggerRecordStatusBits::kUnassigned20)
     140            0 :     .value("kUnassigned21", TriggerRecordStatusBits::kUnassigned21)
     141            0 :     .value("kUnassigned22", TriggerRecordStatusBits::kUnassigned22)
     142            0 :     .value("kUnassigned23", TriggerRecordStatusBits::kUnassigned23)
     143            0 :     .value("kUnassigned24", TriggerRecordStatusBits::kUnassigned24)
     144            0 :     .value("kUnassigned25", TriggerRecordStatusBits::kUnassigned25)
     145            0 :     .value("kUnassigned26", TriggerRecordStatusBits::kUnassigned26)
     146            0 :     .value("kUnassigned27", TriggerRecordStatusBits::kUnassigned27)
     147            0 :     .value("kUnassigned28", TriggerRecordStatusBits::kUnassigned28)
     148            0 :     .value("kUnassigned29", TriggerRecordStatusBits::kUnassigned29)
     149            0 :     .value("kUnassigned30", TriggerRecordStatusBits::kUnassigned30)
     150            0 :     .value("kUnassigned31", TriggerRecordStatusBits::kUnassigned31)
     151            0 :     .value("kInvalid", TriggerRecordStatusBits::kInvalid);
     152              : 
     153            0 :   py::class_<TriggerRecord> py_trigger_record(m, "TriggerRecord", pybind11::buffer_protocol());
     154            0 :   py_trigger_record.def(py::init<TriggerRecordHeader const&>())
     155            0 :     .def(py::init<std::vector<ComponentRequest> const&>())
     156            0 :     .def(
     157              :       "get_header_ref",
     158            0 :       [](TriggerRecord& self) { return self.get_header_ref(); },
     159            0 :       py::return_value_policy::reference_internal)
     160            0 :     .def("get_header_data", &TriggerRecord::get_header_data)
     161            0 :     .def(
     162              :       "get_fragments_ref",
     163            0 :       [](TriggerRecord& self) {
     164            0 :         auto fragments = py::list();
     165            0 :         for (auto& fragment : self.get_fragments_ref()) {
     166            0 :           auto py_fragment = py::cast(*fragment, py::return_value_policy::reference);
     167            0 :           fragments.append(py_fragment);
     168            0 :         }
     169            0 :         return fragments;
     170            0 :       },
     171            0 :       py::return_value_policy::reference_internal)
     172            0 :     .def("get_total_size_bytes", &TriggerRecord::get_total_size_bytes);
     173            0 : } // NOLINT
     174              : 
     175              : } // namespace dunedaq::daqdataformats::python
        

Generated by: LCOV version 2.0-1