|
int | setupConfig (mx::app::appConfigurator &config) |
| Setup the configuration system.
|
|
int | loadConfig (mx::app::appConfigurator &config) |
| load the configuration system results
|
|
int | appStartup () |
| Startup function.
|
|
int | appLogic () |
| DM application logic.
|
|
int | appShutdown () |
| DM shutdown.
|
|
int | onPowerOff () |
| DM Poweroff.
|
|
int | whilePowerOff () |
| DM Poweroff Updates.
|
|
int | findDMChannels () |
| Find the DM comb channels.
|
|
int | allocate (const dev::shmimT &sp) |
| Called after shmimMonitor connects to the dmXXdisp stream. Checks for proper size.
|
|
int | processImage (void *curr_src, const dev::shmimT &sp) |
| Called by shmimMonitor when a new DM command is available. This is just a pass-through to derivedT::commandDM(char*).
|
|
int | releaseDM () |
| Calls derived()->releaseDM() and then 0s all channels and the sat map.
|
|
int | checkFlats () |
| Check the flats directory and update the list of flats if anything changes.
|
|
int | loadFlat (const std::string &target) |
| Load a flat file.
|
|
int | setFlat (bool update=false) |
| Send the current flat command to the DM.
|
|
int | zeroFlat () |
| Zero the flat command on the DM.
|
|
int | checkTests () |
| Check the tests directory and update the list of tests if anything changes.
|
|
int | loadTest (const std::string &target) |
| Load a test file.
|
|
int | setTest () |
| Send the current test command to the DM.
|
|
int | zeroTest () |
| Zero the test command on the DM.
|
|
int | zeroAll (bool nosem=false) |
| Zero all channels.
|
|
|
std::string | m_calibRelDir |
| The directory relative to the calibPath. Set this before calling dm<derivedT,realT>::loadConfig().
|
|
int | m_channels {0} |
| The number of dmcomb channels found as part of allocation.
|
|
std::map< std::string, std::string > | m_flatCommands |
| Map of flat file name to full path.
|
|
std::string | m_flatCurrent |
| The name of the current flat command.
|
|
mx::improc::eigenImage< realT > | m_flatCommand |
| Data storage for the flat command.
|
|
bool | m_flatLoaded {false} |
| Flag indicating whether a flat is loaded in memory.
|
|
IMAGE | m_flatImageStream |
| The ImageStreamIO shared memory buffer for the flat.
|
|
bool | m_flatSet {false} |
| Flag indicating whether the flat command has been set.
|
|
std::map< std::string, std::string > | m_testCommands |
| Map of test file name to full path.
|
|
std::string | m_testCurrent |
|
mx::improc::eigenImage< realT > | m_testCommand |
| Data storage for the test command.
|
|
bool | m_testLoaded {false} |
| Flag indicating whether a test command is loaded in memory.
|
|
IMAGE | m_testImageStream |
| The ImageStreamIO shared memory buffer for the test.
|
|
bool | m_testSet {false} |
| Flag indicating whether the test command has been set.
|
|
int | m_overSatAct {0} |
|
int | m_intervalSatExceeds {0} |
|
bool | m_intervalSatTrip {0} |
|
mx::improc::eigenImage< uint8_t > | m_instSatMap |
| The instantaneous saturation map, 0/1, set by the commandDM() function of the derived class.
|
|
mx::improc::eigenImage< uint16_t > | m_accumSatMap |
| The accumulated saturation map, which acccumulates for m_satAvgInt then is publised as a 0/1 image.
|
|
mx::improc::eigenImage< float > | m_satPercMap |
| Map of the percentage of time each actator was saturated during the avg. interval.
|
|
IMAGE | m_satImageStream |
| The ImageStreamIO shared memory buffer for the sat map.
|
|
IMAGE | m_satPercImageStream |
| The ImageStreamIO shared memory buffer for the sat percentage map.
|
|
|
std::string | m_calibPath |
| The path to this DM's calibration files.
|
|
std::string | m_flatPath |
| The path to this DM's flat files (usually the same as calibPath)
|
|
std::string | m_testPath |
| The path to this DM's test files (default is calibPath/tests;.
|
|
std::string | m_flatDefault |
| The file name of the this DM's default flat command. Path and extension will be ignored and can be omitted.
|
|
std::string | m_testDefault |
| The file name of the this DM's default test command. Path and extension will be ignored and can be omitted.
|
|
std::string | m_shmimFlat |
| The name of the shmim stream to write the flat to.
|
|
std::string | m_shmimTest |
| The name of the shmim stream to write the test to.
|
|
std::string | m_shmimSat |
| The name of the shmim stream to write the saturation map to.
|
|
std::string | m_shmimSatPerc |
| The name of the shmim stream to write the saturation percentage map to.
|
|
int | m_satAvgInt {100} |
| The time in milliseconds to accumulate saturation over.
|
|
int | m_satThreadPrio {0} |
| Priority of the saturation thread, should normally be > 0.
|
|
uint32_t | m_dmWidth {0} |
| The width of the images in the stream.
|
|
uint32_t | m_dmHeight {0} |
| The height of the images in the stream.
|
|
float | m_percThreshold {0.98} |
|
float | m_intervalSatThreshold {0.50} |
|
int | m_intervalSatCountThreshold {10} |
|
std::vector< std::string > | m_satTriggerDevice |
|
std::vector< std::string > | m_satTriggerProperty |
|
static constexpr uint8_t | m_dmDataType = ImageStreamTypeCode<realT>() |
| The ImageStreamIO type code.
|
|
|
pcf::IndiProperty | m_indiP_flat |
| Property used to set and report the current flat.
|
|
pcf::IndiProperty | m_indiP_init |
|
pcf::IndiProperty | m_indiP_zero |
|
pcf::IndiProperty | m_indiP_release |
|
pcf::IndiProperty | m_indiP_flats |
| INDI Selection switch containing the flat files.
|
|
pcf::IndiProperty | m_indiP_flatShmim |
| Publish the shmim being used for the flat.
|
|
pcf::IndiProperty | m_indiP_setFlat |
| INDI toggle switch to set the current flat.
|
|
pcf::IndiProperty | m_indiP_tests |
| INDI Selection switch containing the test pattern files.
|
|
pcf::IndiProperty | m_indiP_testShmim |
| Publish the shmim being used for the test command.
|
|
pcf::IndiProperty | m_indiP_setTest |
| INDI toggle switch to set the current test pattern.
|
|
pcf::IndiProperty | m_indiP_zeroAll |
|
int | newCallBack_init (const pcf::IndiProperty &ipRecv) |
| The callback called by the static version, to actually process the new request.
|
|
int | newCallBack_zero (const pcf::IndiProperty &ipRecv) |
| The callback called by the static version, to actually process the new request.
|
|
int | newCallBack_release (const pcf::IndiProperty &ipRecv) |
| The callback called by the static version, to actually process the new request.
|
|
int | newCallBack_flats (const pcf::IndiProperty &ipRecv) |
| The callback called by the static version, to actually process the new request.
|
|
int | newCallBack_setFlat (const pcf::IndiProperty &ipRecv) |
| The callback called by the static version, to actually process the new request.
|
|
int | newCallBack_tests (const pcf::IndiProperty &ipRecv) |
| The callback called by the static version, to actually process the new request.
|
|
int | newCallBack_setTest (const pcf::IndiProperty &ipRecv) |
| The callback called by the static version, to actually process the new request.
|
|
int | newCallBack_zeroAll (const pcf::IndiProperty &ipRecv) |
| The callback for the zeroAll toggle switch, called by the static version.
|
|
int | updateINDI () |
| Update the INDI properties for this device controller.
|
|
static int | st_newCallBack_init (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for initializing the DM.
|
|
static int | st_newCallBack_zero (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for initializing the DM.
|
|
static int | st_newCallBack_release (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for initializing the DM.
|
|
static int | st_newCallBack_flats (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for selecting the flat file.
|
|
static int | st_newCallBack_setFlat (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for setting the flat.
|
|
static int | st_newCallBack_tests (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for selecting the test file.
|
|
static int | st_newCallBack_setTest (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for setting the test shape.
|
|
static int | st_newCallBack_zeroAll (void *app, const pcf::IndiProperty &ipRecv) |
| The static callback function to be registered for zeroing all channels.
|
|
template<class derivedT, typename realT>
class MagAOX::app::dev::dm< derivedT, realT >
MagAO-X generic deformable mirror controller
The derived class derivedT
must expose the following interface
Each of the above functions should return 0 on success, and -1 on an error.
This class should be declared a friend in the derived class, like so:
friend class dev::dm<derivedT,realT>;
Calls to this class's setupConfig
, loadConfig
, appStartup
, appLogic
, appShutdown
, and udpdateINDI
functions must be placed in the derived class's functions of the same name.
Definition at line 68 of file dm.hpp.