API
MagAOX::app::dev::dmPokeWFS< derivedT > Class Template Reference

A base class to coordinate poking a deformable mirror's actuators and synchronizedreads of a camera image. More...

#include <dmPokeWFS.hpp>

Collaboration diagram for MagAOX::app::dev::dmPokeWFS< derivedT >:
Collaboration graph

Classes

struct  darkShmimT
 
struct  wfsShmimT
 

Public Member Functions

MagAOXApp Interface
int setupConfig (mx::app::appConfigurator &config)
 Setup the configuration system. More...
 
int loadConfig (mx::app::appConfigurator &config)
 load the configuration system results More...
 
int appStartup ()
 Startup function. More...
 
int appLogic ()
 dmPokeWFS application logic More...
 
int appShutdown ()
 dmPokeWFS shutdown More...
 
shmimMonitor Interface
int allocate (const wfsShmimT &)
 
int processImage (void *curr_src, const wfsShmimT &)
 
darkShmimMonitor Interface
int allocate (const darkShmimT &)
 
int processImage (void *curr_src, const darkShmimT &)
 

Protected Member Functions

int basicTimedPoke (float pokeSign)
 Apply a single DM poke pattern and record the results. More...
 
int basicRunSensor ()
 Run the basic +/- poke sensor steps. More...
 
int updateMeasurement (float deltaX, float deltaY)
 
Telemeter Interface
int recordTelem (const telem_pokeloop *)
 
int recordPokeLoop (bool force=false)
 

Protected Attributes

std::mutex m_wfsImageMutex
 
mx::improc::milkImage< float > m_rawImage
 
mx::improc::milkImage< float > m_pokeImage
 
mx::improc::eigenImage< float > m_pokeLocal
 
float(* wfsPixget )(void *, size_t)
 
float m_wfsFps {-1}
 Pointer to a function to extract the image data as float. More...
 
mx::improc::eigenImage< float > m_darkImage
 The dark image. More...
 
bool m_darkValid {false}
 Flag indicating if dark is valid based on its size. More...
 
float(* darkPixget )(void *, size_t)
 
mx::improc::milkImage< float > m_dmStream
 Pointer to a function to extract the dark image data as float. More...
 
mx::improc::eigenImage< float > m_dmImage
 
float m_deltaX {0}
 
float m_deltaY {0}
 
uint64_t m_counter {0}
 
sem_t m_imageSemaphore
 Semaphore used to signal that an image is ready. More...
 
unsigned m_imageSemWait_sec {1}
 The timeout for the image semaphore, seconds component. More...
 
unsigned m_imageSemWait_nsec {0}
 The timeout for the image semaphore, nanoseconds component. More...
 
Configurable Parameters
std::string m_wfsCamDevName
 INDI device name of the WFS camera. Default is wfscam.shmimName. More...
 
double m_wfsSemWait {1.5}
 The time in sec to wait on the WFS semaphore. Default 0.5 sec. More...
 
double m_imageSemWait {0.5}
 The time in sec to wait on the image semaphore. Default 0.5 sec. More...
 
unsigned m_nPokeImages {5}
 The number of images to average for the poke images. Default is 5. More...
 
unsigned m_nPokeAverage {10}
 The number of poke sequences to average. Default is 10. More...
 
std::string m_dmChan
 
std::vector< int > m_poke_x
 
std::vector< int > m_poke_y
 
float m_poke_amp {0.0}
 
float m_dmSleep {10000}
 The time to sleep for the DM command to be applied, in microseconds. Default is 10000. More...
 

Private Member Functions

derivedT & derived ()
 

WFS Thread

This thread coordinates the WFS process

int m_wfsThreadPrio {1}
 Priority of the WFS thread, should normally be > 00. More...
 
std::string m_wfsCpuset
 The cpuset for the framegrabber thread. Ignored if empty (the default). More...
 
std::thread m_wfsThread
 A separate thread for the actual WFSing. More...
 
bool m_wfsThreadInit {true}
 Synchronizer to ensure wfs thread initializes before doing dangerous things. More...
 
pid_t m_wfsThreadID {0}
 WFS thread PID. More...
 
pcf::IndiProperty m_wfsThreadProp
 The property to hold the WFS thread details. More...
 
sem_t m_wfsSemaphore
 Semaphore used to signal the WFS thread to start WFSing. More...
 
unsigned m_wfsSemWait_sec {1}
 The timeout for the WFS semaphore, seconds component. More...
 
unsigned m_wfsSemWait_nsec {0}
 The timeoutfor the WFS semaphore, nanoseconds component. More...
 
int m_measuring {0}
 Status of measuring: 0 no, 1 single in progress, 2 continuous in progress. More...
 
bool m_single {false}
 True a single measurement is in progress. More...
 
bool m_continuous {false}
 True if continuous measurements are in progress. More...
 
bool m_stopMeasurement {false}
 Used to request that the measurement in progress stop. More...
 
static void wfsThreadStart (dmPokeWFS *s)
 Thread starter, called by wfsThreadStart on thread construction. Calls wfsThreadExec. More...
 
void wfsThreadExec ()
 Execute the frame grabber main loop. More...
 

INDI Interface

pcf::IndiProperty m_indiP_poke_amp
 
pcf::IndiProperty m_indiP_nPokeImages
 
pcf::IndiProperty m_indiP_nPokeAverage
 
pcf::IndiProperty m_indiP_wfsFps
 Property to get the FPS from the WFS camera. More...
 
pcf::IndiProperty m_indiP_single
 Switch to start a single measurement. More...
 
pcf::IndiProperty m_indiP_continuous
 Switch to start continuous measurement. More...
 
pcf::IndiProperty m_indiP_stop
 Switch to request that measurement stop. More...
 
pcf::IndiProperty m_indiP_measurement
 Property to report the delta measurement, including the loop counter. More...
 
 INDI_NEWCALLBACK_DECL (derivedT, m_indiP_poke_amp)
 
 INDI_NEWCALLBACK_DECL (derivedT, m_indiP_nPokeImages)
 
 INDI_NEWCALLBACK_DECL (derivedT, m_indiP_nPokeAverage)
 
 INDI_SETCALLBACK_DECL (derivedT, m_indiP_wfsFps)
 
 INDI_NEWCALLBACK_DECL (derivedT, m_indiP_single)
 
 INDI_NEWCALLBACK_DECL (derivedT, m_indiP_continuous)
 
 INDI_NEWCALLBACK_DECL (derivedT, m_indiP_stop)
 

Detailed Description

template<class derivedT>
class MagAOX::app::dev::dmPokeWFS< derivedT >

A base class to coordinate poking a deformable mirror's actuators and synchronizedreads of a camera image.

CRTP class derivedT has the following requirements:

  • Must be derived from MagAOXApp<true>
  • Must be derived from dev::shmimMonitor<DERIVEDNAME, dev::dmPokeWFS<DERIVEDNAME>wfsShmimT> (replace DERIVEDNAME with derivedT class name)
  • Must be derived from dev::shmimMonitor<DERIVEDNAME, dev::dmPokeWFS<DERIVEDNAME>::darkShmimT> (replace DERIVEDNAME with derivedT class name)
  • Must contain the following friend declarations (replace DERIVEDNAME with derivedT class name):
    friend class dev::shmimMonitor<DERIVEDNAME, dev::dmPokeWFS<DERIVEDNAME>::wfsShmimT>;
    friend class dev::shmimMonitor<DERIVEDNAME, dev::dmPokeWFS<DERIVEDNAME>::darkShmimT>;
    friend class dev::dmPokeWFS<DERIVEDNAME>
  • Must contain the following typedefs (replace DERIVEDNAME with derivedT class name):
    typedef dev::shmimMonitor<DERIVEDNAME, dev::dmPokeWFS<DERIVEDNAME>::wfsShmimT> shmimMonitorT;
    typedef dev::shmimMonitor<DERIVEDNAME, dev::dmPokeWFS<DERIVEDNAME>::darkShmimT> darkShmimMonitorT;
    typedef dev::dmPokeWFS<DERIVEDNAME> dmPokeWFST;
  • Must provide the following interfaces:
    shmimMonitorT & shmimMonitor()
    {
    return *static_cast<shmimMonitorT *>(this);
    }
    darkShmimMonitorT & darkShmimMonitor()
    {
    return *static_cast<darkShmimMonitorT *>(this);
    }
  • If derivedT has additional shmimMonitor parents, you will need to include these lines in the class declaration:
    using dmPokeWFST::allocate;
    using dmPokeWFST::processImage;
  • Must provide the following interface:
    // Run the sensor steps
    // Coordinates the actions of poking and collecting images.
    // Upon completion this calls runSensor. If \p firstRun == true, one time
    // actions such as taking a dark can be executed.
    //
    // returns 0 on success
    // returns < 0 on an error
    int runSensor(bool firstRun ///< [in] flag indicating this is the first call. triggers taking a dark if true.
    );
  • Must provide the following interface:
    // Analyze the poke image
    // This analyzes the resulting poke images.
    //
    // returns 0 on success
    // returns < 0 on an error
    int analyzeSensor();
    At the conclusion of analyzeSensor the measured signal (e.g. deltaX and deltaY) should be updated and set in m_indiP_measurement. The function updateMeasurement() can be used for this. However, the updating of the loop counter and the subsequent INDI property update is handled automatically after that.
  • Must be a telemeter with the following interface:
    • Must be derived from dev::telemeter<DERIVEDNAME> (replace DERIVEDNAME with derivedT class name) and meet the requirements of dev::telemeter
    • In the function derivedT::checkRecordTimes() required by dev::telemeter, the telem_pokeloop type must be checked. The minimum derivedT::checkRecordTimes() is:
      int checkRecordTimes()
      {
      return telemeterT::checkRecordTimes(telem_pokeloop());
      }
  • Must call this base class's setupConfig(), loadConfig(), appStartup(), appStartup(), and appShutdown() in the appropriate functions. For convenience the following macros are defined to provide error checking:
    #define DMPOKEWFS_APP_SHUTDOWN
    Call dmPokeWFS::appShutdown with error checking.
    Definition: dmPokeWFS.hpp:1238
    #define DMPOKEWFS_APP_STARTUP
    Call dmPokeWFS::appStartup with error checking.
    Definition: dmPokeWFS.hpp:1224
    #define DMPOKEWFS_SETUP_CONFIG(cfig)
    Call dmPokeWFS::setupConfig with error checking.
    Definition: dmPokeWFS.hpp:1205
    #define DMPOKEWFS_LOAD_CONFIG(cfig)
    Call dmPokeWFS::loadConfig with error checking.
    Definition: dmPokeWFS.hpp:1217
    #define DMPOKEWFS_APP_LOGIC
    Call dmPokeWFS::appLogic with error checking.
    Definition: dmPokeWFS.hpp:1231

Definition at line 136 of file dmPokeWFS.hpp.

Member Function Documentation

◆ allocate() [1/2]

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::allocate ( const darkShmimT dummy)
Parameters
[in]dummytag to differentiate shmimMonitor parents.

Definition at line 744 of file dmPokeWFS.hpp.

◆ allocate() [2/2]

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::allocate ( const wfsShmimT dummy)
Parameters
[in]dummytag to differentiate shmimMonitor parents.

Definition at line 662 of file dmPokeWFS.hpp.

◆ appLogic()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::appLogic

dmPokeWFS application logic

This should be called in derivedT::appLogic as

with appropriate error checking.

Returns
0 on success
-1 on error, which is logged.

Definition at line 571 of file dmPokeWFS.hpp.

◆ appShutdown()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::appShutdown

dmPokeWFS shutdown

This should be called in derivedT::appShutdown as

with appropriate error checking.

Returns
0 on success
-1 on error, which is logged.

Definition at line 634 of file dmPokeWFS.hpp.

◆ appStartup()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::appStartup

Startup function.

This should be called in derivedT::appStartup as

with appropriate error checking.

Returns
0 on success
-1 on error, which is logged.

Definition at line 515 of file dmPokeWFS.hpp.

◆ basicRunSensor()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::basicRunSensor
protected

Run the basic +/- poke sensor steps.

Coordinates the actions of poking and collecting images.

This can be called from the derived class runSensor.

Returns
+1 if exit is due to shutdown or stop request
0 if no error
-1 if an error occurs

Definition at line 944 of file dmPokeWFS.hpp.

◆ basicTimedPoke()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::basicTimedPoke ( float  pokeSign)
protected

Apply a single DM poke pattern and record the results.

This accumulates m_nPokeImages*m_nPokeAverage images in m_pokeLocal, so m_pokeLocal should be zeroed before the first call to this (e.g. for a +1 poke), but not zeroed before the second call (e.g. for the -1 poke). You also need to 0 the DM after finishing a poke pair. See basicRunSensor() for how to use.

Returns
+1 if exit is due to shutdown or stop request
0 if no error
-1 if an error occurs
Parameters
[in]pokeSignthe sign, and possibly a scaling, to apply to m_pokeAmplitude

Definition at line 885 of file dmPokeWFS.hpp.

◆ derived()

template<class derivedT >
derivedT& MagAOX::app::dev::dmPokeWFS< derivedT >::derived ( )
inlineprivate

Definition at line 426 of file dmPokeWFS.hpp.

◆ INDI_NEWCALLBACK_DECL() [1/6]

template<class derivedT >
MagAOX::app::dev::dmPokeWFS< derivedT >::INDI_NEWCALLBACK_DECL ( derivedT  ,
m_indiP_continuous   
)
protected

◆ INDI_NEWCALLBACK_DECL() [2/6]

template<class derivedT >
MagAOX::app::dev::dmPokeWFS< derivedT >::INDI_NEWCALLBACK_DECL ( derivedT  ,
m_indiP_nPokeAverage   
)
protected

◆ INDI_NEWCALLBACK_DECL() [3/6]

template<class derivedT >
MagAOX::app::dev::dmPokeWFS< derivedT >::INDI_NEWCALLBACK_DECL ( derivedT  ,
m_indiP_nPokeImages   
)
protected

◆ INDI_NEWCALLBACK_DECL() [4/6]

template<class derivedT >
MagAOX::app::dev::dmPokeWFS< derivedT >::INDI_NEWCALLBACK_DECL ( derivedT  ,
m_indiP_poke_amp   
)
protected

◆ INDI_NEWCALLBACK_DECL() [5/6]

template<class derivedT >
MagAOX::app::dev::dmPokeWFS< derivedT >::INDI_NEWCALLBACK_DECL ( derivedT  ,
m_indiP_single   
)
protected

◆ INDI_NEWCALLBACK_DECL() [6/6]

template<class derivedT >
MagAOX::app::dev::dmPokeWFS< derivedT >::INDI_NEWCALLBACK_DECL ( derivedT  ,
m_indiP_stop   
)
protected

◆ INDI_SETCALLBACK_DECL()

template<class derivedT >
MagAOX::app::dev::dmPokeWFS< derivedT >::INDI_SETCALLBACK_DECL ( derivedT  ,
m_indiP_wfsFps   
)
protected

◆ loadConfig()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::loadConfig ( mx::app::appConfigurator &  config)

load the configuration system results

This should be called in derivedT::loadConfig as

int loadConfig(mx::app::appConfigurator &config)
load the configuration system results
Definition: dmPokeWFS.hpp:466

with appropriate error checking.

Parameters
[in]configan application configuration from which to load values

Definition at line 466 of file dmPokeWFS.hpp.

◆ processImage() [1/2]

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::processImage ( void *  curr_src,
const darkShmimT dummy 
)
Parameters
[in]curr_srcpointer to the start of the current frame
[in]dummytag to differentiate shmimMonitor parents.

Definition at line 770 of file dmPokeWFS.hpp.

◆ processImage() [2/2]

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::processImage ( void *  curr_src,
const wfsShmimT dummy 
)
Parameters
[in]curr_srcpointer to the start of the current frame
[in]dummytag to differentiate shmimMonitor parents.

Definition at line 704 of file dmPokeWFS.hpp.

◆ recordPokeLoop()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::recordPokeLoop ( bool  force = false)
protected

Definition at line 1180 of file dmPokeWFS.hpp.

◆ recordTelem()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::recordTelem ( const telem_pokeloop *  )
protected

Definition at line 1174 of file dmPokeWFS.hpp.

◆ setupConfig()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::setupConfig ( mx::app::appConfigurator &  config)

Setup the configuration system.

This should be called in derivedT::setupConfig as

int setupConfig(mx::app::appConfigurator &config)
Setup the configuration system.
Definition: dmPokeWFS.hpp:434

with appropriate error checking.

Parameters
[in]configan application configuration to load values to

Definition at line 434 of file dmPokeWFS.hpp.

◆ updateMeasurement()

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::updateMeasurement ( float  deltaX,
float  deltaY 
)
protected

Definition at line 1015 of file dmPokeWFS.hpp.

◆ wfsThreadExec()

template<class derivedT >
void MagAOX::app::dev::dmPokeWFS< derivedT >::wfsThreadExec
protected

Execute the frame grabber main loop.

Definition at line 797 of file dmPokeWFS.hpp.

Referenced by MagAOX::app::dev::dmPokeWFS< derivedT >::wfsThreadStart().

◆ wfsThreadStart()

template<class derivedT >
void MagAOX::app::dev::dmPokeWFS< derivedT >::wfsThreadStart ( dmPokeWFS< derivedT > *  s)
staticprotected

Thread starter, called by wfsThreadStart on thread construction. Calls wfsThreadExec.

Parameters
[in]sa pointer to an streamWriter instance (normally this)

Definition at line 791 of file dmPokeWFS.hpp.

Member Data Documentation

◆ darkPixget

template<class derivedT >
float(* MagAOX::app::dev::dmPokeWFS< derivedT >::darkPixget) (void *, size_t)
inlineprotected

Definition at line 209 of file dmPokeWFS.hpp.

◆ m_continuous

template<class derivedT >
bool MagAOX::app::dev::dmPokeWFS< derivedT >::m_continuous {false}
protected

True if continuous measurements are in progress.

Definition at line 343 of file dmPokeWFS.hpp.

◆ m_counter

template<class derivedT >
uint64_t MagAOX::app::dev::dmPokeWFS< derivedT >::m_counter {0}
protected

Definition at line 217 of file dmPokeWFS.hpp.

◆ m_darkImage

template<class derivedT >
mx::improc::eigenImage<float> MagAOX::app::dev::dmPokeWFS< derivedT >::m_darkImage
protected

The dark image.

Definition at line 205 of file dmPokeWFS.hpp.

◆ m_darkValid

template<class derivedT >
bool MagAOX::app::dev::dmPokeWFS< derivedT >::m_darkValid {false}
protected

Flag indicating if dark is valid based on its size.

Definition at line 207 of file dmPokeWFS.hpp.

◆ m_deltaX

template<class derivedT >
float MagAOX::app::dev::dmPokeWFS< derivedT >::m_deltaX {0}
protected

Definition at line 215 of file dmPokeWFS.hpp.

◆ m_deltaY

template<class derivedT >
float MagAOX::app::dev::dmPokeWFS< derivedT >::m_deltaY {0}
protected

Definition at line 216 of file dmPokeWFS.hpp.

◆ m_dmChan

template<class derivedT >
std::string MagAOX::app::dev::dmPokeWFS< derivedT >::m_dmChan
protected

Definition at line 183 of file dmPokeWFS.hpp.

◆ m_dmImage

template<class derivedT >
mx::improc::eigenImage<float> MagAOX::app::dev::dmPokeWFS< derivedT >::m_dmImage
protected

Definition at line 213 of file dmPokeWFS.hpp.

◆ m_dmSleep

template<class derivedT >
float MagAOX::app::dev::dmPokeWFS< derivedT >::m_dmSleep {10000}
protected

The time to sleep for the DM command to be applied, in microseconds. Default is 10000.

Definition at line 190 of file dmPokeWFS.hpp.

◆ m_dmStream

template<class derivedT >
mx::improc::milkImage<float> MagAOX::app::dev::dmPokeWFS< derivedT >::m_dmStream
protected

Pointer to a function to extract the dark image data as float.

Definition at line 211 of file dmPokeWFS.hpp.

◆ m_imageSemaphore

template<class derivedT >
sem_t MagAOX::app::dev::dmPokeWFS< derivedT >::m_imageSemaphore
protected

Semaphore used to signal that an image is ready.

Definition at line 349 of file dmPokeWFS.hpp.

◆ m_imageSemWait

template<class derivedT >
double MagAOX::app::dev::dmPokeWFS< derivedT >::m_imageSemWait {0.5}
protected

The time in sec to wait on the image semaphore. Default 0.5 sec.

Definition at line 177 of file dmPokeWFS.hpp.

◆ m_imageSemWait_nsec

template<class derivedT >
unsigned MagAOX::app::dev::dmPokeWFS< derivedT >::m_imageSemWait_nsec {0}
protected

The timeout for the image semaphore, nanoseconds component.

Definition at line 353 of file dmPokeWFS.hpp.

◆ m_imageSemWait_sec

template<class derivedT >
unsigned MagAOX::app::dev::dmPokeWFS< derivedT >::m_imageSemWait_sec {1}
protected

The timeout for the image semaphore, seconds component.

Definition at line 351 of file dmPokeWFS.hpp.

◆ m_indiP_continuous

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_continuous
protected

Switch to start continuous measurement.

Definition at line 404 of file dmPokeWFS.hpp.

◆ m_indiP_measurement

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_measurement
protected

Property to report the delta measurement, including the loop counter.

Definition at line 410 of file dmPokeWFS.hpp.

◆ m_indiP_nPokeAverage

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_nPokeAverage
protected

Definition at line 395 of file dmPokeWFS.hpp.

◆ m_indiP_nPokeImages

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_nPokeImages
protected

Definition at line 392 of file dmPokeWFS.hpp.

◆ m_indiP_poke_amp

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_poke_amp
protected

Definition at line 389 of file dmPokeWFS.hpp.

◆ m_indiP_single

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_single
protected

Switch to start a single measurement.

Definition at line 401 of file dmPokeWFS.hpp.

◆ m_indiP_stop

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_stop
protected

Switch to request that measurement stop.

Definition at line 407 of file dmPokeWFS.hpp.

◆ m_indiP_wfsFps

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_indiP_wfsFps
protected

Property to get the FPS from the WFS camera.

Definition at line 398 of file dmPokeWFS.hpp.

◆ m_measuring

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::m_measuring {0}
protected

Status of measuring: 0 no, 1 single in progress, 2 continuous in progress.

Definition at line 339 of file dmPokeWFS.hpp.

◆ m_nPokeAverage

template<class derivedT >
unsigned MagAOX::app::dev::dmPokeWFS< derivedT >::m_nPokeAverage {10}
protected

The number of poke sequences to average. Default is 10.

Definition at line 181 of file dmPokeWFS.hpp.

◆ m_nPokeImages

template<class derivedT >
unsigned MagAOX::app::dev::dmPokeWFS< derivedT >::m_nPokeImages {5}
protected

The number of images to average for the poke images. Default is 5.

Definition at line 179 of file dmPokeWFS.hpp.

◆ m_poke_amp

template<class derivedT >
float MagAOX::app::dev::dmPokeWFS< derivedT >::m_poke_amp {0.0}
protected

Definition at line 188 of file dmPokeWFS.hpp.

◆ m_poke_x

template<class derivedT >
std::vector<int> MagAOX::app::dev::dmPokeWFS< derivedT >::m_poke_x
protected

Definition at line 185 of file dmPokeWFS.hpp.

◆ m_poke_y

template<class derivedT >
std::vector<int> MagAOX::app::dev::dmPokeWFS< derivedT >::m_poke_y
protected

Definition at line 186 of file dmPokeWFS.hpp.

◆ m_pokeImage

template<class derivedT >
mx::improc::milkImage<float> MagAOX::app::dev::dmPokeWFS< derivedT >::m_pokeImage
protected

Definition at line 198 of file dmPokeWFS.hpp.

◆ m_pokeLocal

template<class derivedT >
mx::improc::eigenImage<float> MagAOX::app::dev::dmPokeWFS< derivedT >::m_pokeLocal
protected

Definition at line 199 of file dmPokeWFS.hpp.

◆ m_rawImage

template<class derivedT >
mx::improc::milkImage<float> MagAOX::app::dev::dmPokeWFS< derivedT >::m_rawImage
protected

Definition at line 196 of file dmPokeWFS.hpp.

◆ m_single

template<class derivedT >
bool MagAOX::app::dev::dmPokeWFS< derivedT >::m_single {false}
protected

True a single measurement is in progress.

Definition at line 341 of file dmPokeWFS.hpp.

◆ m_stopMeasurement

template<class derivedT >
bool MagAOX::app::dev::dmPokeWFS< derivedT >::m_stopMeasurement {false}
protected

Used to request that the measurement in progress stop.

Definition at line 345 of file dmPokeWFS.hpp.

◆ m_wfsCamDevName

template<class derivedT >
std::string MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsCamDevName
protected

INDI device name of the WFS camera. Default is wfscam.shmimName.

Definition at line 173 of file dmPokeWFS.hpp.

◆ m_wfsCpuset

template<class derivedT >
std::string MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsCpuset
protected

The cpuset for the framegrabber thread. Ignored if empty (the default).

Definition at line 317 of file dmPokeWFS.hpp.

◆ m_wfsFps

template<class derivedT >
float MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsFps {-1}
protected

Pointer to a function to extract the image data as float.

The WFS camera FPS

Definition at line 203 of file dmPokeWFS.hpp.

◆ m_wfsImageMutex

template<class derivedT >
std::mutex MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsImageMutex
protected

Definition at line 194 of file dmPokeWFS.hpp.

◆ m_wfsSemaphore

template<class derivedT >
sem_t MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsSemaphore
protected

Semaphore used to signal the WFS thread to start WFSing.

Definition at line 333 of file dmPokeWFS.hpp.

◆ m_wfsSemWait

template<class derivedT >
double MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsSemWait {1.5}
protected

The time in sec to wait on the WFS semaphore. Default 0.5 sec.

Definition at line 175 of file dmPokeWFS.hpp.

◆ m_wfsSemWait_nsec

template<class derivedT >
unsigned MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsSemWait_nsec {0}
protected

The timeoutfor the WFS semaphore, nanoseconds component.

Definition at line 337 of file dmPokeWFS.hpp.

◆ m_wfsSemWait_sec

template<class derivedT >
unsigned MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsSemWait_sec {1}
protected

The timeout for the WFS semaphore, seconds component.

Definition at line 335 of file dmPokeWFS.hpp.

◆ m_wfsThread

template<class derivedT >
std::thread MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsThread
protected

A separate thread for the actual WFSing.

Definition at line 319 of file dmPokeWFS.hpp.

◆ m_wfsThreadID

template<class derivedT >
pid_t MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsThreadID {0}
protected

WFS thread PID.

Definition at line 323 of file dmPokeWFS.hpp.

◆ m_wfsThreadInit

template<class derivedT >
bool MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsThreadInit {true}
protected

Synchronizer to ensure wfs thread initializes before doing dangerous things.

Definition at line 321 of file dmPokeWFS.hpp.

◆ m_wfsThreadPrio

template<class derivedT >
int MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsThreadPrio {1}
protected

Priority of the WFS thread, should normally be > 00.

Definition at line 315 of file dmPokeWFS.hpp.

◆ m_wfsThreadProp

template<class derivedT >
pcf::IndiProperty MagAOX::app::dev::dmPokeWFS< derivedT >::m_wfsThreadProp
protected

The property to hold the WFS thread details.

Definition at line 325 of file dmPokeWFS.hpp.

◆ wfsPixget

template<class derivedT >
float(* MagAOX::app::dev::dmPokeWFS< derivedT >::wfsPixget) (void *, size_t)
inlineprotected

Definition at line 201 of file dmPokeWFS.hpp.


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