12#ifndef TIMINGLIBS_SRC_TIMINGHARDWAREMANAGER_HPP_
13#define TIMINGLIBS_SRC_TIMINGHARDWAREMANAGER_HPP_
36#include "uhal/ConnectionManager.hpp"
68 void init(std::shared_ptr<appfwk::ConfigurationManager> mcfg)
override;
69 virtual void conf(
const nlohmann::json& data);
76 virtual void do_scrap(
const nlohmann::json&);
107 template<
class TIMING_DEV>
114 template<
typename Child>
Base class for timing nodes.
TimingHardwareInterface sets up IPBus UHAL interface.
TimingHardwareManagerBase creates vectors of ints and writes them to the configured output queues.
std::atomic< bool > m_run_endpoint_scan_cleanup_thread
const timing::TimingNode * get_timing_device_plain(const std::string &device_name)
void hsi_stop(const timingcmd::TimingHwCmd &hw_cmd)
std::atomic< uint64_t > m_accepted_hw_commands_counter
void io_reset(const timingcmd::TimingHwCmd &hw_cmd)
void print_status(const timingcmd::TimingHwCmd &hw_cmd)
void register_info_gatherer(uint gather_interval, const std::string &device_name, int op_mon_level)
std::map< uint, int > m_monitored_endpoints_round_trip_times
TIMING_DEV get_timing_device(const std::string &device_name)
std::map< std::string, std::unique_ptr< uhal::HwInterface > > m_hw_device_map
virtual void perform_endpoint_scan(const timingcmd::TimingHwCmd &hw_cmd)
std::atomic< uint64_t > m_received_hw_commands_counter
std::map< uint, std::string > m_monitored_device_names_fanout
virtual void clean_endpoint_scan_threads()
void endpoint_reset(const timingcmd::TimingHwCmd &hw_cmd)
void init(std::shared_ptr< appfwk::ConfigurationManager > mcfg) override
virtual ~TimingHardwareManagerBase()
virtual void register_common_hw_commands_for_design()=0
TimingHardwareManagerBase(const TimingHardwareManagerBase &)=delete
TimingHardwareManagerBase is not copy-constructible.
std::shared_ptr< source_t > m_hw_command_receiver
uint m_gather_interval_debug
virtual void do_scrap(const nlohmann::json &)
void hsi_reset(const timingcmd::TimingHwCmd &hw_cmd)
void set_endpoint_delay(const timingcmd::TimingHwCmd &hw_cmd)
virtual void process_hardware_command(timingcmd::TimingHwCmd &timing_hw_cmd)
std::unique_ptr< dunedaq::utilities::ReusableThread > m_endpoint_scan_threads_clean_up_thread
std::atomic< uint64_t > m_rejected_hw_commands_counter
std::atomic< uint64_t > m_failed_hw_commands_counter
void gather_monitor_data(InfoGatherer &gatherer)
void hsi_configure(const timingcmd::TimingHwCmd &hw_cmd)
virtual void partition_configure(const timingcmd::TimingHwCmd &hw_cmd)=0
std::string m_monitored_device_name_endpoint
virtual void register_endpoint_hw_commands_for_design()=0
void set_timestamp(const timingcmd::TimingHwCmd &hw_cmd)
TimingHardwareManagerBase(TimingHardwareManagerBase &&)=delete
TimingHardwareManagerBase is not move-constructible.
virtual void start_hw_mon_gathering(const std::string &device_name="")
std::string m_monitored_device_name_master
virtual void stop_hw_mon_gathering(const std::string &device_name="")
void hsi_print_status(const timingcmd::TimingHwCmd &hw_cmd)
void send_fl_cmd(const timingcmd::TimingHwCmd &hw_cmd)
std::mutex m_hw_device_map_mutex
std::string m_monitored_device_name_hsi
std::mutex master_sfp_mutex
virtual void register_master_hw_commands_for_design()=0
void hsi_start(const timingcmd::TimingHwCmd &hw_cmd)
TimingHardwareManagerBase & operator=(TimingHardwareManagerBase &&)=delete
TimingHardwareManagerBase is not move-assignable.
std::map< std::string, std::unique_ptr< std::thread > > m_command_threads
void register_timing_hw_command(const std::string &hw_cmd_id, void(Child::*f)(const timingcmd::TimingHwCmd &))
virtual void register_hsi_hw_commands_for_design()=0
std::map< timingcmd::TimingHwCmdId, std::function< void(const timingcmd::TimingHwCmd &)> > m_timing_hw_cmd_map_
std::mutex m_command_threads_map_mutex
std::string m_hw_cmd_connection
void endpoint_enable(const timingcmd::TimingHwCmd &hw_cmd)
TimingHardwareManagerBase(const std::string &name)
TimingHardwareManagerBase Constructor.
void endpoint_disable(const timingcmd::TimingHwCmd &hw_cmd)
const timinglibs::dal::TimingHardwareManagerConf * m_params
virtual std::vector< std::string > check_hw_mon_gatherer_is_running(const std::string &device_name)
TimingHardwareManagerBase & operator=(const TimingHardwareManagerBase &)=delete
TimingHardwareManagerBase is not copy-assignable.
virtual void conf(const nlohmann::json &data)
void master_endpoint_scan(const timingcmd::TimingHwCmd &hw_cmd)
std::map< std::string, std::unique_ptr< InfoGatherer > > m_info_gatherers
std::string TimingHwCmdId