LCOV - code coverage report
Current view: top level - flxlibs/src - ElinkConcept.hpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 31 0
Test Date: 2026-03-29 15:29:34 Functions: 0.0 % 5 0

            Line data    Source code
       1              : /**
       2              :  * @file ElinkConcept.hpp ElinkConcept for constructors and
       3              :  * forwarding command args. Enforces the implementation to
       4              :  * queue in block_addresses
       5              :  *
       6              :  * This is part of the DUNE DAQ , copyright 2020.
       7              :  * Licensing/copyright details are in the COPYING file that you should have
       8              :  * received with this code.
       9              :  */
      10              : #ifndef FLXLIBS_SRC_ELINKCONCEPT_HPP_
      11              : #define FLXLIBS_SRC_ELINKCONCEPT_HPP_
      12              : 
      13              : #include "DefaultParserImpl.hpp"
      14              : 
      15              : #include "appfwk/DAQModule.hpp"
      16              : #include "packetformat/detail/block_parser.hpp"
      17              : 
      18              : #include "appmodel/DataMoveCallbackConf.hpp"
      19              : 
      20              : #include <memory>
      21              : #include <sstream>
      22              : #include <string>
      23              : 
      24              : namespace dunedaq {
      25              : namespace flxlibs {
      26              : 
      27              : class ElinkConcept : public opmonlib::MonitorableObject 
      28              : {
      29              : public:
      30            0 :   ElinkConcept()
      31            0 :     : m_parser_impl()
      32            0 :     , m_card_id(0)
      33            0 :     , m_logical_unit(0)
      34            0 :     , m_link_id(0)
      35            0 :     , m_link_tag(0)
      36            0 :     , m_elink_str("")
      37            0 :     , m_elink_source_tid("")
      38              :   {
      39            0 :     m_parser = std::make_unique<felix::packetformat::BlockParser<DefaultParserImpl>>(m_parser_impl);
      40            0 :   }
      41            0 :   virtual ~ElinkConcept() {}
      42              : 
      43              :   ElinkConcept(const ElinkConcept&) = delete;            ///< ElinkConcept is not copy-constructible
      44              :   ElinkConcept& operator=(const ElinkConcept&) = delete; ///< ElinkConcept is not copy-assginable
      45              :   ElinkConcept(ElinkConcept&&) = delete;                 ///< ElinkConcept is not move-constructible
      46              :   ElinkConcept& operator=(ElinkConcept&&) = delete;      ///< ElinkConcept is not move-assignable
      47              : 
      48              :   virtual void init(const size_t block_queue_capacity) = 0;
      49              :   virtual void acquire_callback() = 0;
      50              :   
      51              :   virtual void conf(size_t block_size, bool is_32b_trailers) = 0;
      52              :   virtual void start() = 0;
      53              :   virtual void stop() = 0;
      54              : 
      55              :   virtual bool queue_in_block_address(uint64_t block_addr) = 0; // NOLINT
      56              : 
      57            0 :   DefaultParserImpl& get_parser() { return std::ref(m_parser_impl); }
      58              : 
      59            0 :   void set_sink_config(const appmodel::DataMoveCallbackConf* sink_conf) 
      60              :   { 
      61            0 :     m_sink_conf = sink_conf; 
      62            0 :   }
      63              :   
      64            0 :   void set_ids(int card, int slr, int id, int tag)
      65              :   {
      66            0 :     m_card_id = card;
      67            0 :     m_logical_unit = slr;
      68            0 :     m_link_id = id;
      69            0 :     m_link_tag = tag;
      70              : 
      71            0 :     std::ostringstream lidstrs;
      72            0 :     lidstrs << "Elink["
      73            0 :             << "cid:" << std::to_string(m_card_id) << "|"
      74            0 :             << "slr:" << std::to_string(m_logical_unit) << "|"
      75            0 :             << "lid:" << std::to_string(m_link_id) << "|"
      76            0 :             << "tag:" << std::to_string(m_link_tag) << "]";
      77            0 :     m_elink_str = lidstrs.str();
      78              : 
      79            0 :     std::ostringstream tidstrs;
      80            0 :     tidstrs << "ept-" << std::to_string(m_card_id) << "-" << std::to_string(m_logical_unit);
      81            0 :     m_elink_source_tid = tidstrs.str();
      82              : 
      83            0 :   }
      84              : 
      85              :   const appmodel::DataMoveCallbackConf* m_sink_conf;
      86              : 
      87              :   protected:
      88              :   // Block Parser
      89              :   DefaultParserImpl m_parser_impl;
      90              :   std::unique_ptr<felix::packetformat::BlockParser<DefaultParserImpl>> m_parser;
      91              : 
      92              :   int m_card_id;
      93              :   int m_logical_unit;
      94              :   int m_link_id;
      95              :   int m_link_tag;
      96              :   std::string m_elink_str;
      97              :   std::string m_elink_source_tid;
      98              :   std::chrono::time_point<std::chrono::high_resolution_clock> m_t0;
      99              : 
     100              : private:
     101              : };
     102              : 
     103              : } // namespace flxlibs
     104              : } // namespace dunedaq
     105              : 
     106              : #endif // FLXLIBS_SRC_ELINKCONCEPT_HPP_
        

Generated by: LCOV version 2.0-1