Line data Source code
1 : /**
2 : * @file HSIDataHandlerModule.cpp HSIDataHandlerModule class implementation
3 : *
4 : * This is part of the DUNE DAQ , copyright 2020.
5 : * Licensing/copyright details are in the COPYING file that you should have
6 : * received with this code.
7 : */
8 :
9 : #include "HSIDataHandlerModule.hpp"
10 :
11 : #include "hsilibs/Types.hpp"
12 : #include "HSIFrameProcessor.hpp"
13 :
14 : #include "datahandlinglibs/concepts/DataHandlingConcept.hpp"
15 : #include "datahandlinglibs/models/DataHandlingModel.hpp"
16 : #include "datahandlinglibs/models/BinarySearchQueueModel.hpp"
17 : #include "datahandlinglibs/models/DefaultRequestHandlerModel.hpp"
18 : #include "datahandlinglibs/ReadoutLogging.hpp"
19 :
20 : #include "appfwk/cmd/Nljs.hpp"
21 : #include "logging/Logging.hpp"
22 : #include "rcif/cmd/Nljs.hpp"
23 :
24 : #include <memory>
25 : #include <sstream>
26 : #include <string>
27 : #include <vector>
28 :
29 : using namespace dunedaq::datahandlinglibs::logging;
30 :
31 : namespace dunedaq {
32 : namespace hsilibs {
33 :
34 0 : HSIDataHandlerModule::HSIDataHandlerModule(const std::string& name)
35 : : DAQModule(name)
36 0 : , m_configured(false)
37 0 : , m_readout_impl(nullptr)
38 0 : , m_run_marker{ false }
39 : {
40 0 : register_command("conf", &HSIDataHandlerModule::do_conf);
41 0 : register_command("scrap", &HSIDataHandlerModule::do_scrap);
42 0 : register_command("start", &HSIDataHandlerModule::do_start);
43 0 : register_command("stop_trigger_sources", &HSIDataHandlerModule::do_stop);
44 0 : register_command("record", &HSIDataHandlerModule::do_record);
45 0 : }
46 :
47 : void
48 0 : HSIDataHandlerModule::init(std::shared_ptr<appfwk::ConfigurationManager> mcfg)
49 : {
50 :
51 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Entering init() method";
52 :
53 0 : namespace rol = dunedaq::datahandlinglibs;
54 :
55 0 : m_readout_impl = std::make_unique<rol::DataHandlingModel<
56 : hsilibs::HSI_FRAME_STRUCT,
57 : rol::DefaultRequestHandlerModel<hsilibs::HSI_FRAME_STRUCT, rol::BinarySearchQueueModel<hsilibs::HSI_FRAME_STRUCT>>,
58 : rol::BinarySearchQueueModel<hsilibs::HSI_FRAME_STRUCT>,
59 0 : hsilibs::HSIFrameProcessor>>(m_run_marker);
60 0 : m_readout_impl->init(mcfg->get_dal<appmodel::DataHandlerModule>(get_name()));
61 :
62 0 : if (m_readout_impl == nullptr)
63 : {
64 0 : TLOG() << get_name() << "Initialize HSIDataHandlerModule FAILED! ";
65 0 : throw datahandlinglibs::FailedReadoutInitialization(ERS_HERE, get_name(), "OKS Config"); // 4 json ident
66 : }
67 :
68 0 : register_node( "data_handler", m_readout_impl);
69 :
70 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Exiting init() method";
71 0 : }
72 :
73 : void
74 0 : HSIDataHandlerModule::do_conf(const CommandData_t& args)
75 : {
76 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Entering do_conf() method";
77 0 : m_readout_impl->conf(args);
78 0 : m_configured = true;
79 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Exiting do_conf() method";
80 0 : }
81 :
82 : void
83 0 : HSIDataHandlerModule::do_scrap(const CommandData_t& args)
84 : {
85 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Entering do_scrap() method";
86 0 : m_readout_impl->scrap(args);
87 0 : m_configured = false;
88 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Exiting do_scrap() method";
89 0 : }
90 : void
91 0 : HSIDataHandlerModule::do_start(const CommandData_t& args)
92 : {
93 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Entering do_start() method";
94 0 : m_run_marker.store(true);
95 0 : m_readout_impl->start(args);
96 :
97 0 : rcif::cmd::StartParams start_params = args.get<rcif::cmd::StartParams>();
98 0 : m_run_number = start_params.run;
99 0 : TLOG() << get_name() << " successfully started for run number " << m_run_number;
100 :
101 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Exiting do_start() method";
102 0 : }
103 :
104 : void
105 0 : HSIDataHandlerModule::do_stop(const CommandData_t& args)
106 : {
107 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Entering do_stop() method";
108 0 : m_run_marker.store(false);
109 0 : m_readout_impl->stop(args);
110 0 : TLOG() << get_name() << " successfully stopped for run number " << m_run_number;
111 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Exiting do_stop() method";
112 0 : }
113 :
114 : void
115 0 : HSIDataHandlerModule::do_record(const CommandData_t& args)
116 : {
117 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Entering do_issue_recording() method";
118 0 : m_readout_impl->record(args);
119 0 : TLOG_DEBUG(TLVL_ENTER_EXIT_METHODS) << get_name() << ": Exiting do_issue_recording() method";
120 0 : }
121 :
122 : } // namespace hsilibs
123 : } // namespace dunedaq
124 :
125 0 : DEFINE_DUNE_DAQ_MODULE(dunedaq::hsilibs::HSIDataHandlerModule)
|