Line data Source code
1 : /**
2 : * @file TimingFanoutController.hpp
3 : *
4 : * TimingFanoutController is a DAQModule implementation that
5 : * provides a control interface for timing master hardware.
6 : *
7 : * This is part of the DUNE DAQ Software Suite, copyright 2020.
8 : * Licensing/copyright details are in the COPYING file that you should have
9 : * received with this code.
10 : */
11 :
12 : #ifndef TIMINGLIBS_PLUGINS_TIMINGFANOUTCONTROLLER_HPP_
13 : #define TIMINGLIBS_PLUGINS_TIMINGFANOUTCONTROLLER_HPP_
14 :
15 : #include "timinglibs/TimingEndpointControllerBase.hpp"
16 :
17 : #include "timinglibs/timingcmd/Nljs.hpp"
18 : #include "timinglibs/timingcmd/Structs.hpp"
19 :
20 : #include "appfwk/DAQModule.hpp"
21 : #include "ers/Issue.hpp"
22 : #include "logging/Logging.hpp" // NOTE: if ISSUES ARE DECLARED BEFORE include logging/Logging.hpp, TLOG_DEBUG<<issue wont work.
23 : #include "utilities/WorkerThread.hpp"
24 :
25 : #include <memory>
26 : #include <string>
27 : #include <vector>
28 :
29 : namespace dunedaq {
30 0 : ERS_DECLARE_ISSUE(timinglibs, ///< Namespace
31 : TimingFanoutNotReady, ///< Issue class name
32 : fanout << " timing fanout did not become ready in time.", ///< Message
33 : ((std::string)fanout) ) ///< Message parameters
34 : namespace timinglibs {
35 :
36 : /**
37 : * @brief TimingFanoutController is a DAQModule implementation that
38 : * provides a control interface for timing master hardware.
39 : */
40 : class TimingFanoutController : public dunedaq::timinglibs::TimingEndpointControllerBase
41 : {
42 : public:
43 : /**
44 : * @brief TimingFanoutController Constructor
45 : * @param name Instance name for this TimingFanoutController instance
46 : */
47 : explicit TimingFanoutController(const std::string& name);
48 :
49 : TimingFanoutController(const TimingFanoutController&) = delete; ///< TimingFanoutController is not copy-constructible
50 : TimingFanoutController& operator=(const TimingFanoutController&) =
51 : delete; ///< TimingFanoutController is not copy-assignable
52 : TimingFanoutController(TimingFanoutController&&) = delete; ///< TimingFanoutController is not move-constructible
53 : TimingFanoutController& operator=(TimingFanoutController&&) =
54 : delete; ///< TimingFanoutController is not move-assignable
55 :
56 : protected:
57 : // Commands
58 : void do_configure(const CommandData_t&) override;
59 : void send_configure_hardware_commands(const CommandData_t& data) override;
60 :
61 : timingcmd::TimingHwCmd construct_fanout_hw_cmd(const std::string& cmd_id);
62 :
63 : // pass op mon info
64 : void process_device_info(nlohmann::json info) override;
65 : };
66 : } // namespace timinglibs
67 : } // namespace dunedaq
68 :
69 : #endif // TIMINGLIBS_PLUGINS_TIMINGFANOUTCONTROLLER_HPP_
70 :
71 : // Local Variables:
72 : // c-basic-offset: 2
73 : // End:
|