8 #ifndef PSYLLID_DAQ_CONTROL_HH_ 9 #define PSYLLID_DAQ_CONTROL_HH_ 15 #include "cancelable.hh" 16 #include "member_variables.hh" 19 #include <condition_variable> 27 class message_relayer;
77 daq_control(
const scarab::param_node& a_master_config, std::shared_ptr< stream_manager > a_mgr );
84 void execute( std::condition_variable& a_ready_condition_variable, std::mutex& a_ready_mutex );
113 void apply_config(
const std::string& a_node_name,
const scarab::param_node& a_config );
114 void dump_config(
const std::string& a_node_name, scarab::param_node& a_config );
118 bool run_command(
const std::string& a_node_name,
const std::string& a_cmd,
const scarab::param_node& a_args );
147 void do_run(
unsigned a_duration );
168 void set_filename(
const std::string& a_filename,
unsigned a_file_num = 0 );
169 const std::string&
get_filename(
unsigned a_file_num = 0 );
171 void set_description(
const std::string& a_desc,
unsigned a_file_num = 0 );
174 mv_accessible(
unsigned, run_duration );
176 mv_accessible(
bool, use_monarch );
dripline::reply_ptr_t handle_reactivate_daq_control(const dripline::request_ptr_t a_request)
std::future< void > f_run_return
dripline::reply_ptr_t handle_apply_config_request(const dripline::request_ptr_t a_request)
dripline::reply_ptr_t handle_get_use_monarch_request(const dripline::request_ptr_t a_request)
const std::string & get_filename(unsigned a_file_num=0)
static status uint_to_status(uint32_t a_value)
static std::string interpret_status(status a_status)
const std::string & get_description(unsigned a_file_num=0)
void do_run(unsigned a_duration)
dripline::reply_ptr_t handle_stop_run_request(const dripline::request_ptr_t a_request)
void dump_config(const std::string &a_node_name, scarab::param_node &a_config)
std::condition_variable f_run_stopper
void initialize()
Pre-execution initialization (call after setting the control_access pointer)
std::atomic< status > f_status
Controls psyllid's status and forwards requests to the DAQ nodes.
bool run_command(const std::string &a_node_name, const std::string &a_cmd, const scarab::param_node &a_args)
dripline::reply_ptr_t handle_start_run_request(const dripline::request_ptr_t a_request)
dripline::reply_ptr_t handle_set_use_monarch_request(const dripline::request_ptr_t a_request)
void apply_config(const std::string &a_node_name, const scarab::param_node &a_config)
status get_status() const
dripline::reply_ptr_t handle_get_duration_request(const dripline::request_ptr_t a_request)
std::map< std::string, std::pair< node_binding *, midge::node *> > active_node_bindings
daq_control(const scarab::param_node &a_master_config, std::shared_ptr< stream_manager > a_mgr)
dripline::reply_ptr_t handle_activate_daq_control(const dripline::request_ptr_t a_request)
Gives other classes access to daq_control.
std::shared_ptr< stream_manager > f_node_manager
static uint32_t status_to_uint(status a_status)
midge_package f_midge_pkg
dripline::reply_ptr_t handle_get_status_request(const dripline::request_ptr_t a_request)
dripline::reply_ptr_t handle_run_command_request(const dripline::request_ptr_t a_request)
void set_status(status a_status)
void set_description(const std::string &a_desc, unsigned a_file_num=0)
void execute(std::condition_variable &a_ready_condition_variable, std::mutex &a_ready_mutex)
Run the DAQ control thread.
std::mutex f_run_stop_mutex
dripline::reply_ptr_t handle_get_filename_request(const dripline::request_ptr_t a_request)
void do_cancellation(int a_code)
dripline::reply_ptr_t handle_set_description_request(const dripline::request_ptr_t a_request)
scarab::param_node f_daq_config
std::condition_variable f_activation_condition
active_node_bindings * f_node_bindings
dripline::reply_ptr_t handle_dump_config_request(const dripline::request_ptr_t a_request)
bool is_ready_at_startup() const
void set_filename(const std::string &a_filename, unsigned a_file_num=0)
message_relayer * f_msg_relay
dripline::reply_ptr_t handle_set_duration_request(const dripline::request_ptr_t a_request)
dripline::reply_ptr_t handle_get_description_request(const dripline::request_ptr_t a_request)
dripline::reply_ptr_t handle_deactivate_daq_control(const dripline::request_ptr_t a_request)
dripline::reply_ptr_t handle_set_filename_request(const dripline::request_ptr_t a_request)