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
18
19#include <memory>
20#include <sstream>
21#include <string>
22
23namespace dunedaq {
24namespace flxlibs {
25
27{
28public:
31 , m_card_id(0)
33 , m_link_id(0)
34 , m_link_tag(0)
35 , m_elink_str("")
37 {
38 m_parser = std::make_unique<felix::packetformat::BlockParser<DefaultParserImpl>>(m_parser_impl);
39 }
40 virtual ~ElinkConcept() {}
41
42 ElinkConcept(const ElinkConcept&) = delete;
46
47 virtual void init(const size_t block_queue_capacity) = 0;
48 virtual void set_sink(const std::string& sink_name) = 0;
49 virtual void conf(size_t block_size, bool is_32b_trailers) = 0;
50 virtual void start() = 0;
51 virtual void stop() = 0;
52
53 virtual bool queue_in_block_address(uint64_t block_addr) = 0; // NOLINT
54
56
57 void set_ids(int card, int slr, int id, int tag)
58 {
59 m_card_id = card;
60 m_logical_unit = slr;
61 m_link_id = id;
62 m_link_tag = tag;
63
64 std::ostringstream lidstrs;
65 lidstrs << "Elink["
66 << "cid:" << std::to_string(m_card_id) << "|"
67 << "slr:" << std::to_string(m_logical_unit) << "|"
68 << "lid:" << std::to_string(m_link_id) << "|"
69 << "tag:" << std::to_string(m_link_tag) << "]";
70 m_elink_str = lidstrs.str();
71
72 std::ostringstream tidstrs;
73 tidstrs << "ept-" << std::to_string(m_card_id) << "-" << std::to_string(m_logical_unit);
74 m_elink_source_tid = tidstrs.str();
75
76 }
77
78protected:
79 // Block Parser
81 std::unique_ptr<felix::packetformat::BlockParser<DefaultParserImpl>> m_parser;
82
87 std::string m_elink_str;
88 std::string m_elink_source_tid;
89 std::chrono::time_point<std::chrono::high_resolution_clock> m_t0;
90
91private:
92};
93
94} // namespace flxlibs
95} // namespace dunedaq
96
97#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.
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.
virtual void init(const size_t block_queue_capacity)=0
void set_ids(int card, int slr, int id, int tag)
virtual void set_sink(const std::string &sink_name)=0
virtual void conf(size_t block_size, bool is_32b_trailers)=0
ElinkConcept(const ElinkConcept &)=delete
ElinkConcept is not copy-constructible.
Including Qt Headers.