DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
TimingHardwareManagerBase.hxx
Go to the documentation of this file.
1namespace dunedaq::timinglibs {
2
3template<class Child>
4void
6 void (Child::*f)(const timingcmd::TimingHwCmd&))
7{
8 using namespace std::placeholders;
9
10 std::string hw_cmd_name = hw_cmd_id;
11 TLOG_DEBUG(0) << "Registering timing hw command id: " << hw_cmd_name << " called with " << typeid(f).name()
12 << std::endl;
13
14 bool done = m_timing_hw_cmd_map_.emplace(hw_cmd_name, std::bind(f, dynamic_cast<Child*>(this), _1)).second;
15 if (!done) {
16 throw TimingHardwareCommandRegistrationFailed(ERS_HERE, hw_cmd_name, get_name());
17 }
18}
19
20template<class TIMING_DEV>
21TIMING_DEV
22TimingHardwareManagerBase::get_timing_device(const std::string& device_name)
23{
24 auto device = get_timing_device_plain(device_name);
25 auto timing_device = cast_timing_device<TIMING_DEV>(device, device_name);
26 return timing_device;
27}
28
29} // namespace dunedaq::timinglibs
#define ERS_HERE
TIMING_DEV cast_timing_device(const uhal::Node *device_node, std::string timing_device_name)
const timing::TimingNode * get_timing_device_plain(const std::string &device_name)
TIMING_DEV get_timing_device(const std::string &device_name)
void register_timing_hw_command(const std::string &hw_cmd_id, void(Child::*f)(const timingcmd::TimingHwCmd &))
std::map< timingcmd::TimingHwCmdId, std::function< void(const timingcmd::TimingHwCmd &)> > m_timing_hw_cmd_map_
#define TLOG_DEBUG(lvl,...)
Definition Logging.hpp:112