DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ElinkConcept.hpp
Go to the documentation of this file.
1
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
19
20#include <memory>
21#include <sstream>
22#include <string>
23
24namespace dunedaq {
25namespace flxlibs {
26
28{
29public:
32 , m_card_id(0)
34 , m_link_id(0)
35 , m_link_tag(0)
36 , m_elink_str("")
38 {
39 m_parser = std::make_unique<felix::packetformat::BlockParser<DefaultParserImpl>>(m_parser_impl);
40 }
41 virtual ~ElinkConcept() {}
42
43 ElinkConcept(const ElinkConcept&) = delete;
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
58
60 {
61 m_sink_conf = sink_conf;
62 }
63
64 void set_ids(int card, int slr, int id, int tag)
65 {
66 m_card_id = card;
67 m_logical_unit = slr;
68 m_link_id = id;
69 m_link_tag = tag;
70
71 std::ostringstream lidstrs;
72 lidstrs << "Elink["
73 << "cid:" << std::to_string(m_card_id) << "|"
74 << "slr:" << std::to_string(m_logical_unit) << "|"
75 << "lid:" << std::to_string(m_link_id) << "|"
76 << "tag:" << std::to_string(m_link_tag) << "]";
77 m_elink_str = lidstrs.str();
78
79 std::ostringstream tidstrs;
80 tidstrs << "ept-" << std::to_string(m_card_id) << "-" << std::to_string(m_logical_unit);
81 m_elink_source_tid = tidstrs.str();
82
83 }
84
86
87 protected:
88 // Block Parser
90 std::unique_ptr<felix::packetformat::BlockParser<DefaultParserImpl>> m_parser;
91
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
100private:
101};
102
103} // namespace flxlibs
104} // namespace dunedaq
105
106#endif // FLXLIBS_SRC_ELINKCONCEPT_HPP_
ElinkConcept & operator=(const ElinkConcept &)=delete
ElinkConcept is not copy-assginable.
DefaultParserImpl & get_parser()
std::unique_ptr< felix::packetformat::BlockParser< DefaultParserImpl > > m_parser
ElinkConcept(ElinkConcept &&)=delete
ElinkConcept is not move-constructible.
void set_sink_config(const appmodel::DataMoveCallbackConf *sink_conf)
std::chrono::time_point< std::chrono::high_resolution_clock > m_t0
virtual bool queue_in_block_address(uint64_t block_addr)=0
ElinkConcept & operator=(ElinkConcept &&)=delete
ElinkConcept is not move-assignable.
const appmodel::DataMoveCallbackConf * m_sink_conf
virtual void init(const size_t block_queue_capacity)=0
void set_ids(int card, int slr, int id, int tag)
virtual void conf(size_t block_size, bool is_32b_trailers)=0
virtual void acquire_callback()=0
ElinkConcept(const ElinkConcept &)=delete
ElinkConcept is not copy-constructible.
Including Qt Headers.