API
MagAOX::app::siglentSDG Class Reference

#include <siglentSDG.hpp>

Inheritance diagram for MagAOX::app::siglentSDG:
Inheritance graph
Collaboration diagram for MagAOX::app::siglentSDG:
Collaboration graph

Public Types

typedef logger::logManager< MagAOXApp< _useINDI >, logFileRawlogManagerT
 The log manager type. More...
 
typedef logger::logManager< siglentSDG, logFileRaw > logManagerT
 The log manager type. More...
 

Public Member Functions

 siglentSDG ()
 Default c'tor. More...
 
 ~siglentSDG () noexcept
 D'tor, declared and defined for noexcept. More...
 
virtual void setupConfig ()
 Setup the configuration system (called by MagAOXApp::setup()) More...
 
virtual void loadConfig ()
 load the configuration system results (called by MagAOXApp::setup()) More...
 
virtual int appStartup ()
 Startup functions. More...
 
virtual int appLogic ()
 Implementation of the FSM for the Siglent SDG. More...
 
virtual int onPowerOff ()
 Implementation of the on-power-off FSM logic. More...
 
virtual int whilePowerOff ()
 Implementation of the while-powered-off FSM. More...
 
virtual int appShutdown ()
 Do any needed shutdown tasks. Currently nothing in this app. More...
 
int writeRead (std::string &strRead, const std::string &command)
 Write a command to the device and get the response. Not mutex-ed. More...
 
int writeCommand (const std::string &commmand)
 Write a command to the device. More...
 
int queryMDWV (std::string &state, int channel)
 Send the MDWV? query and get the response state. More...
 
int querySWWV (std::string &state, int channel)
 Send the SWWV? query and get the response state. More...
 
int queryBTWV (std::string &state, int channel)
 Send the BTWV? query and get the response state. More...
 
int queryARWV (int &index, int channel)
 Send the ARWV? query and get the response index. More...
 
int queryBSWV (int channel)
 Send the BSWV? query for a channel. More...
 
int querySYNC (bool &sync, int channel)
 Send the SYNC? query for a channel. More...
 
int checkSetup ()
 Check the setup is correct and safe for PI TTM control. More...
 
int normalizeSetup ()
 Normalize the setup, called during connection if checkSetup shows a problem, or on power-up. More...
 
int queryOUTP (int channel)
 Send the OUTP? query for a channel. More...
 
int changeOutp (int channel, const std::string &newOutp)
 Change the output status (on/off) of one channel. More...
 
int changeOutp (int channel, const pcf::IndiProperty &ipRecv)
 Change the output status (on/off) of one channel in response to an INDI property. This locks the mutex. More...
 
int changeFreq (int channel, double newFreq)
 Send a change frequency command to the device. More...
 
int changeFreq (int channel, const pcf::IndiProperty &ipRecv)
 Send a change frequency command to the device in response to an INDI property. This locks the mutex. More...
 
int changeAmp (int channel, double newAmp)
 Send a change amplitude command to the device. More...
 
int changeAmp (int channel, const pcf::IndiProperty &ipRecv)
 Send a change amplitude command to the device in response to an INDI property. More...
 
int changeOfst (int channel, double newOfst)
 Send a change offset command to the device. More...
 
int changeOfst (int channel, const pcf::IndiProperty &ipRecv)
 Send a change offset command to the device in response to an INDI property. More...
 
int changePhse (int channel, double newPhse)
 Send a change phase command to the device. More...
 
int changePhse (int channel, const pcf::IndiProperty &ipRecv)
 Send a change phase command to the device in response to an INDI property. More...
 
int changeWdth (int channel, double newWdth)
 Send a width command to the device. More...
 
int changeWdth (int channel, const pcf::IndiProperty &ipRecv)
 Send a change phase command to the device in response to an INDI property. More...
 
int changeWvtp (int channel, const std::string &newWvtp)
 Send a change wavetype command to the device. More...
 
int changeWvtp (int channel, const pcf::IndiProperty &ipRecv)
 Send a change wavetype command to the device in response to an INDI property. More...
 
int changeSync (int channel, bool newSync)
 Send a change sync command to the device. More...
 
int changeSync (int channel, const pcf::IndiProperty &ipRecv)
 Send a change sync command to the device in response to an INDI property. More...
 
int shutdown ()
 Get the value of the shutdown flag. More...
 
virtual void setDefaults (int argc, char **argv)
 Set the paths for config files. More...
 
virtual void setupBasicConfig ()
 The basic MagAO-X configuration setup method. Should not normally be overridden. More...
 
virtual void loadBasicConfig ()
 The basic MagAO-X configuration processing method. Should not normally be overridden. More...
 
virtual void checkConfig ()
 Check for unused and unrecognized config options and settings. More...
 
virtual int execute ()
 The execute method implementing the standard main loop. Should not normally be overridden. More...
 
int telem (const typename telT::messageT &msg)
 Make a telemetry recording. More...
 
int telem ()
 Make a telemetry recording, for an empty record. More...
 
int setupConfig (appConfigurator &config)
 Setup an application configurator for the device section. More...
 
int loadConfig (appConfigurator &config)
 Load the device section from an application configurator. More...
 
int checkRecordTimes (const telT &tel, telTs... tels)
 Check the time of the last record for each telemetry type and make an entry if needed. More...
 
int checkRecordTimes (timespec &ts, const telT &tel, telTs... tels)
 Worker function to actually perform the record time checking logic. More...
 
int checkRecordTimes (timespec &ts)
 Empty function called at the end of the template list. More...
 
Telemeter Interface
int checkRecordTimes ()
 
int recordTelem (const telem_fxngen *)
 
int recordParams (bool force=false)
 
Threads
template<class thisPtr , class Function >
int threadStart (std::thread &thrd, bool &thrdInit, pid_t &tpid, pcf::IndiProperty &thProp, int thrdPrio, const std::string &cpuset, const std::string &thrdName, thisPtr *thrdThis, Function &&thrdStart)
 Start a thread, using this class's privileges to set priority, etc. More...
 
Member Accessors
std::string configName ()
 Get the config name. More...
 
std::string configDir ()
 Get the config directory. More...
 
std::string driverInName ()
 Get the INDI input FIFO file name. More...
 
std::string driverOutName ()
 Get the INDI output FIFO file name. More...
 
std::string driverCtrlName ()
 Get the INDI control FIFO file name. More...
 

Public Attributes

logManagerT m_tel
 
double m_maxInterval
 The maximum interval, in seconds, between telemetry records. Default is 10.0 seconds. More...
 

Protected Attributes

tty::telnetConn m_telnetConn
 The telnet connection manager. More...
 
std::string m_waveform
 
uint8_t m_C1outp {0}
 std::string m_clock; ///<INTernal or EXTernal More...
 
double m_C1frequency {0}
 The output frequency of channel 1. More...
 
double m_C1vpp {0}
 The peak-2-peak voltage of channel 1. More...
 
double m_C1vppDefault {0}
 default value for vpp of channel 1 More...
 
double m_C1ofst {0}
 The offset voltage of channel 1. More...
 
double m_C1phse {0}
 The phase of channel 1 (SINE only) More...
 
double m_C1wdth {0}
 The width of channel 1 (PULSE only) More...
 
std::string m_C1wvtp
 The wave type of channel 1. More...
 
uint8_t m_C2outp {0}
 The output status channel 2. More...
 
double m_C2frequency {0}
 The output frequency of channel 2. More...
 
double m_C2vpp {0}
 The peak-2-peak voltage of channel 2. More...
 
double m_C2vppDefault {0}
 default value for vpp of channel 2 More...
 
double m_C2ofst {0}
 The offset voltage of channel 2. More...
 
double m_C2phse {0}
 The phase of channel 2 (SINE only) More...
 
double m_C2wdth {0}
 The width of channel 2 (PULSE only) More...
 
std::string m_C2wvtp
 The wave type of channel 2. More...
 
double m_C1frequency_tgt {-1}
 
double m_C1vpp_tgt {-1}
 
double m_C2frequency_tgt {-1}
 
double m_C2vpp_tgt {-1}
 
bool m_C1sync {false}
 
bool m_C2sync {false}
 
std::string MagAOXPath
 The base path of the MagAO-X system. More...
 
std::string m_configName
 The name of the configuration file (minus .conf). More...
 
std::string m_configDir
 The path to configuration files for MagAOX. More...
 
std::string m_configBase
 The name of a base config class for this app (minus .conf). More...
 
std::string m_calibDir
 The path to calibration files for MagAOX. More...
 
std::string sysPath
 The path to the system directory, for PID file, etc. More...
 
std::string secretsPath
 Path to the secrets directory, where passwords, etc, are stored. More...
 
unsigned long m_loopPause { MAGAOX_default_loopPause }
 
int m_shutdown { 0 }
 Flag to signal it's time to shutdown. When not 0, the main loop exits. More...
 
Configurable Parameters
std::string m_deviceAddr
 The device address. More...
 
std::string m_devicePort
 The device port. More...
 
double m_bootDelay {10}
 Time in seconds it takes the device to boot. More...
 
int m_writeTimeOut {10000}
 The timeout for writing to the device [msec]. More...
 
int m_readTimeOut {10000}
 The timeout for reading from the device [msec]. More...
 
double m_C1setVoltage {5.0}
 the set position voltage of Ch. 1. More...
 
double m_C2setVoltage {5.0}
 the set position voltage of Ch. 2. More...
 
bool m_C1outpOn {false}
 
cpusets

The path to the cpusets mount is configured by the environment varialbe defined by MAGOX_env_cpuset in environment.hpp. This environment varialbe is normally named "CGROUPS1_CPUSET_MOUNTPOINT". If the environment variable is not set, the default defined by MAGAOX_cpusetPath in paths.hpp is used. This is normally "/opt/MagAOX/cpuset/"

std::string m_cpusetPath { MAGAOX_cpusetPath }
 

Private Member Functions

int clearFSMAlert ()
 Clear the FSM alert state. More...
 
siglentSDGderived ()
 Access the derived class. More...
 

Private Attributes

std::vector< double > m_maxAmp = {1.2801, 1.2801, 1.0201}
 
std::vector< double > m_maxFreq = {0.0, 2000, 3000}
 
bool m_poweredOn {false}
 
double m_powerOnCounter {0}
 Counts the number of loops since power-on, used to control logging of connect failures. More...
 

Static Private Attributes

constexpr static double cs_MaxOfst = 10.0
 
constexpr static double cs_MaxVolts = 10.0
 

Friends

class siglentSDG_test
 
class dev::telemeter< siglentSDG >
 

Signal Handling

libMagAOX/logger/types/software_log.hpp

static MagAOXAppm_self = nullptr
 
int setSigTermHandler ()
 Sets the handler for SIGTERM, SIGQUIT, and SIGINT. More...
 
void handlerSigTerm (int signum, siginfo_t *siginf, void *ucont)
 Handles SIGTERM, SIGQUIT, and SIGINT. Sets m_shutdown to 1 and logs the signal. More...
 
static void _handlerSigTerm (int signum, siginfo_t *siginf, void *ucont)
 The handler called when SIGTERM, SIGQUIT, or SIGINT is received. Just a wrapper for handlerSigTerm. More...
 

Privilege Management

uid_t m_euidReal
 The real user id of the proces (i.e. the lower privileged id of the user) More...
 
uid_t m_euidCalled
 
uid_t m_suid
 The save-set user id of the process. More...
 
int setEuidCalled ()
 Set the effective user ID to the called value, i.e. the highest possible. More...
 
int setEuidReal ()
 Set the effective user ID to the real value, i.e. the file owner. More...
 

Application State

stateCodes::stateCodeT m_state { stateCodes::UNINITIALIZED }
 
bool m_stateAlert { false }
 
bool m_gitAlert { false }
 
int m_stateLogged { 0 }
 
stateCodes::stateCodeT state ()
 Get the current state code. More...
 
void state (const stateCodes::stateCodeT &s, bool stateAlert=false)
 Set the current state code. More...
 
int stateLogged ()
 Updates and returns the value of m_stateLogged. Will be 0 on first call after a state change, >0 afterwards. More...
 

INDI

pcf::IndiProperty m_indiP_status
 
pcf::IndiProperty m_indiP_C1outp
 
pcf::IndiProperty m_indiP_C1wvtp
 
pcf::IndiProperty m_indiP_C1freq
 
pcf::IndiProperty m_indiP_C1peri
 
pcf::IndiProperty m_indiP_C1amp
 
pcf::IndiProperty m_indiP_C1ampvrms
 
pcf::IndiProperty m_indiP_C1ofst
 
pcf::IndiProperty m_indiP_C1hlev
 
pcf::IndiProperty m_indiP_C1llev
 
pcf::IndiProperty m_indiP_C1phse
 
pcf::IndiProperty m_indiP_C1wdth
 
pcf::IndiProperty m_indiP_C1sync
 
pcf::IndiProperty m_indiP_C2outp
 
pcf::IndiProperty m_indiP_C2wvtp
 
pcf::IndiProperty m_indiP_C2freq
 
pcf::IndiProperty m_indiP_C2peri
 
pcf::IndiProperty m_indiP_C2amp
 
pcf::IndiProperty m_indiP_C2ampvrms
 
pcf::IndiProperty m_indiP_C2ofst
 
pcf::IndiProperty m_indiP_C2hlev
 
pcf::IndiProperty m_indiP_C2llev
 
pcf::IndiProperty m_indiP_C2phse
 
pcf::IndiProperty m_indiP_C2wdth
 
pcf::IndiProperty m_indiP_C2sync
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1outp)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1freq)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1amp)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1ofst)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1phse)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1wdth)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1wvtp)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C1sync)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2outp)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2freq)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2amp)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2ofst)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2phse)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2wdth)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2wvtp)
 
 INDI_NEWCALLBACK_DECL (siglentSDG, m_indiP_C2sync)
 

PID Locking

Each MagAOXApp has a PID lock file in the system directory. The app will not startup if it detects that the PID is already locked, preventing duplicates. This is based on the configured name, not the invoked name (argv[0]).

std::string pidFileName
 The name of the PID file. More...
 
pid_t m_pid { 0 }
 This process's PID. More...
 
int lockPID ()
 
int unlockPID ()
 Remove the PID file. More...
 

INDI Interface

For reference: "Get" and "New" refer to properties we own. "Set" refers to properties owned by others. So we respond to GetProperties by listing our own properties, and NewProperty is a request to change a property we own. Whereas SetProperty is a notification that someone else has changed a property.

std::unordered_map< std::string, indiCallBackm_indiNewCallBacks
 Map to hold the NewProperty indiCallBacks for this App, with fast lookup by property name. More...
 
std::unordered_map< std::string, indiCallBackm_indiSetCallBacks
 Map to hold the SetProperty indiCallBacks for this App, with fast lookup by property name. More...
 
bool m_allDefsReceived { false }
 Flag indicating that all registered Set properties have been updated since last Get. More...
 
std::string m_driverInName
 Full path name of the INDI driver input FIFO. More...
 
std::string m_driverOutName
 Full path name of the INDI driver output FIFO. More...
 
std::string m_driverCtrlName
 Full path name of the INDI driver control FIFO. More...
 
pcf::IndiProperty m_indiP_state
 indi Property to report the application state. More...
 
pcf::IndiProperty m_indiP_clearFSMAlert
 indi Property to clear an FSM alert. More...
 
int createStandardIndiText (pcf::IndiProperty &prop, const std::string &propName, const std::string &label="", const std::string &group="")
 Create a standard R/W INDI Text property with target and current elements. More...
 
int createROIndiText (pcf::IndiProperty &prop, const std::string &propName, const std::string &elName, const std::string &propLabel="", const std::string &propGroup="", const std::string &elLabel="")
 Create a standard ReadOnly INDI Text property, with at least one element. More...
 
template<typename T >
int createStandardIndiNumber (pcf::IndiProperty &prop, const std::string &name, const T &min, const T &max, const T &step, const std::string &format, const std::string &label="", const std::string &group="")
 Create a standard R/W INDI Number property with target and current elements. More...
 
int createROIndiNumber (pcf::IndiProperty &prop, const std::string &propName, const std::string &propLabel="", const std::string &propGroup="")
 Create a ReadOnly INDI Number property. More...
 
int createStandardIndiToggleSw (pcf::IndiProperty &prop, const std::string &name, const std::string &label="", const std::string &group="")
 Create a standard R/W INDI switch with a single toggle element. More...
 
int createStandardIndiRequestSw (pcf::IndiProperty &prop, const std::string &name, const std::string &label="", const std::string &group="")
 Create a standard R/W INDI switch with a single request element. More...
 
int createStandardIndiSelectionSw (pcf::IndiProperty &prop, const std::string &name, const std::vector< std::string > &elements, const std::vector< std::string > &elementLabels, const std::string &label="", const std::string &group="")
 Create a standard R/W INDI selection (one of many) switch with vector of elements and element labels. More...
 
int createStandardIndiSelectionSw (pcf::IndiProperty &prop, const std::string &name, const std::vector< std::string > &elements, const std::string &label="", const std::string &group="")
 
int registerIndiPropertyReadOnly (pcf::IndiProperty &prop)
 Register an INDI property which is read only. More...
 
int registerIndiPropertyReadOnly (pcf::IndiProperty &prop, const std::string &propName, const pcf::IndiProperty::Type &propType, const pcf::IndiProperty::PropertyPermType &propPerm, const pcf::IndiProperty::PropertyStateType &propState)
 Register an INDI property which is read only. More...
 
int registerIndiPropertyNew (pcf::IndiProperty &prop, int(*)(void *, const pcf::IndiProperty &))
 Register an INDI property which is exposed for others to request a New Property for. More...
 
int registerIndiPropertyNew (pcf::IndiProperty &prop, const std::string &propName, const pcf::IndiProperty::Type &propType, const pcf::IndiProperty::PropertyPermType &propPerm, const pcf::IndiProperty::PropertyStateType &propState, int(*)(void *, const pcf::IndiProperty &))
 Register an INDI property which is exposed for others to request a New Property for. More...
 
int registerIndiPropertyNew (pcf::IndiProperty &prop, const std::string &propName, const pcf::IndiProperty::Type &propType, const pcf::IndiProperty::PropertyPermType &propPerm, const pcf::IndiProperty::PropertyStateType &propState, const pcf::IndiProperty::SwitchRuleType &propRule, int(*)(void *, const pcf::IndiProperty &))
 Register an INDI property which is exposed for others to request a New Property for, with a switch rule. More...
 
int registerIndiPropertySet (pcf::IndiProperty &prop, const std::string &devName, const std::string &propName, int(*)(void *, const pcf::IndiProperty &))
 Register an INDI property which is monitored for updates from others. More...
 
void sendGetPropertySetList (bool all=false)
 
void handleDefProperty (const pcf::IndiProperty &ipRecv)
 Handler for the DEF INDI properties notification. More...
 
void handleGetProperties (const pcf::IndiProperty &ipRecv)
 Handler for the get INDI properties request. More...
 
void handleNewProperty (const pcf::IndiProperty &ipRecv)
 Handler for the new INDI property request. More...
 
void handleSetProperty (const pcf::IndiProperty &ipRecv)
 Handler for the set INDI property request. More...
 
typedef std::pair< std::string, indiCallBackcallBackValueType
 Value type of the indiCallBack map. More...
 
typedef std::unordered_map< std::string, indiCallBack >::iterator callBackIterator
 Iterator type of the indiCallBack map. More...
 
typedef std::pair< callBackIterator, bool > callBackInsertResult
 Return type of insert on the indiCallBack map. More...
 
constexpr static bool m_useINDI = _useINDI
 Flag controlling whether INDI is used. If false, then no INDI code executes. More...
 
indiDriver< MagAOXApp > * m_indiDriver { nullptr }
 The INDI driver wrapper. Constructed and initialized by execute, which starts and stops communications. More...
 
std::mutex m_indiMutex
 Mutex for locking INDI communications. More...
 
static int st_newCallBack_clearFSMAlert (void *app, const pcf::IndiProperty &ipRecv)
 The static callback function to be registered for requesting to clear the FSM alert. More...
 
int createINDIFIFOS ()
 Create the INDI FIFOs. More...
 
int startINDI ()
 Start INDI Communications. More...
 
template<typename T >
void updateIfChanged (pcf::IndiProperty &p, const std::string &el, const T &newVal, pcf::IndiProperty::PropertyStateType ipState=pcf::IndiProperty::Ok)
 Update an INDI property element value if it has changed. More...
 
void updateIfChanged (pcf::IndiProperty &p, const std::string &el, const char *newVal, pcf::IndiProperty::PropertyStateType ipState=pcf::IndiProperty::Ok)
 Update an INDI property element value if it has changed. More...
 
template<typename T >
void updateIfChanged (pcf::IndiProperty &p, const std::string &el, const std::vector< T > &newVals, pcf::IndiProperty::PropertyStateType ipState=pcf::IndiProperty::Ok)
 Update an INDI property if values have changed. More...
 
template<typename T >
void updateIfChanged (pcf::IndiProperty &p, const std::vector< std::string > &els, const std::vector< T > &newVals, pcf::IndiProperty::PropertyStateType newState=pcf::IndiProperty::Ok)
 Update an INDI property if values have changed. More...
 
void updateSwitchIfChanged (pcf::IndiProperty &p, const std::string &el, const pcf::IndiElement::SwitchStateType &newVal, pcf::IndiProperty::PropertyStateType ipState=pcf::IndiProperty::Ok)
 Update an INDI switch element value if it has changed. More...
 
template<typename T >
int indiTargetUpdate (pcf::IndiProperty &localProperty, T &localTarget, const pcf::IndiProperty &remoteProperty, bool setBusy=true)
 Get the target element value from an new property. More...
 
template<typename T >
int sendNewProperty (const pcf::IndiProperty &ipSend, const std::string &el, const T &newVal)
 Send a newProperty command to another device (using the INDI Client interface) More...
 
int sendNewProperty (const pcf::IndiProperty &ipSend)
 Send a newProperty command to another device (using the INDI Client interface) More...
 
int sendNewStandardIndiToggle (const std::string &device, const std::string &property, bool onoff)
 Send a new property commmand for a standard toggle switch. More...
 
int newCallBack_clearFSMAlert (const pcf::IndiProperty &ipRecv)
 The callback called by the static version, to actually process the FSM Alert Clear request. More...
 

Power Management

For devices which have remote power management (e.g. from one of the PDUs) we implement a standard power state monitoring and management component for the FSM. This needs to be enabled in the derived app constructor. To stay enabled, m_powerDevice and m_powerChannel must be not empty strings after the configuration. These could be set in the derived app defaults.

If power management is enabled, then while power is off, appLogic will not be called. Instead a parrallel set of virtual functions is called, onPowerOff (to allow apps to perform cleanup) and whilePowerOff (to allow apps to keep variables updated, etc). Note that these could merely call appLogic if desired.

bool m_powerMgtEnabled { false }
 
std::string m_powerDevice
 The INDI device name of the power controller. More...
 
std::string m_powerChannel
 The INDI property name of the channel controlling this device's power. More...
 
std::string m_powerElement { "state" }
 The INDI element name to monitor for this device's power state. More...
 
std::string m_powerTargetElement { "target" }
 The INDI element name to monitor for this device's power state. More...
 
unsigned long m_powerOnWait { 0 }
 Time in sec to wait for device to boot after power on. More...
 
int m_powerState { -1 }
 Current power state, 1=On, 0=Off, -1=Unk. More...
 
int m_powerTargetState { -1 }
 Current target power state, 1=On, 0=Off, -1=Unk. More...
 
pcf::IndiProperty m_indiP_powerChannel
 INDI property used to communicate power state. More...
 
int powerState ()
 Returns the current power state. More...
 
int powerStateTarget ()
 Returns the target power state. More...
 
 INDI_SETCALLBACK_DECL (MagAOXApp, m_indiP_powerChannel)
 
bool powerOnWaitElapsed ()
 This method tests whether the power on wait time has elapsed. More...
 

Logging

void logMessage (bufferPtrT &b)
 Handle a log message from the logging system. More...
 
static logManagerT m_log
 
template<typename logT , int retval = 0>
static int log (const typename logT::messageT &msg, logPrioT level=logPrio::LOG_DEFAULT)
 Make a log entry. More...
 
template<typename logT , int retval = 0>
static int log (logPrioT level=logPrio::LOG_DEFAULT)
 Make a log entry. More...
 
static void configLog (const std::string &name, const int &code, const std::string &value, const std::string &source)
 Callback for config system logging. More...
 

Detailed Description

MagAO-X application to control a Siglent SDG series function generator

Todo:

need to recognize signals in tty polls and not return errors, etc.

need to implement an onDisconnect() to update values to unknown indicators.

need a frequency-dependent max amp facility.

convert to ioDevice

need telnet device, with optional username/password.

Definition at line 26 of file siglentSDG.hpp.

Member Typedef Documentation

◆ callBackInsertResult

template<bool _useINDI = true>
typedef std::pair<callBackIterator, bool> MagAOX::app::MagAOXApp< _useINDI >::callBackInsertResult
inherited

Return type of insert on the indiCallBack map.

Definition at line 567 of file MagAOXApp.hpp.

◆ callBackIterator

template<bool _useINDI = true>
typedef std::unordered_map<std::string, indiCallBack>::iterator MagAOX::app::MagAOXApp< _useINDI >::callBackIterator
inherited

Iterator type of the indiCallBack map.

Definition at line 564 of file MagAOXApp.hpp.

◆ callBackValueType

template<bool _useINDI = true>
typedef std::pair<std::string, indiCallBack> MagAOX::app::MagAOXApp< _useINDI >::callBackValueType
inherited

Value type of the indiCallBack map.

Definition at line 561 of file MagAOXApp.hpp.

◆ logManagerT [1/2]

The log manager type.

Definition at line 71 of file telemeter.hpp.

◆ logManagerT [2/2]

template<bool _useINDI = true>
typedef logger::logManager<MagAOXApp<_useINDI>, logFileRaw> MagAOX::app::MagAOXApp< _useINDI >::logManagerT
inherited

The log manager type.

Definition at line 78 of file MagAOXApp.hpp.

Constructor & Destructor Documentation

◆ siglentSDG()

MagAOX::app::siglentSDG::siglentSDG ( )
inline

Default c'tor.

Definition at line 444 of file siglentSDG.hpp.

◆ ~siglentSDG()

MagAOX::app::siglentSDG::~siglentSDG ( )
inlinenoexcept

D'tor, declared and defined for noexcept.

Definition at line 108 of file siglentSDG.hpp.

Member Function Documentation

◆ _handlerSigTerm()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::_handlerSigTerm ( int  signum,
siginfo_t *  siginf,
void *  ucont 
)
staticprivateinherited

The handler called when SIGTERM, SIGQUIT, or SIGINT is received. Just a wrapper for handlerSigTerm.

Parameters
[in]signumspecifies the signal.
[in]siginfignored by MagAOXApp
[in]ucontignored by MagAOXApp

Definition at line 1921 of file MagAOXApp.hpp.

◆ appLogic()

int MagAOX::app::siglentSDG::appLogic ( )
inlinevirtual

Implementation of the FSM for the Siglent SDG.

Todo:
the connection process in siglentSDG is a total hack. Figure out why this is needed to clear the channel, especially on a post-poweroff/on reconnect.

Implements MagAOX::app::MagAOXApp< _useINDI >.

Definition at line 621 of file siglentSDG.hpp.

◆ appShutdown()

int MagAOX::app::siglentSDG::appShutdown ( )
inlinevirtual

Do any needed shutdown tasks. Currently nothing in this app.

Implements MagAOX::app::MagAOXApp< _useINDI >.

Definition at line 996 of file siglentSDG.hpp.

◆ appStartup()

int MagAOX::app::siglentSDG::appStartup ( )
inlinevirtual

Startup functions.

Setsup the INDI vars.

Implements MagAOX::app::MagAOXApp< _useINDI >.

Definition at line 489 of file siglentSDG.hpp.

◆ changeAmp() [1/2]

int MagAOX::app::siglentSDG::changeAmp ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Send a change amplitude command to the device in response to an INDI property.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested new amplitude [V p2p]

Definition at line 1974 of file siglentSDG.hpp.

◆ changeAmp() [2/2]

int MagAOX::app::siglentSDG::changeAmp ( int  channel,
double  newAmp 
)
inline

Send a change amplitude command to the device.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]newAmpThe requested new amplitude [V p2p]

Definition at line 1890 of file siglentSDG.hpp.

Referenced by changeAmp(), and normalizeSetup().

◆ changeFreq() [1/2]

int MagAOX::app::siglentSDG::changeFreq ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Send a change frequency command to the device in response to an INDI property. This locks the mutex.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested new frequency [Hz]

Definition at line 1857 of file siglentSDG.hpp.

◆ changeFreq() [2/2]

int MagAOX::app::siglentSDG::changeFreq ( int  channel,
double  newFreq 
)
inline

Send a change frequency command to the device.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]newFreqThe requested new frequency [Hz]

Definition at line 1770 of file siglentSDG.hpp.

Referenced by changeFreq(), and normalizeSetup().

◆ changeOfst() [1/2]

int MagAOX::app::siglentSDG::changeOfst ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Send a change offset command to the device in response to an INDI property.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested new offset [V p2p]

Definition at line 2058 of file siglentSDG.hpp.

◆ changeOfst() [2/2]

int MagAOX::app::siglentSDG::changeOfst ( int  channel,
double  newOfst 
)
inline

Send a change offset command to the device.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]newOfstThe requested new offset [V p2p]

Definition at line 2008 of file siglentSDG.hpp.

Referenced by changeOfst(), and normalizeSetup().

◆ changeOutp() [1/2]

int MagAOX::app::siglentSDG::changeOutp ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Change the output status (on/off) of one channel in response to an INDI property. This locks the mutex.

Returns
0 on success
-1 on error.
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested output state [On/Off]

Definition at line 1736 of file siglentSDG.hpp.

◆ changeOutp() [2/2]

int MagAOX::app::siglentSDG::changeOutp ( int  channel,
const std::string &  newOutp 
)
inline

Change the output status (on/off) of one channel.

Returns
0 on success
-1 on error.
Parameters
[in]channelthe channel to send the command to.
[in]newOutpThe requested output state [On/Off]

Definition at line 1693 of file siglentSDG.hpp.

Referenced by changeOutp(), and normalizeSetup().

◆ changePhse() [1/2]

int MagAOX::app::siglentSDG::changePhse ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Send a change phase command to the device in response to an INDI property.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested new phase [deg]

Definition at line 2120 of file siglentSDG.hpp.

◆ changePhse() [2/2]

int MagAOX::app::siglentSDG::changePhse ( int  channel,
double  newPhse 
)
inline

Send a change phase command to the device.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]newPhseThe requested new phase [deg]

Definition at line 2092 of file siglentSDG.hpp.

Referenced by changePhse(), and normalizeSetup().

◆ changeSync() [1/2]

int MagAOX::app::siglentSDG::changeSync ( int  channel,
bool  newSync 
)
inline

Send a change sync command to the device.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]newSyncThe requested new sync state

Definition at line 2274 of file siglentSDG.hpp.

Referenced by changeOutp(), and changeSync().

◆ changeSync() [2/2]

int MagAOX::app::siglentSDG::changeSync ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Send a change sync command to the device in response to an INDI property.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested new sync state

Definition at line 2303 of file siglentSDG.hpp.

◆ changeWdth() [1/2]

int MagAOX::app::siglentSDG::changeWdth ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Send a change phase command to the device in response to an INDI property.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested new width [s]

Definition at line 2182 of file siglentSDG.hpp.

◆ changeWdth() [2/2]

int MagAOX::app::siglentSDG::changeWdth ( int  channel,
double  newWdth 
)
inline

Send a width command to the device.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]newWdthThe requested new width [s]

Definition at line 2154 of file siglentSDG.hpp.

Referenced by changeFreq(), changeWdth(), and normalizeSetup().

◆ changeWvtp() [1/2]

int MagAOX::app::siglentSDG::changeWvtp ( int  channel,
const pcf::IndiProperty &  ipRecv 
)
inline

Send a change wavetype command to the device in response to an INDI property.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]ipRecvINDI property containing the requested new wavetype

Definition at line 2240 of file siglentSDG.hpp.

◆ changeWvtp() [2/2]

int MagAOX::app::siglentSDG::changeWvtp ( int  channel,
const std::string &  newWvtp 
)
inline

Send a change wavetype command to the device.

Returns
0 on success
-1 on error
Parameters
[in]channelthe channel to send the command to.
[in]newWvtpThe requested new wavetype

Definition at line 2217 of file siglentSDG.hpp.

Referenced by changeWvtp(), and normalizeSetup().

◆ checkConfig()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::checkConfig
virtualinherited

Check for unused and unrecognized config options and settings.

Logs the unused targets as warnings. Unrecognized and unused options are logged as critical, and m_shutdown is set. Any command line argument (not an option) will also be critical and cause shutdown.

Definition at line 1441 of file MagAOXApp.hpp.

◆ checkRecordTimes() [1/4]

int MagAOX::app::siglentSDG::checkRecordTimes ( )
inline

Definition at line 2457 of file siglentSDG.hpp.

◆ checkRecordTimes() [2/4]

int MagAOX::app::dev::telemeter< siglentSDG >::checkRecordTimes ( const telT &  tel,
telTs...  tels 
)
inherited

Check the time of the last record for each telemetry type and make an entry if needed.

This must be called from derivedT::checkRecordTimes(), with one template parameter for ach telemetry log type being recorded.

Returns
0 on succcess
-1 on error
Parameters
[in]tel[unused] object of the telemetry type to record
[in]tels[unused] objects of the additional telemetry types to record

Definition at line 148 of file telemeter.hpp.

◆ checkRecordTimes() [3/4]

int MagAOX::app::dev::telemeter< siglentSDG >::checkRecordTimes ( timespec &  ts)
inherited

Empty function called at the end of the template list.

Returns
0 on succcess
-1 on error
Parameters
[in]ts[unused] the timestamp that records are compared to

Definition at line 169 of file telemeter.hpp.

◆ checkRecordTimes() [4/4]

int MagAOX::app::dev::telemeter< siglentSDG >::checkRecordTimes ( timespec &  ts,
const telT &  tel,
telTs...  tels 
)
inherited

Worker function to actually perform the record time checking logic.

Recursively calls itself until the variadic template list is exhausted.

Returns
0 on succcess
-1 on error
Parameters
[in]ts[unused] the timestamp that records are compared to
[in]tel[unused] objects of the telemetry type to record
[in]tels[unused] objects of the additional telemetry types to record

Definition at line 159 of file telemeter.hpp.

◆ checkSetup()

int MagAOX::app::siglentSDG::checkSetup ( )
inline

Check the setup is correct and safe for PI TTM control.

Returns
0 if the fxn gen is setup for safe operation
1 if a non-normal setup is detected.
-1 on an error, e.g. comms or parsing.

Definition at line 1463 of file siglentSDG.hpp.

Referenced by appLogic().

◆ clearFSMAlert()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::clearFSMAlert
privateinherited

Clear the FSM alert state.

This can only be done from within this class, and this should only be possible via user action via INDI.

Definition at line 2376 of file MagAOXApp.hpp.

◆ configDir()

template<bool _useINDI>
std::string MagAOX::app::MagAOXApp< _useINDI >::configDir
inherited

Get the config directory.

Returns
the current value of m_configDir

Definition at line 3483 of file MagAOXApp.hpp.

◆ configLog()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::configLog ( const std::string &  name,
const int &  code,
const std::string &  value,
const std::string &  source 
)
staticprotectedinherited

Callback for config system logging.

Called by appConfigurator each time a value is set using the config() operator. You never need to call this directly.

Parameters
[in]nameThe name of the config value
[in]codenumeric code specifying the type
[in]valuethe value read by the config system
[in]sourcethe source of the value.

Definition at line 1863 of file MagAOXApp.hpp.

◆ configName()

template<bool _useINDI>
std::string MagAOX::app::MagAOXApp< _useINDI >::configName
inherited

Get the config name.

Returns
the current value of m_configName

Definition at line 3477 of file MagAOXApp.hpp.

Referenced by MagAOXApp_tests::MagAOXApp_test::configName(), MagAOX::app::andorCtrl::loadConfig(), and MagAOX::app::andorCtrl::writeConfig().

◆ createINDIFIFOS()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createINDIFIFOS
protectedinherited

Create the INDI FIFOs.

Changes permissions to max available and creates the FIFOs at the configured path.

Todo:
make driver FIFO path full configurable.

Definition at line 2828 of file MagAOXApp.hpp.

◆ createROIndiNumber()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createROIndiNumber ( pcf::IndiProperty &  prop,
const std::string &  propName,
const std::string &  propLabel = "",
const std::string &  propGroup = "" 
)
inherited

Create a ReadOnly INDI Number property.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]propNamethe name of the property
[in]propLabel[optional] the GUI label suggestion for this property
[in]propGroup[optional] the group for this property

Definition at line 2517 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picamCtrl::appStartup(), and MagAOX::app::zaberCtrl::appStartup().

◆ createROIndiText()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createROIndiText ( pcf::IndiProperty &  prop,
const std::string &  propName,
const std::string &  elName,
const std::string &  propLabel = "",
const std::string &  propGroup = "",
const std::string &  elLabel = "" 
)
inherited

Create a standard ReadOnly INDI Text property, with at least one element.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]propNamethe name of the property
[in]elNamethe name of the element
[in]propLabel[optional] the GUI label suggestion for this property
[in]propGroup[optional] the group for this property
[in]elLabel[optional] the GUI label suggestion for the element

Definition at line 2434 of file MagAOXApp.hpp.

◆ createStandardIndiNumber()

template<bool _useINDI>
template<typename T >
int MagAOX::app::MagAOXApp< _useINDI >::createStandardIndiNumber ( pcf::IndiProperty &  prop,
const std::string &  name,
const T &  min,
const T &  max,
const T &  step,
const std::string &  format,
const std::string &  label = "",
const std::string &  group = "" 
)
inherited

Create a standard R/W INDI Number property with target and current elements.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]namethe name of the property
[in]minthe minimum value for the elements, applied to both target and current
[in]maxthe minimum value for the elements, applied to both target and current
[in]stepthe step size for the elements, applied to both target and current
[in]formatthe _ value for the elements, applied to both target and current. Set to "" to use the MagAO-X standard for type.
[in]label[optional] the GUI label suggestion for this property
[in]group[optional] the group for this property

Definition at line 2470 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picoMotorCtrl::appStartup().

◆ createStandardIndiRequestSw()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createStandardIndiRequestSw ( pcf::IndiProperty &  prop,
const std::string &  name,
const std::string &  label = "",
const std::string &  group = "" 
)
inherited

Create a standard R/W INDI switch with a single request element.

This switch is intended to function like a momentary switch.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]namethe name of the property
[in]label[optional] the GUI label suggestion for this property
[in]group[optional] the group for this property

Definition at line 2573 of file MagAOXApp.hpp.

Referenced by MagAOX::app::ocam2KCtrl::appStartup().

◆ createStandardIndiSelectionSw() [1/2]

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createStandardIndiSelectionSw ( pcf::IndiProperty &  prop,
const std::string &  name,
const std::vector< std::string > &  elements,
const std::string &  label = "",
const std::string &  group = "" 
)
inherited

Create a standard R/W INDI selection (one of many) switch with vector of elements using the element strings as their own labels This switch is intended to function like drop down menu.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]namethe name of the property,
[in]elementsthe element names to give to the switches
[in]label[optional] the GUI label suggestion for this property
[in]group[optional] the group for this property

Definition at line 2645 of file MagAOXApp.hpp.

◆ createStandardIndiSelectionSw() [2/2]

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createStandardIndiSelectionSw ( pcf::IndiProperty &  prop,
const std::string &  name,
const std::vector< std::string > &  elements,
const std::vector< std::string > &  elementLabels,
const std::string &  label = "",
const std::string &  group = "" 
)
inherited

Create a standard R/W INDI selection (one of many) switch with vector of elements and element labels.

This switch is intended to function like drop down menu.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]namethe name of the property,
[in]elementsthe element names to give to the switches
[in]elementLabelsthe element labels to give to the switches
[in]label[optional] the GUI label suggestion for this property
[in]group[optional] the group for this property

Definition at line 2603 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picoMotorCtrl::appStartup().

◆ createStandardIndiText()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createStandardIndiText ( pcf::IndiProperty &  prop,
const std::string &  propName,
const std::string &  label = "",
const std::string &  group = "" 
)
inherited

Create a standard R/W INDI Text property with target and current elements.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]propNamethe name of the property
[in]label[optional] the GUI label suggestion for this property
[in]group[optional] the group for this property

Definition at line 2406 of file MagAOXApp.hpp.

◆ createStandardIndiToggleSw()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::createStandardIndiToggleSw ( pcf::IndiProperty &  prop,
const std::string &  name,
const std::string &  label = "",
const std::string &  group = "" 
)
inherited

Create a standard R/W INDI switch with a single toggle element.

This switch is intended to function like an on/off toggle switch.

Returns
0 on success
-1 on error
Parameters
[out]propthe property to create and setup
[in]namethe name of the property
[in]label[optional] the GUI label suggestion for this property
[in]group[optional] the group for this property

Definition at line 2543 of file MagAOXApp.hpp.

Referenced by appStartup(), MagAOX::app::streamWriter::appStartup(), and MagAOX::app::sysMonitor::appStartup().

◆ derived()

siglentSDG & MagAOX::app::dev::telemeter< siglentSDG >::derived ( )
inlineprivateinherited

Access the derived class.

Definition at line 173 of file telemeter.hpp.

◆ driverCtrlName()

template<bool _useINDI>
std::string MagAOX::app::MagAOXApp< _useINDI >::driverCtrlName
inherited

Get the INDI control FIFO file name.

Returns
the current value of m_driverCtrlName

Definition at line 3501 of file MagAOXApp.hpp.

◆ driverInName()

template<bool _useINDI>
std::string MagAOX::app::MagAOXApp< _useINDI >::driverInName
inherited

Get the INDI input FIFO file name.

Returns
the current value of m_driverInName

Definition at line 3489 of file MagAOXApp.hpp.

◆ driverOutName()

template<bool _useINDI>
std::string MagAOX::app::MagAOXApp< _useINDI >::driverOutName
inherited

Get the INDI output FIFO file name.

Returns
the current value of m_driverOutName

Definition at line 3495 of file MagAOXApp.hpp.

◆ execute()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::execute ( void  )
virtualinherited

The execute method implementing the standard main loop. Should not normally be overridden.

Performs final startup steps. That is:

Errors in the above steps will cause a process exit.

Then commences the main event loop. Conditions on entry to the main loop:

  • PID locked
  • Log thread running
  • Signal handling installed
  • appStartup successful
  • INDI communications started successfully (if being used)
  • power state known (if being managed)

In the event loop, the power state is checked (if being managed). If power is off, then onPowerOff is called. If power is on, or power is not managed, appLogic is called. These methods are implemented in derived classes, and are called every m_loopPause interval.

If an error is returned by either onPowerOff or appLogic, or a signal is handled, then the shutdown is managed. This includes shutting down INDI, calling appShutdown, and unlocking the PID. The log thread will shutdown.

Todo:
Need a heartbeat update here.

Definition at line 1508 of file MagAOXApp.hpp.

◆ handleDefProperty()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::handleDefProperty ( const pcf::IndiProperty &  ipRecv)
inherited

Handler for the DEF INDI properties notification.

Uses the properties registered in m_indiSetCallBacks to process the notification. This is called by m_indiDriver's indiDriver::handleDefProperties.

Parameters
[in]ipRecvThe property being sent.

Definition at line 2989 of file MagAOXApp.hpp.

◆ handleGetProperties()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::handleGetProperties ( const pcf::IndiProperty &  ipRecv)
inherited

Handler for the get INDI properties request.

Uses the properties registered in m_indiCallBacks to respond to the request. This is called by m_indiDriver's indiDriver::handleGetProperties.

Parameters
[in]ipRecvThe property being requested.

Definition at line 2995 of file MagAOXApp.hpp.

◆ handleNewProperty()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::handleNewProperty ( const pcf::IndiProperty &  ipRecv)
inherited

Handler for the new INDI property request.

Uses the properties registered in m_indiCallBacks to respond to the request, looking up the callback for this property and calling it.

This is called by m_indiDriver's indiDriver::handleGetProperties.

Todo:
handle errors, are they FATAL?
Parameters
[in]ipRecvThe property being changed.

Definition at line 3064 of file MagAOXApp.hpp.

Referenced by MagAOXApp_tests::SCENARIO().

◆ handlerSigTerm()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::handlerSigTerm ( int  signum,
siginfo_t *  siginf,
void *  ucont 
)
privateinherited

Handles SIGTERM, SIGQUIT, and SIGINT. Sets m_shutdown to 1 and logs the signal.

Parameters
[in]signumspecifies the signal.
[in]siginfignored by MagAOXApp
[in]ucontignored by MagAOXApp

Definition at line 1927 of file MagAOXApp.hpp.

Referenced by MagAOX::app::MagAOXApp< _useINDI >::_handlerSigTerm().

◆ handleSetProperty()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::handleSetProperty ( const pcf::IndiProperty &  ipRecv)
inherited

Handler for the set INDI property request.

This is called by m_indiDriver's indiDriver::handleSetProperties.

Todo:
handle errors, are they FATAL?
Todo:
log an error here because callBack should not be null
Todo:
log invalid SetProperty request.
Parameters
[in]ipRecvThe property being changed.

Definition at line 3089 of file MagAOXApp.hpp.

◆ INDI_NEWCALLBACK_DECL() [1/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1amp   
)

◆ INDI_NEWCALLBACK_DECL() [2/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1freq   
)

◆ INDI_NEWCALLBACK_DECL() [3/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1ofst   
)

◆ INDI_NEWCALLBACK_DECL() [4/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1outp   
)

◆ INDI_NEWCALLBACK_DECL() [5/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1phse   
)

◆ INDI_NEWCALLBACK_DECL() [6/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1sync   
)

◆ INDI_NEWCALLBACK_DECL() [7/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1wdth   
)

◆ INDI_NEWCALLBACK_DECL() [8/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C1wvtp   
)

◆ INDI_NEWCALLBACK_DECL() [9/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2amp   
)

◆ INDI_NEWCALLBACK_DECL() [10/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2freq   
)

◆ INDI_NEWCALLBACK_DECL() [11/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2ofst   
)

◆ INDI_NEWCALLBACK_DECL() [12/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2outp   
)

◆ INDI_NEWCALLBACK_DECL() [13/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2phse   
)

◆ INDI_NEWCALLBACK_DECL() [14/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2sync   
)

◆ INDI_NEWCALLBACK_DECL() [15/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2wdth   
)

◆ INDI_NEWCALLBACK_DECL() [16/16]

MagAOX::app::siglentSDG::INDI_NEWCALLBACK_DECL ( siglentSDG  ,
m_indiP_C2wvtp   
)

◆ INDI_SETCALLBACK_DECL()

template<bool _useINDI = true>
MagAOX::app::MagAOXApp< _useINDI >::INDI_SETCALLBACK_DECL ( MagAOXApp< _useINDI >  ,
m_indiP_powerChannel   
)
inherited

◆ indiTargetUpdate()

template<bool _useINDI>
template<typename T >
int MagAOX::app::MagAOXApp< _useINDI >::indiTargetUpdate ( pcf::IndiProperty &  localProperty,
T &  localTarget,
const pcf::IndiProperty &  remoteProperty,
bool  setBusy = true 
)
protectedinherited

Get the target element value from an new property.

Returns
0 on success
-1 on error
Parameters
[out]localPropertyThe local property to update
[out]localTargetThe local value to update
[in]remotePropertythe new property received
[in]setBusy[optional] set property to busy if true

Definition at line 3197 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picoMotorCtrl::newCallBack_picopos().

◆ loadBasicConfig()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::loadBasicConfig
virtualinherited

The basic MagAO-X configuration processing method. Should not normally be overridden.

This method processes the standard MagAO-X key=value pairs.

Though it is virtual, it should not normally be overridden unless you need to depart from the MagAO-X standard.

Processing of app specific config goes in loadConfig() implemented by the derived class.

Definition at line 1383 of file MagAOXApp.hpp.

◆ loadConfig() [1/2]

void MagAOX::app::siglentSDG::loadConfig ( )
inlinevirtual

load the configuration system results (called by MagAOXApp::setup())

config(m_clock, "fxngen.clock");

Definition at line 470 of file siglentSDG.hpp.

◆ loadConfig() [2/2]

int MagAOX::app::dev::telemeter< siglentSDG >::loadConfig ( appConfigurator &  config)
inherited

Load the device section from an application configurator.

Returns
0 on success
-1 on error (nothing implemented yet)
Parameters
[in]configan application configuration from which to load values

Definition at line 112 of file telemeter.hpp.

◆ lockPID()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::lockPID
protectedinherited

Attempt to lock the PID by writing it to a file. Fails if a process is already running with the same config name. First checks the PID file for an existing PID. If found, interrogates /proc to determine if that process is running and if so if the command line matches. If a matching process is currently running, then this returns an error.

Will not fail if a PID file exists but the stored PID does not correspond to a running process with the same command line name.

Reference: https://linux.die.net/man/3/getpid

Returns
0 on success.
-1 on any error, including creating the PID file or if this app is already running.

Definition at line 1999 of file MagAOXApp.hpp.

◆ log() [1/2]

template<bool _useINDI>
template<typename logT , int retval>
int MagAOX::app::MagAOXApp< _useINDI >::log ( const typename logT::messageT &  msg,
logPrioT  level = logPrio::LOG_DEFAULT 
)
staticinherited

Make a log entry.

Wrapper for logManager::log

Template Parameters
logTthe log entry type
retvalthe value returned by this method.
Parameters
[in]msgthe message to log
[in]level[optional] the log level. The default is used if not specified.

Definition at line 1804 of file MagAOXApp.hpp.

Referenced by MagAOX::app::zylaCtrl::acquireAndCheckValid(), MagAOX::app::streamWriter::allocate_circbufs(), MagAOX::app::streamWriter::allocate_xrif(), MagAOX::app::andorCtrl::appLogic(), MagAOX::app::cameraSim::appLogic(), MagAOX::app::filterWheelCtrl::appLogic(), MagAOX::app::ocam2KCtrl::appLogic(), MagAOX::app::picamCtrl::appLogic(), MagAOX::app::qhyCtrl::appLogic(), MagAOX::app::trippLitePDU::appLogic(), MagAOX::app::xt1121Ctrl::appLogic(), MagAOX::app::xt1121DCDU::appLogic(), MagAOX::app::zylaCtrl::appLogic(), MagAOX::app::acronameUsbHub::appStartup(), MagAOX::app::andorCtrl::appStartup(), MagAOX::app::cameraSim::appStartup(), MagAOX::app::filterWheelCtrl::appStartup(), MagAOX::app::hsfwCtrl::appStartup(), MagAOX::app::ocam2KCtrl::appStartup(), MagAOX::app::picamCtrl::appStartup(), MagAOX::app::qhyCtrl::appStartup(), appStartup(), MagAOX::app::smc100ccCtrl::appStartup(), MagAOX::app::streamWriter::appStartup(), MagAOX::app::sysMonitor::appStartup(), MagAOX::app::trippLitePDU::appStartup(), MagAOX::app::xt1121DCDU::appStartup(), MagAOX::app::zaberCtrl::appStartup(), MagAOX::app::zylaCtrl::appStartup(), MagAOX::app::andorCtrl::cameraSelect(), MagAOX::app::zylaCtrl::cameraSelect(), visxCtrl.xapp.VisX::cancel_exposure(), changeOutp(), MagAOX::app::xt1121Ctrl::channelSetCallback(), MagAOX::app::andorCtrl::configureAcquisition(), MagAOX::app::picamCtrl::configureAcquisition(), MagAOX::app::qhyCtrl::configureAcquisition(), MagAOX::app::zylaCtrl::configureAcquisition(), visxCtrl.xapp.VisX::finalize_exposure(), MagAOX::app::sysMonitor::findChronyStatus(), MagAOX::app::sysMonitor::findCPULoads(), MagAOX::app::sysMonitor::findCPUTemperatures(), MagAOX::app::sysMonitor::findDiskTemperature(), MagAOX::app::sysMonitor::findDiskUsage(), MagAOX::app::sysMonitor::findRamUsage(), MagAOX::app::ocam2KCtrl::getEMGain(), MagAOX::app::andorCtrl::getFPS(), MagAOX::app::ocam2KCtrl::getFPS(), MagAOX::app::xt1121Ctrl::getState(), MagAOX::app::zylaCtrl::getTemp(), MagAOX::app::ocam2KCtrl::getTemps(), visxCtrl.xapp.VisX::handle_expose(), visxCtrl.xapp.VisX::handle_exptime(), visxCtrl.xapp.VisX::handle_gain(), audibleAlerts.core.AudibleAlerts::handle_personality_switch(), audibleAlerts.core.AudibleAlerts::handle_soundboard_switch(), audibleAlerts.core.AudibleAlerts::handle_speech_request(), audibleAlerts.core.AudibleAlerts::handle_speech_text(), visxCtrl.xapp.VisX::handle_temp_ccd(), MagAOX::app::filterWheelCtrl::home(), dbIngest.dbIngest::ingest_line(), MagAOX::app::streamWriter::initialize_xrif(), dbIngest.dbIngest::launch_followers(), MagAOX::app::zylaCtrl::loadImageIntoStream(), audibleAlerts.core.AudibleAlerts::loop(), visxCtrl.xapp.VisX::loop(), MagAOX::app::ttmModulator::modTTM(), MagAOX::app::hsfwCtrl::moveTo(), MagAOX::app::zaberCtrl::moveTo(), MagAOX::app::filterWheelCtrl::moveToRaw(), MagAOX::app::filterWheelCtrl::moveToRawRelative(), MagAOX::app::picoMotorCtrl::newCallBack_picopos(), MagAOX::app::ttmModulator::offset12(), MagAOX::app::filterWheelCtrl::onPowerOnConnect(), audibleAlerts.core.AudibleAlerts::preprocess(), audibleAlerts.core.AudibleAlerts::reaction_handler(), MagAOX::app::zylaCtrl::reconfig(), dbIngest.dbIngest::rescan_files(), MagAOX::app::ocam2KCtrl::resetEMProtection(), MagAOX::app::ttmModulator::restTTM(), MagAOX::app::ocam2KCtrl::setEMGain(), MagAOX::app::picamCtrl::setEMGain(), MagAOX::app::ocam2KCtrl::setFPS(), MagAOX::app::picamCtrl::setPicamParameter(), MagAOX::app::andorCtrl::setReadoutSpeed(), MagAOX::app::andorCtrl::setShutter(), MagAOX::app::ocam2KCtrl::setSynchro(), MagAOX::app::ocam2KCtrl::setTempControl(), MagAOX::app::zylaCtrl::setTempControl(), MagAOX::app::ocam2KCtrl::setTempSetPt(), MagAOX::app::ttmModulator::setTTM(), corAlign.corAlign::setup(), efcControl.efcControl::setup(), visxCtrl.xapp.VisX::setup(), MagAOX::app::andorCtrl::setVShiftSpeed(), MagAOX::app::andorCtrl::startAcquisition(), MagAOX::app::zylaCtrl::startAcquisition(), MagAOX::app::zaberCtrl::startHoming(), MagAOX::app::filterWheelCtrl::stop(), MagAOX::app::zaberCtrl::stop(), visxCtrl.xapp.VisX::subscribe_to_other_devices(), MagAOX::app::acronameUsbHub::turnOutletOff(), MagAOX::app::trippLitePDU::turnOutletOff(), MagAOX::app::xt1121DCDU::turnOutletOff(), MagAOX::app::acronameUsbHub::turnOutletOn(), MagAOX::app::trippLitePDU::turnOutletOn(), MagAOX::app::xt1121DCDU::turnOutletOn(), MagAOX::app::acronameUsbHub::updateOutletState(), and MagAOX::app::xt1121DCDU::updateOutletState().

◆ log() [2/2]

◆ logMessage()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::logMessage ( bufferPtrT b)
inherited

Handle a log message from the logging system.

This is a callback from the logManager, and is called when the log thread is processing log entries.

Decides whether to display to stderr and whether to send via INDI.

Definition at line 1819 of file MagAOXApp.hpp.

◆ newCallBack_clearFSMAlert()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::newCallBack_clearFSMAlert ( const pcf::IndiProperty &  ipRecv)
protectedinherited

The callback called by the static version, to actually process the FSM Alert Clear request.

Returns
0 on success.
-1 on error.
Parameters
[in]ipRecvthe INDI property sent with the new property request.

Definition at line 3364 of file MagAOXApp.hpp.

◆ normalizeSetup()

int MagAOX::app::siglentSDG::normalizeSetup ( )
inline

Normalize the setup, called during connection if checkSetup shows a problem, or on power-up.

Definition at line 1602 of file siglentSDG.hpp.

Referenced by appLogic().

◆ onPowerOff()

int MagAOX::app::siglentSDG::onPowerOff ( )
inlinevirtual

Implementation of the on-power-off FSM logic.

Reimplemented from MagAOX::app::MagAOXApp< _useINDI >.

Definition at line 925 of file siglentSDG.hpp.

Referenced by whilePowerOff().

◆ powerOnWaitElapsed()

template<bool _useINDI>
bool MagAOX::app::MagAOXApp< _useINDI >::powerOnWaitElapsed
protectedinherited

This method tests whether the power on wait time has elapsed.

You would call this once per appLogic loop while in state POWERON. While false, you would return 0. Once it becomes true, take post-power-on actions and go on with life.

Returns
true if the time since POWERON is greater than the power-on wait, or if power management is not enabled
false otherwise

Definition at line 3397 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picoMotorCtrl::appLogic(), and MagAOX::app::smc100ccCtrl::appLogic().

◆ powerState()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::powerState
inherited

◆ powerStateTarget()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::powerStateTarget
inherited

◆ queryARWV()

int MagAOX::app::siglentSDG::queryARWV ( int &  index,
int  channel 
)
inline

Send the ARWV? query and get the response index.

This does not update internal state.

Returns
0 on success
-1 on an error.
Parameters
[out]indexthe ARWV index
[in]channelthe channel to query

Definition at line 1218 of file siglentSDG.hpp.

Referenced by checkSetup().

◆ queryBSWV()

int MagAOX::app::siglentSDG::queryBSWV ( int  channel)
inline

Send the BSWV? query for a channel.

This updates member variables and INDI.

Returns
0 on success
-1 on an error.
Parameters
channel< [in] the channel to query

Definition at line 1263 of file siglentSDG.hpp.

Referenced by appLogic().

◆ queryBTWV()

int MagAOX::app::siglentSDG::queryBTWV ( std::string &  state,
int  channel 
)
inline

Send the BTWV? query and get the response state.

This does not update internal state.

Returns
0 on success
-1 on an error.
Parameters
[out]statethe BTWV state, ON or OFF
[in]channelthe channel to query

Definition at line 1173 of file siglentSDG.hpp.

Referenced by checkSetup().

◆ queryMDWV()

int MagAOX::app::siglentSDG::queryMDWV ( std::string &  state,
int  channel 
)
inline

Send the MDWV? query and get the response state.

This does not update internal state.

Returns
0 on success
-1 on an error.
Parameters
[out]statethe MDWV state, ON or OFF
[in]channelthe channel to query

Definition at line 1083 of file siglentSDG.hpp.

Referenced by checkSetup().

◆ queryOUTP()

int MagAOX::app::siglentSDG::queryOUTP ( int  channel)
inline

Send the OUTP? query for a channel.

Returns
0 on success
-1 on an error.
Parameters
[in]channelthe channel to query

Definition at line 1403 of file siglentSDG.hpp.

Referenced by appLogic().

◆ querySWWV()

int MagAOX::app::siglentSDG::querySWWV ( std::string &  state,
int  channel 
)
inline

Send the SWWV? query and get the response state.

This does not update internal state.

Returns
0 on success
-1 on an error.
Parameters
[out]statethe SWWV state, ON or OFF
[in]channelthe channel to query

Definition at line 1128 of file siglentSDG.hpp.

Referenced by checkSetup().

◆ querySYNC()

int MagAOX::app::siglentSDG::querySYNC ( bool &  sync,
int  channel 
)
inline

Send the SYNC? query for a channel.

This updates member variables and INDI.

Returns
0 on success
-1 on an error.
Parameters
channel< [in] the sync state for this channel < [in] the channel to query

Definition at line 1358 of file siglentSDG.hpp.

Referenced by checkSetup().

◆ recordParams()

int MagAOX::app::siglentSDG::recordParams ( bool  force = false)
inline

◆ recordTelem()

int MagAOX::app::siglentSDG::recordTelem ( const telem_fxngen )
inline

Definition at line 2463 of file siglentSDG.hpp.

◆ registerIndiPropertyNew() [1/3]

template<bool _useINDI = true>
int MagAOX::app::MagAOXApp< _useINDI >::registerIndiPropertyNew ( pcf::IndiProperty &  prop,
const std::string &  propName,
const pcf::IndiProperty::Type &  propType,
const pcf::IndiProperty::PropertyPermType &  propPerm,
const pcf::IndiProperty::PropertyStateType &  propState,
const pcf::IndiProperty::SwitchRuleType &  propRule,
int(*)(void *, const pcf::IndiProperty &)   
)
inherited

Register an INDI property which is exposed for others to request a New Property for, with a switch rule.

This verison sets up the INDI property according to the arguments.

Returns
0 on success.
-1 on error.
Parameters
[out]propthe property to register
[in]propNamethe name of the property
[in]propTypethe type of the property
[in]propPermthe permissions of the property
[in]propStatethe state of the property
[in]propRulethe switch rule type

◆ registerIndiPropertyNew() [2/3]

template<bool _useINDI = true>
int MagAOX::app::MagAOXApp< _useINDI >::registerIndiPropertyNew ( pcf::IndiProperty &  prop,
const std::string &  propName,
const pcf::IndiProperty::Type &  propType,
const pcf::IndiProperty::PropertyPermType &  propPerm,
const pcf::IndiProperty::PropertyStateType &  propState,
int(*)(void *, const pcf::IndiProperty &)   
)
inherited

Register an INDI property which is exposed for others to request a New Property for.

This verison sets up the INDI property according to the arguments.

Returns
0 on success.
-1 on error.
Parameters
[out]propthe property to register
[in]propNamethe name of the property
[in]propTypethe type of the property
[in]propPermthe permissions of the property
[in]propStatethe state of the property

◆ registerIndiPropertyNew() [3/3]

template<bool _useINDI = true>
int MagAOX::app::MagAOXApp< _useINDI >::registerIndiPropertyNew ( pcf::IndiProperty &  prop,
int(*)(void *, const pcf::IndiProperty &)   
)
inherited

Register an INDI property which is exposed for others to request a New Property for.

In this version the supplied IndiProperty must be fully set up before passing in.

Returns
0 on success.
-1 on error.
Parameters
[in]propthe property to register, must be fully set up

Referenced by MagAOX::app::filterWheelCtrl::appStartup(), MagAOX::app::magAOXMaths::appStartup(), MagAOX::app::ocam2KCtrl::appStartup(), MagAOX::app::picoMotorCtrl::appStartup(), appStartup(), MagAOX::app::streamWriter::appStartup(), MagAOX::app::sysMonitor::appStartup(), MagAOX::app::zaberCtrl::appStartup(), and MagAOXApp_tests::SCENARIO().

◆ registerIndiPropertyReadOnly() [1/2]

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::registerIndiPropertyReadOnly ( pcf::IndiProperty &  prop)
inherited

Register an INDI property which is read only.

This version requires the property be fully set up.

Returns
0 on success.
-1 on error.
Parameters
[in]propthe property to register, must be completely setup

Definition at line 2655 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picamCtrl::appStartup(), and MagAOX::app::zaberCtrl::appStartup().

◆ registerIndiPropertyReadOnly() [2/2]

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::registerIndiPropertyReadOnly ( pcf::IndiProperty &  prop,
const std::string &  propName,
const pcf::IndiProperty::Type &  propType,
const pcf::IndiProperty::PropertyPermType &  propPerm,
const pcf::IndiProperty::PropertyStateType &  propState 
)
inherited

Register an INDI property which is read only.

This verison sets up the INDI property according to the arguments.

Returns
0 on success.
-1 on error.
Parameters
[out]propthe property to register, will be configured
[in]propNamethe name of the property
[in]propTypethe type of the property
[in]propPermthe permissions of the property
[in]propStatethe state of the property

Definition at line 2684 of file MagAOXApp.hpp.

◆ registerIndiPropertySet()

template<bool _useINDI = true>
int MagAOX::app::MagAOXApp< _useINDI >::registerIndiPropertySet ( pcf::IndiProperty &  prop,
const std::string &  devName,
const std::string &  propName,
int(*)(void *, const pcf::IndiProperty &)   
)
inherited

Register an INDI property which is monitored for updates from others.

Returns
0 on success.
-1 on error.
Parameters
[out]propthe property to register
[in]devNamethe device which owns this property
[in]propNamethe name of the property

Definition at line 2792 of file MagAOXApp.hpp.

◆ sendGetPropertySetList()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::sendGetPropertySetList ( bool  all = false)
inherited

Definition at line 2949 of file MagAOXApp.hpp.

◆ sendNewProperty() [1/2]

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::sendNewProperty ( const pcf::IndiProperty &  ipSend)
protectedinherited

Send a newProperty command to another device (using the INDI Client interface)

Returns
0 on success.
-1 on an error, which will be logged
Parameters
[in]ipSendThe property to send a "new" INDI command for

Definition at line 3302 of file MagAOXApp.hpp.

◆ sendNewProperty() [2/2]

template<bool _useINDI>
template<typename T >
int MagAOX::app::MagAOXApp< _useINDI >::sendNewProperty ( const pcf::IndiProperty &  ipSend,
const std::string &  el,
const T &  newVal 
)
protectedinherited

Send a newProperty command to another device (using the INDI Client interface)

Copies the input IndiProperty, then updates the element with the new value.

Returns
0 on success.
-1 on an errory.
Parameters
[in]ipSendThe property to send a "new" INDI command for
[in]elThe element of the property to change
[in]newValThe value to request for the element.

Definition at line 3268 of file MagAOXApp.hpp.

Referenced by MagAOX::app::ttmModulator::modTTM(), MagAOX::app::zaberCtrl::moveTo(), MagAOX::app::ttmModulator::offset12(), MagAOX::app::ttmModulator::offsetXY(), MagAOX::app::ttmModulator::restTTM(), MagAOX::app::MagAOXApp< _useINDI >::sendNewProperty(), MagAOX::app::ocam2KCtrl::setFPS(), MagAOX::app::ttmModulator::setTTM(), MagAOX::app::zaberCtrl::startHoming(), MagAOX::app::zaberCtrl::stop(), MagAOX::app::xt1121DCDU::turnOutletOff(), and MagAOX::app::xt1121DCDU::turnOutletOn().

◆ sendNewStandardIndiToggle()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::sendNewStandardIndiToggle ( const std::string &  device,
const std::string &  property,
bool  onoff 
)
protectedinherited

Send a new property commmand for a standard toggle switch.

Returns
0 on success
-1 on an error, which will be logged.
Parameters
[in]deviceThe device name
[in]propertyThe property name
[in]onoffSwitch state to send: true = on, false = off

Definition at line 3321 of file MagAOXApp.hpp.

◆ setDefaults()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::setDefaults ( int  argc,
char **  argv 
)
virtualinherited

Set the paths for config files.

Replaces the mx::application defaults with the MagAO-X config system.

This function parses the CL for "-n" or "--name".

Do not override this unless you intend to depart from the MagAO-X standard.

Parameters
[in]argcstandard command line result specifying number of arguments in argv
[in]argvstandard command line result containing the arguments.

Definition at line 1188 of file MagAOXApp.hpp.

◆ setEuidCalled()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::setEuidCalled
privateinherited

Set the effective user ID to the called value, i.e. the highest possible.

If setuid is set on the file, this will be super-user privileges.

Reference: http://pubs.opengroup.org/onlinepubs/009695399/functions/seteuid.html

Returns
0 on success
-1 on error from setuid().

Definition at line 1961 of file MagAOXApp.hpp.

Referenced by MagAOX::app::MagAOXApp< _useINDI >::elevatedPrivileges::elevate().

◆ setEuidReal()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::setEuidReal
privateinherited

Set the effective user ID to the real value, i.e. the file owner.

Reference: http://pubs.opengroup.org/onlinepubs/009695399/functions/seteuid.html

Returns
0 on success
-1 on error from setuid().

Definition at line 1980 of file MagAOXApp.hpp.

Referenced by MagAOX::app::MagAOXApp< _useINDI >::elevatedPrivileges::restore().

◆ setSigTermHandler()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::setSigTermHandler
privateinherited

Sets the handler for SIGTERM, SIGQUIT, and SIGINT.

Definition at line 1872 of file MagAOXApp.hpp.

◆ setupBasicConfig()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::setupBasicConfig
virtualinherited

The basic MagAO-X configuration setup method. Should not normally be overridden.

This method sets up the config system with the standard MagAO-X key=value pairs.

Though it is virtual, it should not normally be overridden unless you need to depart from the MagAO-X standard.

Setting up app specific config goes in setupConfig() implemented in the derived class.

Definition at line 1294 of file MagAOXApp.hpp.

◆ setupConfig() [1/2]

void MagAOX::app::siglentSDG::setupConfig ( )
inlinevirtual

Setup the configuration system (called by MagAOXApp::setup())

Definition at line 452 of file siglentSDG.hpp.

◆ setupConfig() [2/2]

int MagAOX::app::dev::telemeter< siglentSDG >::setupConfig ( appConfigurator &  config)
inherited

Setup an application configurator for the device section.

Returns
0 on success.
-1 on error (nothing implemented yet)
Parameters
[in]configan application configuration to setup

Definition at line 104 of file telemeter.hpp.

◆ shutdown()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::shutdown
inherited

Get the value of the shutdown flag.

Returns
the current value of m_shutdown

Definition at line 1182 of file MagAOXApp.hpp.

Referenced by MagAOX::app::streamWriter::swThreadExec().

◆ st_newCallBack_clearFSMAlert()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::st_newCallBack_clearFSMAlert ( void *  app,
const pcf::IndiProperty &  ipRecv 
)
staticprotectedinherited

The static callback function to be registered for requesting to clear the FSM alert.

Returns
0 on success.
-1 on error.
Parameters
[in]appa pointer to this, will be static_cast-ed to MagAOXApp.
[in]ipRecvthe INDI property sent with the new property request.

Definition at line 3358 of file MagAOXApp.hpp.

◆ startINDI()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::startINDI
protectedinherited

Start INDI Communications.

Returns
0 on success
-1 on error. This is fatal.

Definition at line 2892 of file MagAOXApp.hpp.

◆ state() [1/2]

template<bool _useINDI>
stateCodes::stateCodeT MagAOX::app::MagAOXApp< _useINDI >::state
inherited

Get the current state code.

Returns
m_state

Definition at line 2297 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picamCtrl::acquireAndCheckValid(), MagAOX::app::qhyCtrl::acquireAndCheckValid(), MagAOX::app::acronameUsbHub::appLogic(), MagAOX::app::andorCtrl::appLogic(), MagAOX::app::cameraSim::appLogic(), MagAOX::app::filterWheelCtrl::appLogic(), MagAOX::app::hsfwCtrl::appLogic(), MagAOX::app::ocam2KCtrl::appLogic(), MagAOX::app::picamCtrl::appLogic(), MagAOX::app::picoMotorCtrl::appLogic(), appLogic(), MagAOX::app::smc100ccCtrl::appLogic(), MagAOX::app::streamWriter::appLogic(), MagAOX::app::trippLitePDU::appLogic(), MagAOX::app::ttmModulator::appLogic(), MagAOX::app::xt1121Ctrl::appLogic(), MagAOX::app::xt1121DCDU::appLogic(), MagAOX::app::zaberCtrl::appLogic(), MagAOX::app::zylaCtrl::appLogic(), MagAOX::app::acronameUsbHub::appStartup(), MagAOX::app::andorCtrl::appStartup(), MagAOX::app::cameraSim::appStartup(), MagAOX::app::filterWheelCtrl::appStartup(), MagAOX::app::hsfwCtrl::appStartup(), MagAOX::app::magAOXMaths::appStartup(), MagAOX::app::qhyCtrl::appStartup(), MagAOX::app::smc100ccCtrl::appStartup(), MagAOX::app::sysMonitor::appStartup(), MagAOX::app::trippLitePDU::appStartup(), MagAOX::app::xt1121DCDU::appStartup(), MagAOX::app::zylaCtrl::appStartup(), MagAOX::app::andorCtrl::cameraSelect(), changeAmp(), changeFreq(), changeOfst(), changeOutp(), changePhse(), changeSync(), changeWdth(), changeWvtp(), MagAOX::app::picoMotorCtrl::channelThreadExec(), checkSetup(), MagAOX::app::andorCtrl::configureAcquisition(), MagAOX::app::cameraSim::configureAcquisition(), MagAOX::app::ocam2KCtrl::configureAcquisition(), MagAOX::app::picamCtrl::configureAcquisition(), MagAOX::app::qhyCtrl::configureAcquisition(), MagAOX::app::picamCtrl::connect(), MagAOX::app::qhyCtrl::connect(), MagAOX::app::picamCtrl::getAcquisitionState(), MagAOX::app::smc100ccCtrl::getCtrlState(), MagAOX::app::qhyCtrl::getExpTime(), MagAOX::app::qhyCtrl::getTemp(), MagAOX::app::picamCtrl::getTemps(), MagAOX::app::filterWheelCtrl::home(), MagAOX::app::qhyCtrl::loadImageIntoStream(), MagAOX::app::hsfwCtrl::moveTo(), MagAOX::app::smc100ccCtrl::moveTo(), queryBTWV(), queryMDWV(), querySWWV(), MagAOX::app::andorCtrl::reconfig(), MagAOX::app::ocam2KCtrl::reconfig(), MagAOX::app::picamCtrl::reconfig(), MagAOX::app::streamWriter::recordSavingState(), MagAOX::app::andorCtrl::setCropMode(), MagAOX::app::picamCtrl::setEMGain(), MagAOX::app::andorCtrl::setExpTime(), MagAOX::app::picamCtrl::setExpTime(), MagAOX::app::andorCtrl::setNextROI(), MagAOX::app::qhyCtrl::setNextROI(), MagAOX::app::andorCtrl::setReadoutSpeed(), MagAOX::app::andorCtrl::setShutter(), MagAOX::app::andorCtrl::setVShiftSpeed(), MagAOX::app::andorCtrl::startAcquisition(), MagAOX::app::cameraSim::startAcquisition(), MagAOX::app::qhyCtrl::startAcquisition(), MagAOX::app::hsfwCtrl::startHoming(), MagAOX::app::ocam2KCtrl::stateStringValid(), MagAOX::app::streamWriter::swThreadExec(), MagAOX::app::acronameUsbHub::updateOutletState(), MagAOX::app::trippLitePDU::updateOutletStates(), and writeRead().

◆ state() [2/2]

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::state ( const stateCodes::stateCodeT s,
bool  stateAlert = false 
)
inherited

Set the current state code.

Todo:
move this to a function in stateCodes
Parameters
[in]sThe new application state
[in]stateAlert[optional] flag to set the alert state of the FSM property.

Definition at line 2303 of file MagAOXApp.hpp.

◆ stateLogged()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::stateLogged
inherited

Updates and returns the value of m_stateLogged. Will be 0 on first call after a state change, >0 afterwards.

This method exists to facilitate logging the reason for a state change once, but not logging it on subsequent event loops. Returns the current value upon entry, but updates before returning so that the next call returns the incremented value. Example usage:

if( connection_failed ) //some condition set this to true
{
if(!stateLogged()) log<text_log>("Not connected");
}
stateCodes::stateCodeT state()
Get the current state code.
Definition: MagAOXApp.hpp:2297
int stateLogged()
Updates and returns the value of m_stateLogged. Will be 0 on first call after a state change,...
Definition: MagAOXApp.hpp:2361
@ NOTCONNECTED
The application is not connected to the device or service.
Definition: stateCodes.hpp:49

In this example, the log entry is made the first time the state changes. If there are no changes to a different state in the mean time, then when the event loop gets here again and decides it is not connected, the log entry will not be made.

Returns
current value of m_stateLogged, that is the value before it is incremented.

Definition at line 2361 of file MagAOXApp.hpp.

Referenced by MagAOX::app::acronameUsbHub::appLogic(), MagAOX::app::filterWheelCtrl::appLogic(), MagAOX::app::hsfwCtrl::appLogic(), MagAOX::app::picoMotorCtrl::appLogic(), appLogic(), MagAOX::app::smc100ccCtrl::appLogic(), MagAOX::app::trippLitePDU::appLogic(), MagAOX::app::ttmModulator::appLogic(), MagAOX::app::xt1121Ctrl::appLogic(), MagAOX::app::andorCtrl::cameraSelect(), MagAOX::app::picamCtrl::connect(), and MagAOX::app::qhyCtrl::connect().

◆ telem() [1/2]

int MagAOX::app::dev::telemeter< siglentSDG >::telem
inherited

Make a telemetry recording, for an empty record.

Wrapper for logManager::log, which updates telT::lastRecord.

Template Parameters
logTthe log entry type
retvalthe value returned by this method.

Definition at line 97 of file telemeter.hpp.

◆ telem() [2/2]

int MagAOX::app::dev::telemeter< siglentSDG >::telem ( const typename telT::messageT &  msg)
inherited

Make a telemetry recording.

Wrapper for logManager::log, which updates telT::lastRecord.

Template Parameters
logTthe log entry type
retvalthe value returned by this method.
Parameters
[in]msgthe data to log

Definition at line 87 of file telemeter.hpp.

◆ threadStart()

template<bool _useINDI>
template<class thisPtr , class Function >
int MagAOX::app::MagAOXApp< _useINDI >::threadStart ( std::thread &  thrd,
bool &  thrdInit,
pid_t &  tpid,
pcf::IndiProperty &  thProp,
int  thrdPrio,
const std::string &  cpuset,
const std::string &  thrdName,
thisPtr *  thrdThis,
Function &&  thrdStart 
)
inherited

Start a thread, using this class's privileges to set priority, etc.

The thread initialization synchronizer bool is set to true at the beginning of this function, then is set to false once all initialization is complete. The thread exec function should wait until this is false before doing anything except setting the pid. This is to avoid privilege escalation bugs.

The interface of the thread start function is:

static void impl::myThreadStart( impl * o )
{
o->myThreadExec(); //A member function which actually executes the thread
}

where impl is the derived class, and mThreadStart and myThreadExec are members of impl.

Returns
0 on success
-1 on error
Parameters
[out]thrdThe thread object to start executing
thrdInit[in/out] The thread initilization synchronizer.
tpid[in/out] The thread pid to be filled in by thrdStart immediately upon call
thProp[in/out] The INDI property to publish the thread details
[in]thrdPrioThe r/t priority to set for this thread
[in]cpusetthe cpuset to place this thread on. Ignored if "".
[in]thrdNameThe name of the thread (just for logging)
[in]thrdThisThe `this` pointer to pass to the thread starter function
[in]thrdStartThe thread starting function, a static function taking a `this` pointer as argument.

Definition at line 2157 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picoMotorCtrl::appStartup(), MagAOX::app::streamWriter::appStartup(), and MagAOX::app::sysMonitor::appStartup().

◆ unlockPID()

template<bool _useINDI>
int MagAOX::app::MagAOXApp< _useINDI >::unlockPID
protectedinherited

Remove the PID file.

Definition at line 2133 of file MagAOXApp.hpp.

◆ updateIfChanged() [1/4]

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::updateIfChanged ( pcf::IndiProperty &  p,
const std::string &  el,
const char *  newVal,
pcf::IndiProperty::PropertyStateType  ipState = pcf::IndiProperty::Ok 
)
protectedinherited

Update an INDI property element value if it has changed.

Will only peform a SetProperty if the new element value has changed compared to the stored value, or if the property state has changed.

This comparison is done in the true type of the value.

This is a specialization for const char * to std::string.

For a property with multiple elements, you should use the vector version to minimize network traffic. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
p[in/out] The property containing the element to possibly update
[in]elThe element name
[in]newValthe new value

Definition at line 3135 of file MagAOXApp.hpp.

◆ updateIfChanged() [2/4]

template<bool _useINDI>
template<typename T >
void MagAOX::app::MagAOXApp< _useINDI >::updateIfChanged ( pcf::IndiProperty &  p,
const std::string &  el,
const std::vector< T > &  newVals,
pcf::IndiProperty::PropertyStateType  ipState = pcf::IndiProperty::Ok 
)
protectedinherited

Update an INDI property if values have changed.

Will only peform a SetProperty if at least one value has changed compared to the stored value, or if the property state has changed.

Constructs the element names for each value as elX where X is the index of the vector.

This comparison is done in the true type of the value.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
p[in/out] The property containing the element to possibly update
[in]elBeginning of each element name
[in]newValsthe new values
[in]ipState[optional] the new state

Definition at line 3160 of file MagAOXApp.hpp.

◆ updateIfChanged() [3/4]

template<bool _useINDI>
template<typename T >
void MagAOX::app::MagAOXApp< _useINDI >::updateIfChanged ( pcf::IndiProperty &  p,
const std::string &  el,
const T &  newVal,
pcf::IndiProperty::PropertyStateType  ipState = pcf::IndiProperty::Ok 
)
protectedinherited

Update an INDI property element value if it has changed.

Will only peform a SetProperty if the new element value has changed compared to the stored value, or if the property state has changed.

This comparison is done in the true type of the value.

For a property with multiple elements, you should use the vector version to minimize network traffic.

Parameters
p[in/out] The property containing the element to possibly update
[in]elThe element name
[in]newValthe new value

Definition at line 3120 of file MagAOXApp.hpp.

Referenced by MagAOX::app::filterWheelCtrl::appLogic(), MagAOX::app::ocam2KCtrl::appLogic(), MagAOX::app::picoMotorCtrl::appLogic(), MagAOX::app::smc100ccCtrl::appLogic(), MagAOX::app::ttmModulator::appLogic(), MagAOX::app::zaberCtrl::appLogic(), MagAOX::app::xt1121Ctrl::channelSetCallback(), MagAOX::app::cameraSim::checkNextROI(), MagAOX::app::andorCtrl::configureAcquisition(), MagAOX::app::picamCtrl::configureAcquisition(), MagAOX::app::qhyCtrl::configureAcquisition(), MagAOX::app::zylaCtrl::configureAcquisition(), MagAOX::app::xt1121Ctrl::getState(), MagAOX::app::ocam2KCtrl::getTemps(), MagAOX::app::INDI_NEWCALLBACK_DEFN(), MagAOX::app::smc100ccCtrl::moveTo(), MagAOX::app::filterWheelCtrl::moveToRaw(), MagAOX::app::acronameUsbHub::onPowerOff(), MagAOX::app::ocam2KCtrl::onPowerOff(), onPowerOff(), MagAOX::app::xt1121Ctrl::onPowerOff(), queryBSWV(), queryOUTP(), MagAOX::app::ocam2KCtrl::resetEMProtection(), MagAOX::app::picamCtrl::setExpTime(), MagAOX::app::trippLitePDU::updateOutletStates(), MagAOX::app::magAOXMaths::updateVals(), and MagAOX::app::sysMonitor::updateVals().

◆ updateIfChanged() [4/4]

template<bool _useINDI>
template<typename T >
void MagAOX::app::MagAOXApp< _useINDI >::updateIfChanged ( pcf::IndiProperty &  p,
const std::vector< std::string > &  els,
const std::vector< T > &  newVals,
pcf::IndiProperty::PropertyStateType  newState = pcf::IndiProperty::Ok 
)
protectedinherited

Update an INDI property if values have changed.

Will only peform a SetProperty if at least one value has changed compared to the stored value, or if the property state has changed.

This comparison is done in the true type of the value.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters
p[in/out] The property containing the element to possibly update
[in]elsString vector of element names
[in]newValsthe new values
[in]newState[optional] The state of the property

Definition at line 3181 of file MagAOXApp.hpp.

◆ updateSwitchIfChanged()

template<bool _useINDI>
void MagAOX::app::MagAOXApp< _useINDI >::updateSwitchIfChanged ( pcf::IndiProperty &  p,
const std::string &  el,
const pcf::IndiElement::SwitchStateType &  newVal,
pcf::IndiProperty::PropertyStateType  ipState = pcf::IndiProperty::Ok 
)
protectedinherited

◆ whilePowerOff()

int MagAOX::app::siglentSDG::whilePowerOff ( )
inlinevirtual

Implementation of the while-powered-off FSM.

Reimplemented from MagAOX::app::MagAOXApp< _useINDI >.

Definition at line 990 of file siglentSDG.hpp.

◆ writeCommand()

int MagAOX::app::siglentSDG::writeCommand ( const std::string &  commmand)
inline

Write a command to the device.

Returns
0 on success
-1 on error
Parameters
[in]commmandthe complete command string to send to the device

Definition at line 1040 of file siglentSDG.hpp.

Referenced by changeAmp(), changeFreq(), changeOfst(), changeOutp(), changePhse(), changeSync(), changeWdth(), changeWvtp(), and normalizeSetup().

◆ writeRead()

int MagAOX::app::siglentSDG::writeRead ( std::string &  strRead,
const std::string &  command 
)
inline

Write a command to the device and get the response. Not mutex-ed.

We assume this is called after the m_indiMutex is locked.

Returns
0 on success
-1 on an error. May set DISCONNECTED.
Parameters
[out]strReadThe string responseread in
[in]commandThe command to send.

Definition at line 1004 of file siglentSDG.hpp.

Referenced by queryARWV(), queryBSWV(), queryBTWV(), queryMDWV(), queryOUTP(), querySWWV(), and querySYNC().

Friends And Related Function Documentation

◆ dev::telemeter< siglentSDG >

friend class dev::telemeter< siglentSDG >
friend

Definition at line 29 of file siglentSDG.hpp.

◆ siglentSDG_test

friend class siglentSDG_test
friend

Definition at line 29 of file siglentSDG.hpp.

Member Data Documentation

◆ cs_MaxOfst

constexpr static double MagAOX::app::siglentSDG::cs_MaxOfst = 10.0
staticconstexprprivate

Definition at line 34 of file siglentSDG.hpp.

Referenced by changeOfst().

◆ cs_MaxVolts

constexpr static double MagAOX::app::siglentSDG::cs_MaxVolts = 10.0
staticconstexprprivate

Definition at line 35 of file siglentSDG.hpp.

◆ m_allDefsReceived

template<bool _useINDI = true>
bool MagAOX::app::MagAOXApp< _useINDI >::m_allDefsReceived { false }
protectedinherited

Flag indicating that all registered Set properties have been updated since last Get.

Definition at line 582 of file MagAOXApp.hpp.

◆ m_bootDelay

double MagAOX::app::siglentSDG::m_bootDelay {10}
protected

Time in seconds it takes the device to boot.

Definition at line 51 of file siglentSDG.hpp.

Referenced by appLogic().

◆ m_C1frequency

double MagAOX::app::siglentSDG::m_C1frequency {0}
protected

The output frequency of channel 1.

Definition at line 70 of file siglentSDG.hpp.

Referenced by onPowerOff(), queryBSWV(), and recordParams().

◆ m_C1frequency_tgt

double MagAOX::app::siglentSDG::m_C1frequency_tgt {-1}
protected

Definition at line 87 of file siglentSDG.hpp.

Referenced by changeAmp(), changeFreq(), onPowerOff(), and queryBSWV().

◆ m_C1ofst

double MagAOX::app::siglentSDG::m_C1ofst {0}
protected

The offset voltage of channel 1.

Definition at line 73 of file siglentSDG.hpp.

Referenced by changeAmp(), onPowerOff(), queryBSWV(), and recordParams().

◆ m_C1outp

uint8_t MagAOX::app::siglentSDG::m_C1outp {0}
protected

std::string m_clock; ///<INTernal or EXTernal

The output status channel 1

Definition at line 69 of file siglentSDG.hpp.

Referenced by appLogic(), onPowerOff(), queryOUTP(), and recordParams().

◆ m_C1outpOn

bool MagAOX::app::siglentSDG::m_C1outpOn {false}
protected

Flag controlling if C1 output is on after normalization. This will only have an effect if m_C1wvtp is "pulse"

Definition at line 59 of file siglentSDG.hpp.

Referenced by loadConfig(), and normalizeSetup().

◆ m_C1phse

double MagAOX::app::siglentSDG::m_C1phse {0}
protected

The phase of channel 1 (SINE only)

Definition at line 74 of file siglentSDG.hpp.

Referenced by queryBSWV(), and recordParams().

◆ m_C1setVoltage

double MagAOX::app::siglentSDG::m_C1setVoltage {5.0}
protected

the set position voltage of Ch. 1.

Definition at line 56 of file siglentSDG.hpp.

◆ m_C1sync

bool MagAOX::app::siglentSDG::m_C1sync {false}
protected

Definition at line 93 of file siglentSDG.hpp.

Referenced by appLogic(), checkSetup(), and recordParams().

◆ m_C1vpp

double MagAOX::app::siglentSDG::m_C1vpp {0}
protected

The peak-2-peak voltage of channel 1.

Definition at line 71 of file siglentSDG.hpp.

Referenced by changeOfst(), onPowerOff(), queryBSWV(), and recordParams().

◆ m_C1vpp_tgt

double MagAOX::app::siglentSDG::m_C1vpp_tgt {-1}
protected

Definition at line 88 of file siglentSDG.hpp.

Referenced by changeAmp(), changeFreq(), onPowerOff(), and queryBSWV().

◆ m_C1vppDefault

double MagAOX::app::siglentSDG::m_C1vppDefault {0}
protected

default value for vpp of channel 1

Definition at line 72 of file siglentSDG.hpp.

Referenced by loadConfig(), and normalizeSetup().

◆ m_C1wdth

double MagAOX::app::siglentSDG::m_C1wdth {0}
protected

The width of channel 1 (PULSE only)

Definition at line 75 of file siglentSDG.hpp.

Referenced by queryBSWV(), and recordParams().

◆ m_C1wvtp

std::string MagAOX::app::siglentSDG::m_C1wvtp
protected

The wave type of channel 1.

Definition at line 76 of file siglentSDG.hpp.

Referenced by onPowerOff(), queryBSWV(), and recordParams().

◆ m_C2frequency

double MagAOX::app::siglentSDG::m_C2frequency {0}
protected

The output frequency of channel 2.

Definition at line 79 of file siglentSDG.hpp.

Referenced by onPowerOff(), queryBSWV(), and recordParams().

◆ m_C2frequency_tgt

double MagAOX::app::siglentSDG::m_C2frequency_tgt {-1}
protected

Definition at line 90 of file siglentSDG.hpp.

Referenced by changeAmp(), changeFreq(), onPowerOff(), and queryBSWV().

◆ m_C2ofst

double MagAOX::app::siglentSDG::m_C2ofst {0}
protected

The offset voltage of channel 2.

Definition at line 82 of file siglentSDG.hpp.

Referenced by changeAmp(), onPowerOff(), queryBSWV(), and recordParams().

◆ m_C2outp

uint8_t MagAOX::app::siglentSDG::m_C2outp {0}
protected

The output status channel 2.

Definition at line 78 of file siglentSDG.hpp.

Referenced by appLogic(), onPowerOff(), queryOUTP(), and recordParams().

◆ m_C2phse

double MagAOX::app::siglentSDG::m_C2phse {0}
protected

The phase of channel 2 (SINE only)

Definition at line 83 of file siglentSDG.hpp.

Referenced by queryBSWV(), and recordParams().

◆ m_C2setVoltage

double MagAOX::app::siglentSDG::m_C2setVoltage {5.0}
protected

the set position voltage of Ch. 2.

Definition at line 57 of file siglentSDG.hpp.

◆ m_C2sync

bool MagAOX::app::siglentSDG::m_C2sync {false}
protected

Definition at line 94 of file siglentSDG.hpp.

Referenced by appLogic(), checkSetup(), and recordParams().

◆ m_C2vpp

double MagAOX::app::siglentSDG::m_C2vpp {0}
protected

The peak-2-peak voltage of channel 2.

Definition at line 80 of file siglentSDG.hpp.

Referenced by changeOfst(), onPowerOff(), queryBSWV(), and recordParams().

◆ m_C2vpp_tgt

double MagAOX::app::siglentSDG::m_C2vpp_tgt {-1}
protected

Definition at line 91 of file siglentSDG.hpp.

Referenced by changeAmp(), changeFreq(), onPowerOff(), and queryBSWV().

◆ m_C2vppDefault

double MagAOX::app::siglentSDG::m_C2vppDefault {0}
protected

default value for vpp of channel 2

Definition at line 81 of file siglentSDG.hpp.

Referenced by loadConfig(), and normalizeSetup().

◆ m_C2wdth

double MagAOX::app::siglentSDG::m_C2wdth {0}
protected

The width of channel 2 (PULSE only)

Definition at line 84 of file siglentSDG.hpp.

Referenced by queryBSWV(), and recordParams().

◆ m_C2wvtp

std::string MagAOX::app::siglentSDG::m_C2wvtp
protected

The wave type of channel 2.

Definition at line 85 of file siglentSDG.hpp.

Referenced by onPowerOff(), queryBSWV(), and recordParams().

◆ m_calibDir

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_calibDir
protectedinherited

The path to calibration files for MagAOX.

Definition at line 89 of file MagAOXApp.hpp.

◆ m_configBase

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_configBase
protectedinherited

The name of a base config class for this app (minus .conf).

Definition at line 87 of file MagAOXApp.hpp.

◆ m_configDir

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_configDir
protectedinherited

The path to configuration files for MagAOX.

Definition at line 85 of file MagAOXApp.hpp.

Referenced by MagAOX::app::ocam2KCtrl::configureAcquisition().

◆ m_configName

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_configName
protectedinherited

◆ m_cpusetPath

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_cpusetPath { MAGAOX_cpusetPath }
protectedinherited

Definition at line 424 of file MagAOXApp.hpp.

◆ m_deviceAddr

std::string MagAOX::app::siglentSDG::m_deviceAddr
protected

The device address.

Definition at line 48 of file siglentSDG.hpp.

Referenced by appLogic(), and loadConfig().

◆ m_devicePort

std::string MagAOX::app::siglentSDG::m_devicePort
protected

The device port.

Definition at line 49 of file siglentSDG.hpp.

Referenced by appLogic(), and loadConfig().

◆ m_driverCtrlName

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_driverCtrlName
protectedinherited

Full path name of the INDI driver control FIFO.

This is currently only used to signal restarts.

Definition at line 593 of file MagAOXApp.hpp.

◆ m_driverInName

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_driverInName
protectedinherited

Full path name of the INDI driver input FIFO.

Definition at line 585 of file MagAOXApp.hpp.

◆ m_driverOutName

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_driverOutName
protectedinherited

Full path name of the INDI driver output FIFO.

Definition at line 588 of file MagAOXApp.hpp.

◆ m_euidCalled

template<bool _useINDI = true>
uid_t MagAOX::app::MagAOXApp< _useINDI >::m_euidCalled
privateinherited

The user id of the process as called (i.e. the higher privileged id of the owner, root if setuid).

Definition at line 314 of file MagAOXApp.hpp.

◆ m_euidReal

template<bool _useINDI = true>
uid_t MagAOX::app::MagAOXApp< _useINDI >::m_euidReal
privateinherited

The real user id of the proces (i.e. the lower privileged id of the user)

Definition at line 313 of file MagAOXApp.hpp.

◆ m_gitAlert

template<bool _useINDI = true>
bool MagAOX::app::MagAOXApp< _useINDI >::m_gitAlert { false }
privateinherited

Definition at line 478 of file MagAOXApp.hpp.

◆ m_indiDriver

template<bool _useINDI = true>
indiDriver<MagAOXApp>* MagAOX::app::MagAOXApp< _useINDI >::m_indiDriver { nullptr }
inherited

The INDI driver wrapper. Constructed and initialized by execute, which starts and stops communications.

Todo:
instead of making this public, provide an accessor.

Definition at line 542 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picoMotorCtrl::appLogic(), MagAOX::app::smc100ccCtrl::appLogic(), MagAOX::app::zaberCtrl::appLogic(), MagAOX::app::streamWriter::updateINDI(), and MagAOX::app::magAOXMaths::updateVals().

◆ m_indiMutex

template<bool _useINDI = true>
std::mutex MagAOX::app::MagAOXApp< _useINDI >::m_indiMutex
inherited

Mutex for locking INDI communications.

Definition at line 545 of file MagAOXApp.hpp.

Referenced by MagAOX::app::acronameUsbHub::appLogic(), MagAOX::app::andorCtrl::appLogic(), MagAOX::app::cameraSim::appLogic(), MagAOX::app::filterWheelCtrl::appLogic(), MagAOX::app::hsfwCtrl::appLogic(), MagAOX::app::ocam2KCtrl::appLogic(), MagAOX::app::picamCtrl::appLogic(), MagAOX::app::picoMotorCtrl::appLogic(), appLogic(), MagAOX::app::smc100ccCtrl::appLogic(), MagAOX::app::trippLitePDU::appLogic(), MagAOX::app::ttmModulator::appLogic(), MagAOX::app::xt1121Ctrl::appLogic(), MagAOX::app::xt1121DCDU::appLogic(), MagAOX::app::zaberCtrl::appLogic(), MagAOX::app::zylaCtrl::appLogic(), changeAmp(), changeFreq(), changeOfst(), changeOutp(), changePhse(), changeSync(), changeWdth(), changeWvtp(), MagAOX::app::xt1121Ctrl::channelSetCallback(), MagAOX::app::andorCtrl::configureAcquisition(), MagAOX::app::ocam2KCtrl::configureAcquisition(), MagAOX::app::picamCtrl::configureAcquisition(), MagAOX::app::qhyCtrl::configureAcquisition(), MagAOX::app::zylaCtrl::configureAcquisition(), MagAOX::app::INDI_NEWCALLBACK_DEFN(), MagAOX::app::picoMotorCtrl::newCallBack_picopos(), MagAOX::app::picoMotorCtrl::newCallBack_presetName(), MagAOX::app::acronameUsbHub::onPowerOff(), MagAOX::app::andorCtrl::onPowerOff(), MagAOX::app::ocam2KCtrl::onPowerOff(), MagAOX::app::picamCtrl::onPowerOff(), onPowerOff(), MagAOX::app::xt1121Ctrl::onPowerOff(), MagAOX::app::zylaCtrl::onPowerOff(), MagAOX::app::filterWheelCtrl::onPowerOnConnect(), MagAOX::app::ocam2KCtrl::reconfig(), MagAOX::app::zylaCtrl::reconfig(), MagAOX::app::filterWheelCtrl::stop(), MagAOX::app::trippLitePDU::turnOutletOff(), MagAOX::app::xt1121DCDU::turnOutletOff(), MagAOX::app::trippLitePDU::turnOutletOn(), MagAOX::app::xt1121DCDU::turnOutletOn(), MagAOX::app::ocam2KCtrl::whilePowerOff(), and MagAOX::app::zylaCtrl::whilePowerOff().

◆ m_indiNewCallBacks

template<bool _useINDI = true>
std::unordered_map<std::string, indiCallBack> MagAOX::app::MagAOXApp< _useINDI >::m_indiNewCallBacks
protectedinherited

Map to hold the NewProperty indiCallBacks for this App, with fast lookup by property name.

The key for these is the property name.

Definition at line 573 of file MagAOXApp.hpp.

◆ m_indiP_C1amp

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1amp
protected

Definition at line 385 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1ampvrms

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1ampvrms
protected

Definition at line 386 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1freq

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1freq
protected

Definition at line 383 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1hlev

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1hlev
protected

Definition at line 388 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1llev

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1llev
protected

Definition at line 389 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1ofst

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1ofst
protected

Definition at line 387 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1outp

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1outp
protected

Definition at line 381 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryOUTP().

◆ m_indiP_C1peri

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1peri
protected

Definition at line 384 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1phse

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1phse
protected

Definition at line 390 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1sync

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1sync
protected

Definition at line 392 of file siglentSDG.hpp.

Referenced by appLogic(), appStartup(), and onPowerOff().

◆ m_indiP_C1wdth

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1wdth
protected

Definition at line 391 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C1wvtp

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C1wvtp
protected

Definition at line 382 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2amp

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2amp
protected

Definition at line 398 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2ampvrms

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2ampvrms
protected

Definition at line 399 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2freq

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2freq
protected

Definition at line 396 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2hlev

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2hlev
protected

Definition at line 401 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2llev

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2llev
protected

Definition at line 402 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2ofst

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2ofst
protected

Definition at line 400 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2outp

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2outp
protected

Definition at line 394 of file siglentSDG.hpp.

Referenced by appStartup(), and queryOUTP().

◆ m_indiP_C2peri

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2peri
protected

Definition at line 397 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2phse

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2phse
protected

Definition at line 403 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2sync

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2sync
protected

Definition at line 405 of file siglentSDG.hpp.

Referenced by appLogic(), appStartup(), and onPowerOff().

◆ m_indiP_C2wdth

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2wdth
protected

Definition at line 404 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_C2wvtp

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_C2wvtp
protected

Definition at line 395 of file siglentSDG.hpp.

Referenced by appStartup(), onPowerOff(), and queryBSWV().

◆ m_indiP_clearFSMAlert

template<bool _useINDI = true>
pcf::IndiProperty MagAOX::app::MagAOXApp< _useINDI >::m_indiP_clearFSMAlert
protectedinherited

indi Property to clear an FSM alert.

Definition at line 980 of file MagAOXApp.hpp.

◆ m_indiP_powerChannel

template<bool _useINDI = true>
pcf::IndiProperty MagAOX::app::MagAOXApp< _useINDI >::m_indiP_powerChannel
protectedinherited

INDI property used to communicate power state.

Definition at line 1036 of file MagAOXApp.hpp.

◆ m_indiP_state

template<bool _useINDI = true>
pcf::IndiProperty MagAOX::app::MagAOXApp< _useINDI >::m_indiP_state
protectedinherited

indi Property to report the application state.

Definition at line 977 of file MagAOXApp.hpp.

◆ m_indiP_status

pcf::IndiProperty MagAOX::app::siglentSDG::m_indiP_status
protected

Definition at line 379 of file siglentSDG.hpp.

Referenced by appStartup().

◆ m_indiSetCallBacks

template<bool _useINDI = true>
std::unordered_map<std::string, indiCallBack> MagAOX::app::MagAOXApp< _useINDI >::m_indiSetCallBacks
protectedinherited

Map to hold the SetProperty indiCallBacks for this App, with fast lookup by property name.

The key for these is device.name

Definition at line 578 of file MagAOXApp.hpp.

◆ m_log

template<bool _useINDI>
MagAOXApp< _useINDI >::logManagerT MagAOX::app::MagAOXApp< _useINDI >::m_log
staticinherited

Definition at line 237 of file MagAOXApp.hpp.

◆ m_loopPause

template<bool _useINDI = true>
unsigned long MagAOX::app::MagAOXApp< _useINDI >::m_loopPause { MAGAOX_default_loopPause }
protectedinherited

The time in nanoseconds to pause the main loop. The appLogic() function of the derived class is called every m_loopPause nanoseconds. Default is 1,000,000,000 ns. Config with loopPause=X.

Definition at line 95 of file MagAOXApp.hpp.

Referenced by MagAOX::app::trippLitePDU::trippLitePDU(), appLogic(), and MagAOX::app::xt1121Ctrl::appLogic().

◆ m_maxAmp

std::vector<double> MagAOX::app::siglentSDG::m_maxAmp = {1.2801, 1.2801, 1.0201}
private

Definition at line 39 of file siglentSDG.hpp.

Referenced by changeAmp(), and changeFreq().

◆ m_maxFreq

std::vector<double> MagAOX::app::siglentSDG::m_maxFreq = {0.0, 2000, 3000}
private

Definition at line 40 of file siglentSDG.hpp.

Referenced by changeAmp(), and changeFreq().

◆ m_maxInterval

double MagAOX::app::dev::telemeter< siglentSDG >::m_maxInterval
inherited

The maximum interval, in seconds, between telemetry records. Default is 10.0 seconds.

Definition at line 75 of file telemeter.hpp.

◆ m_pid

template<bool _useINDI = true>
pid_t MagAOX::app::MagAOXApp< _useINDI >::m_pid { 0 }
protectedinherited

This process's PID.

Definition at line 394 of file MagAOXApp.hpp.

◆ m_powerChannel

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_powerChannel
protectedinherited

The INDI property name of the channel controlling this device's power.

Definition at line 1022 of file MagAOXApp.hpp.

◆ m_powerDevice

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_powerDevice
protectedinherited

The INDI device name of the power controller.

Definition at line 1021 of file MagAOXApp.hpp.

◆ m_poweredOn

bool MagAOX::app::siglentSDG::m_poweredOn {false}
private

Definition at line 98 of file siglentSDG.hpp.

Referenced by appLogic().

◆ m_powerElement

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_powerElement { "state" }
protectedinherited

The INDI element name to monitor for this device's power state.

Definition at line 1023 of file MagAOXApp.hpp.

◆ m_powerMgtEnabled

◆ m_powerOnCounter

double MagAOX::app::siglentSDG::m_powerOnCounter {0}
private

Counts the number of loops since power-on, used to control logging of connect failures.

Definition at line 100 of file siglentSDG.hpp.

Referenced by appLogic().

◆ m_powerOnWait

template<bool _useINDI = true>
unsigned long MagAOX::app::MagAOXApp< _useINDI >::m_powerOnWait { 0 }
protectedinherited

Time in sec to wait for device to boot after power on.

Definition at line 1026 of file MagAOXApp.hpp.

Referenced by MagAOX::app::andorCtrl::andorCtrl(), MagAOX::app::ocam2KCtrl::ocam2KCtrl(), MagAOX::app::smc100ccCtrl::smc100ccCtrl(), and MagAOX::app::zylaCtrl::zylaCtrl().

◆ m_powerState

◆ m_powerTargetElement

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::m_powerTargetElement { "target" }
protectedinherited

The INDI element name to monitor for this device's power state.

Definition at line 1024 of file MagAOXApp.hpp.

◆ m_powerTargetState

◆ m_readTimeOut

int MagAOX::app::siglentSDG::m_readTimeOut {10000}
protected

The timeout for reading from the device [msec].

Definition at line 54 of file siglentSDG.hpp.

Referenced by appLogic(), loadConfig(), writeCommand(), and writeRead().

◆ m_self

template<bool _useINDI>
MagAOXApp< _useINDI > * MagAOX::app::MagAOXApp< _useINDI >::m_self = nullptr
staticprivateinherited

Static pointer to this (set in constructor). Used to test whether a a MagAOXApp is already instatiated (a fatal error) and used for getting out of static signal handlers.

Definition at line 289 of file MagAOXApp.hpp.

◆ m_shutdown

◆ m_state

template<bool _useINDI = true>
stateCodes::stateCodeT MagAOX::app::MagAOXApp< _useINDI >::m_state { stateCodes::UNINITIALIZED }
privateinherited

The application's state. Never ever set this directly, use state(const stateCodeT & s).

Definition at line 472 of file MagAOXApp.hpp.

◆ m_stateAlert

template<bool _useINDI = true>
bool MagAOX::app::MagAOXApp< _useINDI >::m_stateAlert { false }
privateinherited

Definition at line 475 of file MagAOXApp.hpp.

◆ m_stateLogged

template<bool _useINDI = true>
int MagAOX::app::MagAOXApp< _useINDI >::m_stateLogged { 0 }
privateinherited

Counter and flag for use to log errors just once. Never ever access directly, use stateLogged().

Definition at line 480 of file MagAOXApp.hpp.

◆ m_suid

template<bool _useINDI = true>
uid_t MagAOX::app::MagAOXApp< _useINDI >::m_suid
privateinherited

The save-set user id of the process.

Definition at line 316 of file MagAOXApp.hpp.

◆ m_tel

Definition at line 73 of file telemeter.hpp.

◆ m_telnetConn

tty::telnetConn MagAOX::app::siglentSDG::m_telnetConn
protected

The telnet connection manager.

Definition at line 64 of file siglentSDG.hpp.

Referenced by siglentSDG(), appLogic(), writeCommand(), and writeRead().

◆ m_useINDI

template<bool _useINDI = true>
constexpr static bool MagAOX::app::MagAOXApp< _useINDI >::m_useINDI = _useINDI
staticconstexprprotectedinherited

Flag controlling whether INDI is used. If false, then no INDI code executes.

Definition at line 537 of file MagAOXApp.hpp.

◆ m_waveform

std::string MagAOX::app::siglentSDG::m_waveform
protected

The chosen funciton to generate

Definition at line 66 of file siglentSDG.hpp.

Referenced by appStartup(), changeAmp(), changeFreq(), changePhse(), changeWdth(), loadConfig(), normalizeSetup(), onPowerOff(), and queryBSWV().

◆ m_writeTimeOut

int MagAOX::app::siglentSDG::m_writeTimeOut {10000}
protected

The timeout for writing to the device [msec].

Definition at line 53 of file siglentSDG.hpp.

Referenced by appLogic(), loadConfig(), writeCommand(), and writeRead().

◆ MagAOXPath

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::MagAOXPath
protectedinherited

The base path of the MagAO-X system.

Definition at line 81 of file MagAOXApp.hpp.

Referenced by MagAOX::app::streamWriter::loadConfig().

◆ pidFileName

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::pidFileName
protectedinherited

The name of the PID file.

Definition at line 392 of file MagAOXApp.hpp.

◆ secretsPath

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::secretsPath
protectedinherited

Path to the secrets directory, where passwords, etc, are stored.

Definition at line 93 of file MagAOXApp.hpp.

◆ sysPath

template<bool _useINDI = true>
std::string MagAOX::app::MagAOXApp< _useINDI >::sysPath
protectedinherited

The path to the system directory, for PID file, etc.

Definition at line 91 of file MagAOXApp.hpp.

Referenced by MagAOX::app::picoMotorCtrl::readChannelCounts(), and MagAOX::app::picoMotorCtrl::writeChannelCounts().


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