Psyllid  v1.12.4
Project 8 Data Acquisisition Software
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
daq_control Class Reference

Controls psyllid's status and forwards requests to the DAQ nodes. More...

#include <daq_control.hh>

Inheritance diagram for daq_control:
Inheritance graph

Classes

class  run_error
 
class  status_error
 

Public Types

enum  status : uint32_t {
  deactivated = 0, activating = 2, activated = 4, running = 5,
  deactivating = 6, canceled = 8, do_restart = 9, done = 10,
  error = 200
}
 
- Public Types inherited from control_access
typedef std::shared_ptr< daq_controldc_ptr_t
 

Public Member Functions

 daq_control (const scarab::param_node &a_master_config, std::shared_ptr< stream_manager > a_mgr)
 
virtual ~daq_control ()
 
void initialize ()
 Pre-execution initialization (call after setting the control_access pointer) More...
 
void execute (std::condition_variable &a_ready_condition_variable, std::mutex &a_ready_mutex)
 Run the DAQ control thread. More...
 
void activate ()
 
void reactivate ()
 
void deactivate ()
 
bool is_ready_at_startup () const
 
void start_run ()
 
void stop_run ()
 
void apply_config (const std::string &a_node_name, const scarab::param_node &a_config)
 
void dump_config (const std::string &a_node_name, scarab::param_node &a_config)
 
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_activate_daq_control (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_reactivate_daq_control (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_start_run_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_stop_run_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_apply_config_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_dump_config_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_run_command_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_set_filename_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_set_description_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_set_duration_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_set_use_monarch_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_get_status_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_get_filename_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_get_duration_request (const dripline::request_ptr_t a_request)
 
dripline::reply_ptr_t handle_get_use_monarch_request (const dripline::request_ptr_t a_request)
 
void set_filename (const std::string &a_filename, unsigned a_file_num=0)
 
const std::string & get_filename (unsigned a_file_num=0)
 
void set_description (const std::string &a_desc, unsigned a_file_num=0)
 
const std::string & get_description (unsigned a_file_num=0)
 
 snake_case_mv_accessible (unsigned, run_duration)
 
 snake_case_mv_accessible (bool, use_monarch)
 
status get_status () const
 
void set_status (status a_status)
 
- Public Member Functions inherited from control_access
 control_access ()
 
virtual ~control_access ()
 

Static Public Member Functions

static uint32_t status_to_uint (status a_status)
 
static status uint_to_status (uint32_t a_value)
 
static std::string interpret_status (status a_status)
 
- Static Public Member Functions inherited from control_access
static void set_daq_control (std::weak_ptr< daq_control > a_daq_control)
 

Private Member Functions

void do_cancellation (int a_code)
 
void do_run (unsigned a_duration)
 

Private Attributes

std::condition_variable f_activation_condition
 
std::mutex f_daq_mutex
 
std::shared_ptr< stream_managerf_node_manager
 
scarab::param_node f_daq_config
 
midge_package f_midge_pkg
 
active_node_bindingsf_node_bindings
 
std::condition_variable f_run_stopper
 
std::mutex f_run_stop_mutex
 
bool f_do_break_run
 
std::future< void > f_run_return
 
message_relayerf_msg_relay
 
std::atomic< statusf_status
 

Additional Inherited Members

- Protected Member Functions inherited from control_access
dc_ptr_t use_daq_control ()
 
bool daq_control_expired ()
 
- Static Protected Attributes inherited from control_access
static std::weak_ptr< daq_controlf_daq_control = std::weak_ptr< daq_control >()
 

Detailed Description

Controls psyllid's status and forwards requests to the DAQ nodes.

Author
N. S. Oblath

Handles all requests received via request_receiver that don't affect the stream setup directly. It switches between daq-states, starts and stops runs by un-pausing and pausing midge and forwards run-daq-commands.

DAQ states:

Startup readiness: whether the DAQ control is ready for use after startup depends on whether it was told to activate on startup or not:

Settings that can be applied in the "daq" section of the master config:

Definition at line 60 of file daq_control.hh.

Member Enumeration Documentation

◆ status

enum status : uint32_t
strong
Enumerator
deactivated 
activating 
activated 
running 
deactivating 
canceled 
do_restart 
done 
error 

Definition at line 179 of file daq_control.hh.

Constructor & Destructor Documentation

◆ daq_control()

daq_control ( const scarab::param_node &  a_master_config,
std::shared_ptr< stream_manager a_mgr 
)

Definition at line 39 of file daq_control.cc.

◆ ~daq_control()

~daq_control ( )
virtual

Definition at line 66 of file daq_control.cc.

Member Function Documentation

◆ activate()

void activate ( )

Start the DAQ into the activated state Can throw daq_control::status_error; daq_control will still be usable Can throw psyllid::error; daq_control will NOT be usable

Definition at line 271 of file daq_control.cc.

◆ apply_config()

void apply_config ( const std::string &  a_node_name,
const scarab::param_node &  a_config 
)

Definition at line 506 of file daq_control.cc.

◆ deactivate()

void deactivate ( )

Returns the DAQ to the deactivated state Can throw daq_control::status_error; daq_control will still be usable Can throw psyllid::error; daq_control will NOT be usable

Definition at line 300 of file daq_control.cc.

◆ do_cancellation()

void do_cancellation ( int  a_code)
private

Definition at line 481 of file daq_control.cc.

◆ do_run()

void do_run ( unsigned  a_duration)
private

Definition at line 355 of file daq_control.cc.

◆ dump_config()

void dump_config ( const std::string &  a_node_name,
scarab::param_node &  a_config 
)

Definition at line 531 of file daq_control.cc.

◆ execute()

void execute ( std::condition_variable &  a_ready_condition_variable,
std::mutex &  a_ready_mutex 
)

Run the DAQ control thread.

Definition at line 76 of file daq_control.cc.

◆ get_description()

const std::string & get_description ( unsigned  a_file_num = 0)

Definition at line 1064 of file daq_control.cc.

◆ get_filename()

const std::string & get_filename ( unsigned  a_file_num = 0)

Definition at line 1039 of file daq_control.cc.

◆ get_status()

daq_control::status get_status ( ) const
inline

Definition at line 205 of file daq_control.hh.

◆ handle_activate_daq_control()

dripline::reply_ptr_t handle_activate_daq_control ( const dripline::request_ptr_t  a_request)

Definition at line 591 of file daq_control.cc.

◆ handle_apply_config_request()

dripline::reply_ptr_t handle_apply_config_request ( const dripline::request_ptr_t  a_request)

Definition at line 684 of file daq_control.cc.

◆ handle_deactivate_daq_control()

dripline::reply_ptr_t handle_deactivate_daq_control ( const dripline::request_ptr_t  a_request)

Definition at line 617 of file daq_control.cc.

◆ handle_dump_config_request()

dripline::reply_ptr_t handle_dump_config_request ( const dripline::request_ptr_t  a_request)

Definition at line 758 of file daq_control.cc.

◆ handle_get_description_request()

dripline::reply_ptr_t handle_get_description_request ( const dripline::request_ptr_t  a_request)

Definition at line 981 of file daq_control.cc.

◆ handle_get_duration_request()

dripline::reply_ptr_t handle_get_duration_request ( const dripline::request_ptr_t  a_request)

Definition at line 1003 of file daq_control.cc.

◆ handle_get_filename_request()

dripline::reply_ptr_t handle_get_filename_request ( const dripline::request_ptr_t  a_request)

Definition at line 959 of file daq_control.cc.

◆ handle_get_status_request()

dripline::reply_ptr_t handle_get_status_request ( const dripline::request_ptr_t  a_request)

Definition at line 944 of file daq_control.cc.

◆ handle_get_use_monarch_request()

dripline::reply_ptr_t handle_get_use_monarch_request ( const dripline::request_ptr_t  a_request)

Definition at line 1014 of file daq_control.cc.

◆ handle_reactivate_daq_control()

dripline::reply_ptr_t handle_reactivate_daq_control ( const dripline::request_ptr_t  a_request)

Definition at line 604 of file daq_control.cc.

◆ handle_run_command_request()

dripline::reply_ptr_t handle_run_command_request ( const dripline::request_ptr_t  a_request)

Definition at line 817 of file daq_control.cc.

◆ handle_set_description_request()

dripline::reply_ptr_t handle_set_description_request ( const dripline::request_ptr_t  a_request)

Definition at line 888 of file daq_control.cc.

◆ handle_set_duration_request()

dripline::reply_ptr_t handle_set_duration_request ( const dripline::request_ptr_t  a_request)

Definition at line 910 of file daq_control.cc.

◆ handle_set_filename_request()

dripline::reply_ptr_t handle_set_filename_request ( const dripline::request_ptr_t  a_request)

Definition at line 867 of file daq_control.cc.

◆ handle_set_use_monarch_request()

dripline::reply_ptr_t handle_set_use_monarch_request ( const dripline::request_ptr_t  a_request)

Definition at line 930 of file daq_control.cc.

◆ handle_start_run_request()

dripline::reply_ptr_t handle_start_run_request ( const dripline::request_ptr_t  a_request)

Definition at line 630 of file daq_control.cc.

◆ handle_stop_run_request()

dripline::reply_ptr_t handle_stop_run_request ( const dripline::request_ptr_t  a_request)

Definition at line 671 of file daq_control.cc.

◆ initialize()

void initialize ( )

Pre-execution initialization (call after setting the control_access pointer)

Definition at line 70 of file daq_control.cc.

◆ interpret_status()

std::string interpret_status ( status  a_status)
static

Definition at line 1084 of file daq_control.cc.

◆ is_ready_at_startup()

bool is_ready_at_startup ( ) const

Definition at line 324 of file daq_control.cc.

◆ reactivate()

void reactivate ( )

Restarts the DAQ into the activated state Can throw daq_control::status_error; daq_control will still be usable Can throw psyllid::error; daq_control will NOT be usable

Definition at line 292 of file daq_control.cc.

◆ run_command()

bool run_command ( const std::string &  a_node_name,
const std::string &  a_cmd,
const scarab::param_node &  a_args 
)

Instruct a node to run a command Throws psyllid::error if the command fails; returns false if the command is not recognized

Definition at line 561 of file daq_control.cc.

◆ set_description()

void set_description ( const std::string &  a_desc,
unsigned  a_file_num = 0 
)

Definition at line 1051 of file daq_control.cc.

◆ set_filename()

void set_filename ( const std::string &  a_filename,
unsigned  a_file_num = 0 
)

Definition at line 1026 of file daq_control.cc.

◆ set_status()

void set_status ( status  a_status)
inline

Definition at line 210 of file daq_control.hh.

◆ snake_case_mv_accessible() [1/2]

snake_case_mv_accessible ( unsigned  ,
run_duration   
)

◆ snake_case_mv_accessible() [2/2]

snake_case_mv_accessible ( bool  ,
use_monarch   
)

◆ start_run()

void start_run ( )

Start a run Can throw daq_control::run_error or status_error; daq_control will still be usable Can throw psyllid::error; daq_control will NOT be usable Stop run with stop_run()

Definition at line 329 of file daq_control.cc.

◆ status_to_uint()

uint32_t status_to_uint ( status  a_status)
static

Definition at line 1076 of file daq_control.cc.

◆ stop_run()

void stop_run ( )

Stop a run Can throw daq_control::run_error or status_error; daq_control will still be usable Can throw psyllid::error; daq_control will NOT be usable

Definition at line 466 of file daq_control.cc.

◆ uint_to_status()

daq_control::status uint_to_status ( uint32_t  a_value)
static

Definition at line 1080 of file daq_control.cc.

Member Data Documentation

◆ f_activation_condition

std::condition_variable f_activation_condition
private

Definition at line 149 of file daq_control.hh.

◆ f_daq_config

scarab::param_node f_daq_config
private

Definition at line 154 of file daq_control.hh.

◆ f_daq_mutex

std::mutex f_daq_mutex
private

Definition at line 150 of file daq_control.hh.

◆ f_do_break_run

bool f_do_break_run
private

Definition at line 161 of file daq_control.hh.

◆ f_midge_pkg

midge_package f_midge_pkg
private

Definition at line 156 of file daq_control.hh.

◆ f_msg_relay

message_relayer* f_msg_relay
private

Definition at line 165 of file daq_control.hh.

◆ f_node_bindings

active_node_bindings* f_node_bindings
private

Definition at line 157 of file daq_control.hh.

◆ f_node_manager

std::shared_ptr< stream_manager > f_node_manager
private

Definition at line 152 of file daq_control.hh.

◆ f_run_return

std::future< void > f_run_return
private

Definition at line 163 of file daq_control.hh.

◆ f_run_stop_mutex

std::mutex f_run_stop_mutex
private

Definition at line 160 of file daq_control.hh.

◆ f_run_stopper

std::condition_variable f_run_stopper
private

Definition at line 159 of file daq_control.hh.

◆ f_status

std::atomic< status > f_status
private

Definition at line 200 of file daq_control.hh.


The documentation for this class was generated from the following files: