The VisAO Camera
VisAO::ShutterControlDioclient Class Reference
+ Inheritance diagram for VisAO::ShutterControlDioclient:

Public Member Functions

 ShutterControlDioclient (int argc, char **argv) throw (AOException)
 
 ShutterControlDioclient (std::string name, const std::string &conffile) throw (AOException)
 
virtual int Run ()
 The application main loop, to be re-implemented in derived classes.
 
virtual int start_ShutterControl ()
 
virtual int shutdown_ShutterControl ()
 
virtual int get_hw_state ()
 
std::string get_state_str ()
 
void dataLogger ()
 Log data at intervals.
 
std::string remote_command (std::string com, char *seqmsg=0)
 
std::string local_command (std::string com, char *seqmsg=0)
 
std::string script_command (std::string com, char *seqmsg=0)
 
std::string auto_command (std::string com, char *seqmsg)
 Processing for auto commands - to be overriden. More...
 
std::string common_command (std::string com, int calling_ctype)
 
virtual int update_statusboard ()
 Update the status board. More...
 
- Public Member Functions inherited from ShutterControl
 ShutterControl ()
 Default constructor.
 
 ShutterControl (double dt, int st)
 Constructor to set dead_time and sw_state.
 
int set_last_t (double lt)
 
int open_shutter (void *adata=0)
 
int close_shutter (void *adata=0)
 
virtual int set_state (int st)
 
virtual int get_state ()
 
virtual int get_sw_state ()
 
double get_curr_t ()
 
- Public Member Functions inherited from VisAO::VisAOApp_standalone
 VisAOApp_standalone () throw (AOException)
 Default constructor.
 
 VisAOApp_standalone (string name, int id, int logLevel=Logger::LOG_LEV_INFO) throw (AOException)
 Complicated constructor.
 
void set_conffile (std::string name) throw (AOException)
 
 VisAOApp_standalone (std::string name, const std::string &conffile) throw (AOException)
 Config file constructor.
 
void set_conffile (std::string name, const std::string &conffile) throw (AOException)
 For use if default constructed.
 
 VisAOApp_standalone (int argc, char **argv) throw (AOException)
 Command line constructor.
 
void usage ()
 
virtual std::string get_app_name ()
 Get the application name.
 
void log_msg (int LogLevel, std::string lmsg)
 Report an error. Also calls log_msg. Overloaded from VisAOApp_base. More...
 
virtual int Exec ()
 Installs the term and XXXX signal handlers, and calls Run(). More...
 
void signal_catcher ()
 Signal loop, normally won't need to be overridden. More...
 
virtual int start_signal_catcher (bool inherit_sched=true)
 Starts the signal catching loop. More...
 
virtual int install_sig_mainthread_catcher ()
 Install the SIG_MAINTHREAD signal catcher.
 
virtual int block_signal (int signum)
 Sets the signal mask to block signal signum.
 
virtual int block_sigio ()
 Sets the signal mask to block SIGIO and RTSIGIO.
 
virtual int kill_me ()
 Handle a timetodie condition upon exiting the signal catcher thread (e.g. tell main thread it is about to die) More...
 
- Public Member Functions inherited from VisAO::VisAOApp_base
 VisAOApp_base ()
 Default constructor.
 
virtual ~VisAOApp_base ()
 Virtual destructor.
 
int set_euid_called ()
 Changes the user id of the process to euid_called.
 
int set_euid_real ()
 Changes the user id fo the process to the real user id.
 
int set_RT_priority (int prio)
 Set the real-time priority of the current process. More...
 
int get_RT_priority ()
 Get the real-time priority of the current process.
 
int set_app_name (std::string an)
 Set the application name.
 
virtual int setup_baseApp (bool usethreads=false)
 Install fifo channels. More...
 
virtual int setup_baseApp (bool remfifo, bool locfifo, bool scrfifo, bool autfifo, bool usethreads=false)
 Create fifo names, then installs the fifo channels. More...
 
int setup_fifo_list (int nfifos)
 Allocate the fifo_list. More...
 
int connect_fifo_list ()
 Connect the fifo_list with exclusive locking. More...
 
int connect_fifo_list_nolock ()
 Connect the fifo_list without exclusive locking. More...
 
int setup_sigio ()
 Setup the SIGIO signal handling. More...
 
int setup_RTsigio ()
 Setup SIGIO signal handling using realtime signals. More...
 
int check_fifo_list_RTpending ()
 Check for pending reads for the fifo list while using the RT signals.
 
int write_fifo_channel (int ch, const char *com, int comlen, std::string *resp)
 Write data to a fifo_channel, and get a response if desired. More...
 
int write_fifo_channel (int ch, const char *com, int comlen, std::string *resp, char *sm)
 Write data to a fifo_channel, with a sequence message attached, and get a response if desired. More...
 
int get_fifo_channel_response (std::string *resp, int ch)
 Check, and wait if neccessary, for data on a fifo channel. More...
 
int set_wait_to (double to)
 Set the wait timeout for fifo channel responses. More...
 
double get_wait_to ()
 Get the wait timeout for fifo channel responses. More...
 
virtual int request_control (int cmode)
 Calls request_control(cmode, 0).
 
virtual int request_control (int cmode, bool override)
 Attempts to change the control type. More...
 
virtual std::string __remote_command (std::string com, char *seqmsg)
 Processing for remote commands. More...
 
virtual std::string remote_command (std::string com)
 Called by __remote_command after control state logic. More...
 
virtual std::string __local_command (std::string com, char *seqmsg)
 Processing for local commands. More...
 
virtual std::string local_command (std::string com)
 Called by __local_command after control state logic. More...
 
virtual std::string __script_command (std::string com, char *seqmsg)
 Processing for script commands - not normally overriden. More...
 
virtual std::string script_command (std::string com)
 Called by __script_command after control state logic. More...
 
virtual std::string post_auto_command (std::string com, char *seqmsg=0)
 Processing for auto commands - not normally overriden. More...
 
std::string control_mode_string ()
 Convenience function to return the control type string, e.g. "REMOTE".
 
std::string control_mode_response ()
 Convenience function to return the control type response string, e.g. "A\n".
 
virtual void error_report (int LogLevel, std::string emsg)
 Report an error. Also calls log_msg. More...
 
VisAO::profilerget_profile ()
 
int get_use_profiler ()
 
int start_profiler ()
 
void * get_statusboard_shmemptr ()
 Get the status board shared memory pointer. More...
 
int set_statusboard_shmemkey (key_t mkey)
 Set the status board shared memory key. Does nothing else. More...
 
key_t get_statusboard_shmemkey ()
 Get the status board shared memory key. More...
 
virtual void dataLogger (timeval tv)
 Log data at intervals.
 

Protected Member Functions

int initialize_ShutterControl () throw (AOException)
 
int getPowerStatus ()
 
std::string getDataFileName ()
 Generate a unique data file name, using the standard VisAO timestamp.
 
int init_shutter_open ()
 Send shutter open signal for initialization, but do not log or profile this. More...
 
virtual int do_shutter_open (void *adata)
 
virtual int do_shutter_close (void *adata)
 
int saveInit ()
 Save the initialization data to disk.
 
int launchDataLogger ()
 Launches the data logger thread. More...
 
- Protected Member Functions inherited from ShutterControl
int initialize_ShutterControl ()
 Sets the basic parameters to default values.
 
- Protected Member Functions inherited from VisAO::VisAOApp_base
int create_statusboard (size_t sz)
 Creates and attaches to the statusboard shared memory. More...
 
std::string getDataFileName ()
 
int checkDataFileOpen ()
 

Protected Attributes

int dio_ch_set
 The dioserver channel used for setting shutter state (open or shut)
 
int dio_ch_get
 The dioserver channel used for getting shutter state (open or shut)
 
std::string diofifo_path
 The base path of the dioserver fifos.
 
int DO_OPENSHUT
 
char * glob_seqmsg
 
int power_outlet
 Configuration variable, setting which power outlet to monitor.
 
intpowerOutlet
 The power strip outlet controlling shutter power.
 
power_status_boardpsb
 
sharedim_stack< char > sis
 The shared memory ring buffer for timestamp storage.
 
sharedim< char > * sim
 Pointer to a shared memory "image".
 
int shmem_key
 The key for the ring buffer shared memory.
 
int num_timestamps
 The number of shared "images" available in the ring buffer.
 
int initSaveInterval
 
uint64 cycleNo
 
pthread_t logger_th
 Thread which periodically logs data in the sharedim_stack data buffer.
 
double logger_pause
 Pause time of the logger thread, seconds.
 
double data_log_time_length
 Time duration of a shutter log file, seconds.
 
std::string save_path
 Path, relative to VISAO_ROOT, where to save data.
 
- Protected Attributes inherited from ShutterControl
double dead_time
 Time to wait between commanded changes in state.
 
int sw_state
 1 is open, -1 is shut, 0 is unknown
 
int hw_state
 1 is open, -1 is shut, 0 is unknown
 
bool ignore_hw_state
 For when hw_state is unavailable.
 
double curr_t
 the current time
 
double last_t
 the time of the last commanded change in state
 
timeval tp
 for use in getting system time
 
- Protected Attributes inherited from VisAO::VisAOApp_standalone
std::string init_file
 
Config_File * init_vars
 
pthread_t main_thread
 Identifier for the main thread.
 
pthread_t signal_thread
 Identifier for the separate signal handling thread.
 
pthread_mutex_t signal_mutex
 Mutex for the condition signaling.
 
pthread_cond_t signal_cond
 Condition for telling main thread that something changed.
 
double signalth_sleeptime
 
- Protected Attributes inherited from VisAO::VisAOApp_base
std::string app_name
 The name of the application.
 
double pause_time
 Time to pause during application main loop.
 
fifo_list fl
 The list of named-pipe fifos used for inter-process comms.
 
std::string com_path
 The control fifo path base name.
 
std::string com_path_remote
 The path for the remote control fifos.
 
std::string com_path_local
 The path for the local control fifos.
 
std::string com_path_script
 The path for the script control fifos.
 
std::string com_path_auto
 The path for the auto control fifos.
 
double wait_to
 The timeout for waiting on responses from FIFOs in seconds.
 
std::ostringstream logss
 Conveninence string stream for building log messages.
 
VisAO::profilerprofile
 
std::string profile_path
 
int use_profiler
 
void * statusboard_shmemptr
 The pointer to the shared memory block for the statusboard.
 
key_t statusboard_shmemkey
 The key used to lookup the shared memory.
 
int statusboard_shmemid
 The ID of the shared memory block.
 
std::ofstream dataof
 
bool dataFileOpen
 
double dataFileOpenTime
 
double data_log_time_length
 
std::string data_save_path
 
std::string data_file_prefix
 

Additional Inherited Members

- Public Types inherited from VisAO::VisAOApp_base
enum  control_modes {
  CMODE_NONE, CMODE_REMOTE, CMODE_LOCAL, CMODE_SCRIPT,
  CMODE_AUTO, CMODE_max
}
 The control modes.
 
- Static Public Member Functions inherited from VisAO::VisAOApp_standalone
static const std::string & ConfigFile ()
 
static const std::string & MyName ()
 
static const std::string & MyFullName ()
 
static int ID ()
 
static Config_File & ConfigDictionary ()
 
static int Verbosity ()
 
static string getConffile (string identity)
 Return configuration file path based on identity.
 
- Public Attributes inherited from VisAO::VisAOApp_base
pthread_mutex_t my_mutex
 Mutex used by the threaded versions of the standard command handlers.
 
- Static Protected Member Functions inherited from VisAO::VisAOApp_standalone
static void SetMyName (const std::string &name)
 
static void SetConfigFile (const std::string &conffile) throw (Config_File_Exception)
 
static void SetID (int id)
 
- Static Protected Attributes inherited from VisAO::VisAOApp_standalone
static Logger * _logger = NULL
 
- Static Protected Attributes inherited from VisAO::VisAOApp_base
static int control_mode = VisAOApp_base::CMODE_NONE
 The current control mode. More...
 
static int default_control_mode = -1
 The default control mode. More...
 

Detailed Description

Definition at line 33 of file ShutterControlDioclient.h.

Member Function Documentation

int VisAO::ShutterControlDioclient::init_shutter_open ( )
protected

The shutter will almost always be open (it fails open, etc.), this is just a check. so we don't want to count the cycle.

Definition at line 418 of file ShutterControlDioclient.cpp.

References VisAO::VisAOApp_base::write_fifo_channel().

int VisAO::ShutterControlDioclient::launchDataLogger ( )
protected

Sets to priority 0.

Return values
xis the return value of pthread_create

Definition at line 560 of file ShutterControlDioclient.cpp.

References VisAO::__launch_data_logger(), and logger_th.

std::string VisAO::ShutterControlDioclient::auto_command ( std::string  com,
char *  seqmsg 
)
virtual

The handler always calls auto_command, which after app specific processing should call post_auto_command. This is so app specific processing happens first in auto mode, for speed.

Parameters
comis the command string to be processed.
Returns
the application response.

Reimplemented from VisAO::VisAOApp_base.

Definition at line 817 of file ShutterControlDioclient.cpp.

References VisAO::VisAOApp_base::control_mode, and VisAO::VisAOApp_base::post_auto_command().

int VisAO::ShutterControlDioclient::update_statusboard ( )
virtual

Overridden versions should call this as VisAOApp_bas::update_statusboard so the basics are taken care of.

Return values
0on success
-1on failure

Reimplemented from VisAO::VisAOApp_base.

Definition at line 934 of file ShutterControlDioclient.cpp.

References VisAO::VisAOApp_base::control_mode, ShutterControl::ignore_hw_state, saveInit(), VisAO::VisAOApp_base::statusboard_shmemptr, and VisAO::VisAOApp_base::update_statusboard().


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