TwiceAsNice  2019-02-18
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Laos::XineticsCoreDevice Class Referenceabstract

The core of the Xinetics Deformable Mirror Device. More...

#include <XineticsCoreDevice.h>

Inheritance diagram for Laos::XineticsCoreDevice:
Inheritance graph
Collaboration diagram for Laos::XineticsCoreDevice:
Collaboration graph

Public Member Functions

 XineticsCoreDevice (const Nice::JointPtr &_config)
 
virtual ~XineticsCoreDevice ()
 
virtual void open ()
 open device More...
 
virtual void close ()
 close device More...
 
virtual void version ()
 version More...
 
virtual void init (Basda::DeviceAsync &=s_async)
 init the device More...
 
virtual void deinit (Basda::DeviceAsync &=s_async)
 deinit the device More...
 
virtual bool setActuators (Nice::SeqInt &_actuatorCmd)
 Calculate voltages (applying corrections like nonliearities) and send the to the refl memory. If the voltages exceed thresholds set by the configuration, the frame is skipped. More...
 
virtual void getActCommands (Nice::SeqInt &_command) const
 Convert the most recently calculated voltages back to their integer values. This is basically the inverse of calcActVoltages() and assumes that m_skipFrame=false, which means it supposes that the most recently calculated voltages have not been rejected by the various threshold checks. More...
 
virtual Nice::SeqInt getExceededNeighborActThreshold ()
 
virtual Nice::SeqInt getExceededActLimits ()
 
virtual void resetActuators ()
 Sets all actuators to actuator command zero. More...
 
virtual void resetActuators (const Nice::SeqFloat &_currentPos)
 
virtual void handleXineticsEvents (uint32_t _timeout)=0
 
virtual dspState_t getDSPState ()
 
virtual bool getDSPError ()
 
virtual Nice::SeqI16 getFlatPatters ()
 
 XineticsCoreDevice (const Nice::JointPtr &_config)
 
virtual ~XineticsCoreDevice ()
 
virtual void open ()
 open device More...
 
virtual void close ()
 close device More...
 
virtual void version ()
 version More...
 
virtual void init (Basda::DeviceAsync &=s_async)
 init the device More...
 
virtual void deinit (Basda::DeviceAsync &=s_async)
 deinit the device More...
 
virtual bool setActuators (Nice::SeqInt &_actuatorCmd)
 
virtual void getActCommands (Nice::SeqInt &_command) const
 
virtual Nice::SeqInt getExceededNeighborActThreshold ()
 
virtual Nice::SeqInt getExceededActLimits ()
 
virtual void resetActuators ()
 Sets all actuators to actuator command zero. More...
 
virtual void resetActuators (const Nice::SeqFloat &_currentPos)
 
virtual void handleXineticsEvents (uint32_t _timeout)=0
 
virtual dspState_t getDSPState ()
 
virtual bool getDSPError ()
 
virtual Nice::SeqI16 getFlatPatters ()
 
 XineticsCoreDevice (const Nice::JointPtr &_config)
 
virtual ~XineticsCoreDevice ()
 
virtual void open ()
 open device More...
 
virtual void close ()
 close device More...
 
virtual void version ()
 version More...
 
virtual void init (Basda::DeviceAsync &=s_async)
 init the device More...
 
virtual void deinit (Basda::DeviceAsync &=s_async)
 deinit the device More...
 
virtual bool setActuators (Nice::SeqInt &_actuatorCmd)
 
virtual void getActCommands (Nice::SeqInt &_command) const
 
virtual Nice::SeqInt getExceededNeighborActThreshold ()
 
virtual Nice::SeqInt getExceededActLimits ()
 
virtual void resetActuators ()
 Sets all actuators to actuator command zero. More...
 
virtual void resetActuators (const Nice::SeqFloat &_currentPos)
 
virtual void handleXineticsEvents (uint32_t _timeout)=0
 
virtual dspState_t getDSPState ()
 
virtual bool getDSPError ()
 
virtual Nice::SeqI16 getFlatPatters ()
 
- Public Member Functions inherited from Basda::Device
 Device (const Nice::JointPtr &_config)
 constructor. This is an elementary (lazy) action which stores the name and gets configuration. More...
 
virtual ~Device ()
 destructor Does nothing More...
 
virtual void setConfig (const Nice::JointPtr &_config)
 init with config tree ptr More...
 
Nice::JointPtrconfig ()
 retrieve the property tree More...
 
std::string & name ()
 retrieve the name set at ctor time. More...
 
virtual void reset (DeviceAsync &=s_async)=0
 reset the device More...
 
virtual void activate (DeviceAsync &=s_async)=0
 activate the device More...
 
virtual void deactivate (DeviceAsync &=s_async)=0
 deactivate the device More...
 
 Device (const Nice::JointPtr &_config)
 constructor. This is an elementary (lazy) action which stores the name and gets configuration. More...
 
virtual ~Device ()
 destructor Does nothing More...
 
virtual void setConfig (const Nice::JointPtr &_config)
 init with config tree ptr More...
 
Nice::JointPtrconfig ()
 retrieve the property tree More...
 
std::string & name ()
 retrieve the name set at ctor time. More...
 
virtual void reset (DeviceAsync &=s_async)=0
 reset the device More...
 
virtual void activate (DeviceAsync &=s_async)=0
 activate the device More...
 
virtual void deactivate (DeviceAsync &=s_async)=0
 deactivate the device More...
 

Protected Member Functions

void calcActVoltages (const Nice::SeqInt &_command)
 Calculate actuator voltages plus sanity check. More...
 
virtual void applyActVoltages ()=0
 Send calculated DAC values to the Xinetics Electronics. More...
 
void addProperties ()
 
void updateProperties ()
 
void calcActVoltages (const Nice::SeqInt &_command)
 Calculate actuator voltages plus sanity check. More...
 
virtual void applyActVoltages ()=0
 Send calculated DAC values to the Xinetics Electronics. More...
 
void addProperties ()
 
void updateProperties ()
 
void calcActVoltages (const Nice::SeqInt &_command)
 Calculate actuator voltages plus sanity check. More...
 
virtual void applyActVoltages ()=0
 Send calculated DAC values to the Xinetics Electronics. More...
 
void addProperties ()
 
void updateProperties ()
 

Protected Attributes

Laos::FitsVector< Nice::I16m_actFlatPattern
 
Laos::FitsVector< double > m_actSensitivityPattern
 
Laos::FitsVector< double > m_actNonlinearityPattern
 
double m_actCommonSensitivity
 
bool m_correctFlatness
 
bool m_correctSensitivity
 
bool m_correctNonlinearity
 
Nice::SeqInt m_exceededNeighborActThreshold
 
Nice::SeqInt m_exceededActLimits
 
Laos::FitsVector< Nice::I16m_NeighborMap
 
unsigned int m_NeighborActThreshold
 
long m_temporalDistanceThreshold
 
unsigned short m_actVoltageArray [actVoltageArraySize]
 
unsigned short * m_actVoltagePtr [numberOfXineticsActuators]
 
long m_integratedActVoltage
 
long m_frameCounter
 
long m_skippedFrameCounter
 
bool m_skipFrame
 
bool m_isFlat
 
std::string m_deviceFile
 
Laos::dspState_t m_dspState
 
std::map< dspState_t, std::string > m_dspStatename
 
bool m_dspError
 
bool m_fiberLink
 
- Protected Attributes inherited from Basda::Device
Nice::JointPtr m_config
 
Nice::JointPtr m_cfg
 
Nice::JointPtr m_var
 
std::string m_name
 

Additional Inherited Members

- Static Public Attributes inherited from Basda::Device
static DeviceAsyncImpl s_async
 

Detailed Description

The core of the Xinetics Deformable Mirror Device.

Its main purposes

Configuration Tree:
The following parameters are expected to be in the Device CFG tree during initialization:
Parameters
CFG.ACT.FLATPATTERN:StringFits file with actator flat pattern
CFG.ACT.SENSITIVITYPATTERN:StringFits file with normalized actator sensitivity pattern (will be multiplied with COMMONSENSITIVITY)
CFG.ACT.NONLINEARITYPATTERN:StringFits file with actator nonlinearity pattern
CFG.ACT.COMMONSENSITIVITY:DoubleMean Sensitivity of Actuators. May in the future be a function of temperature
CFG.ACT.NEIGHBORMAP:StringFits file containing for each Actuator the number of each neighboring actuator to the right and down
CFG.ACT.NEIGHBOR_THRES:U16Maximum difference between neighbors (Actuator command, not DAC values!)
CFG.ACT.TEMPORALDISTANCE_THRES:U32Maximum change in the integrated Actuator command values (Piston) between two frames.
CFG.RFM.DEVFILE:StringRFM Device File
Author
Thomas Bertram

Constructor & Destructor Documentation

◆ XineticsCoreDevice() [1/3]

Laos::XineticsCoreDevice::XineticsCoreDevice ( const Nice::JointPtr _config)

◆ ~XineticsCoreDevice() [1/3]

Laos::XineticsCoreDevice::~XineticsCoreDevice ( )
virtual

◆ XineticsCoreDevice() [2/3]

Laos::XineticsCoreDevice::XineticsCoreDevice ( const Nice::JointPtr _config)

◆ ~XineticsCoreDevice() [2/3]

virtual Laos::XineticsCoreDevice::~XineticsCoreDevice ( )
virtual

◆ XineticsCoreDevice() [3/3]

Laos::XineticsCoreDevice::XineticsCoreDevice ( const Nice::JointPtr _config)

◆ ~XineticsCoreDevice() [3/3]

virtual Laos::XineticsCoreDevice::~XineticsCoreDevice ( )
virtual

Member Function Documentation

◆ addProperties() [1/3]

void Laos::XineticsCoreDevice::addProperties ( )
protected

◆ addProperties() [2/3]

void Laos::XineticsCoreDevice::addProperties ( )
protected

◆ addProperties() [3/3]

void Laos::XineticsCoreDevice::addProperties ( )
protected

◆ applyActVoltages() [1/3]

virtual void Laos::XineticsCoreDevice::applyActVoltages ( )
protectedpure virtual

Send calculated DAC values to the Xinetics Electronics.

Returns
void

Implemented in Laos::XineticsDevice, Laos::XineticsDummyDevice, Laos::XineticsDummyDevice, and Laos::XineticsDummyDevice.

◆ applyActVoltages() [2/3]

virtual void Laos::XineticsCoreDevice::applyActVoltages ( )
protectedpure virtual

Send calculated DAC values to the Xinetics Electronics.

Returns
void

Implemented in Laos::XineticsDevice, Laos::XineticsDummyDevice, Laos::XineticsDummyDevice, and Laos::XineticsDummyDevice.

◆ applyActVoltages() [3/3]

virtual void Laos::XineticsCoreDevice::applyActVoltages ( )
protectedpure virtual

Send calculated DAC values to the Xinetics Electronics.

Returns
void

Implemented in Laos::XineticsDevice, Laos::XineticsDummyDevice, Laos::XineticsDummyDevice, and Laos::XineticsDummyDevice.

◆ calcActVoltages() [1/3]

void Laos::XineticsCoreDevice::calcActVoltages ( const Nice::SeqInt _command)
protected

Calculate actuator voltages plus sanity check.

Parameters
_commandvector of actuator commands.
Returns
void

◆ calcActVoltages() [2/3]

void Laos::XineticsCoreDevice::calcActVoltages ( const Nice::SeqInt _command)
protected

Calculate actuator voltages plus sanity check.

Parameters
_commandvector of actuator commands.
Returns
void

◆ calcActVoltages() [3/3]

void Laos::XineticsCoreDevice::calcActVoltages ( const Nice::SeqInt _command)
protected

Calculate actuator voltages plus sanity check.

Parameters
_commandvector of actuator commands.
Returns
void

◆ close() [1/3]

void Laos::XineticsCoreDevice::close ( )
virtual

close device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ close() [2/3]

virtual void Laos::XineticsCoreDevice::close ( )
virtual

close device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ close() [3/3]

virtual void Laos::XineticsCoreDevice::close ( )
virtual

close device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ deinit() [1/3]

void Laos::XineticsCoreDevice::deinit ( Basda::DeviceAsync = s_async)
virtual

deinit the device

Implements Basda::Device.

◆ deinit() [2/3]

virtual void Laos::XineticsCoreDevice::deinit ( Basda::DeviceAsync = s_async)
virtual

deinit the device

Implements Basda::Device.

◆ deinit() [3/3]

virtual void Laos::XineticsCoreDevice::deinit ( Basda::DeviceAsync = s_async)
virtual

deinit the device

Implements Basda::Device.

◆ getActCommands() [1/3]

virtual void Laos::XineticsCoreDevice::getActCommands ( Nice::SeqInt _command) const
virtual

◆ getActCommands() [2/3]

virtual void Laos::XineticsCoreDevice::getActCommands ( Nice::SeqInt _command) const
virtual

◆ getActCommands() [3/3]

void Laos::XineticsCoreDevice::getActCommands ( Nice::SeqInt _command) const
virtual

Convert the most recently calculated voltages back to their integer values. This is basically the inverse of calcActVoltages() and assumes that m_skipFrame=false, which means it supposes that the most recently calculated voltages have not been rejected by the various threshold checks.


Parameters
[out]_commandOn output the values equivalent to the parameter vector of the most recent applyActVoltages().
Since
2018-11-06
Author
Richard J. Mathar

◆ getDSPError() [1/3]

virtual bool Laos::XineticsCoreDevice::getDSPError ( )
virtual

◆ getDSPError() [2/3]

virtual bool Laos::XineticsCoreDevice::getDSPError ( )
virtual

◆ getDSPError() [3/3]

bool Laos::XineticsCoreDevice::getDSPError ( )
virtual

◆ getDSPState() [1/3]

virtual dspState_t Laos::XineticsCoreDevice::getDSPState ( )
virtual

◆ getDSPState() [2/3]

Laos::dspState_t Laos::XineticsCoreDevice::getDSPState ( )
virtual

◆ getDSPState() [3/3]

virtual dspState_t Laos::XineticsCoreDevice::getDSPState ( )
virtual

◆ getExceededActLimits() [1/3]

Nice::SeqInt Laos::XineticsCoreDevice::getExceededActLimits ( )
virtual

◆ getExceededActLimits() [2/3]

virtual Nice::SeqInt Laos::XineticsCoreDevice::getExceededActLimits ( )
virtual

◆ getExceededActLimits() [3/3]

virtual Nice::SeqInt Laos::XineticsCoreDevice::getExceededActLimits ( )
virtual

◆ getExceededNeighborActThreshold() [1/3]

virtual Nice::SeqInt Laos::XineticsCoreDevice::getExceededNeighborActThreshold ( )
virtual

◆ getExceededNeighborActThreshold() [2/3]

virtual Nice::SeqInt Laos::XineticsCoreDevice::getExceededNeighborActThreshold ( )
virtual

◆ getExceededNeighborActThreshold() [3/3]

Nice::SeqInt Laos::XineticsCoreDevice::getExceededNeighborActThreshold ( )
virtual

◆ getFlatPatters() [1/3]

virtual Nice::SeqI16 Laos::XineticsCoreDevice::getFlatPatters ( )
virtual

◆ getFlatPatters() [2/3]

virtual Nice::SeqI16 Laos::XineticsCoreDevice::getFlatPatters ( )
virtual

◆ getFlatPatters() [3/3]

Nice::SeqI16 Laos::XineticsCoreDevice::getFlatPatters ( )
virtual

◆ handleXineticsEvents() [1/3]

virtual void Laos::XineticsCoreDevice::handleXineticsEvents ( uint32_t  _timeout)
pure virtual

◆ handleXineticsEvents() [2/3]

virtual void Laos::XineticsCoreDevice::handleXineticsEvents ( uint32_t  _timeout)
pure virtual

◆ handleXineticsEvents() [3/3]

virtual void Laos::XineticsCoreDevice::handleXineticsEvents ( uint32_t  _timeout)
pure virtual

◆ init() [1/3]

void Laos::XineticsCoreDevice::init ( Basda::DeviceAsync = s_async)
virtual

init the device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ init() [2/3]

virtual void Laos::XineticsCoreDevice::init ( Basda::DeviceAsync = s_async)
virtual

init the device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ init() [3/3]

virtual void Laos::XineticsCoreDevice::init ( Basda::DeviceAsync = s_async)
virtual

init the device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ open() [1/3]

void Laos::XineticsCoreDevice::open ( )
virtual

open device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ open() [2/3]

virtual void Laos::XineticsCoreDevice::open ( )
virtual

open device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ open() [3/3]

virtual void Laos::XineticsCoreDevice::open ( )
virtual

open device

Implements Basda::Device.

Reimplemented in Laos::XineticsDevice.

◆ resetActuators() [1/6]

void Laos::XineticsCoreDevice::resetActuators ( )
virtual

Sets all actuators to actuator command zero.

Returns
void

◆ resetActuators() [2/6]

virtual void Laos::XineticsCoreDevice::resetActuators ( )
virtual

Sets all actuators to actuator command zero.

Returns
void

◆ resetActuators() [3/6]

virtual void Laos::XineticsCoreDevice::resetActuators ( )
virtual

Sets all actuators to actuator command zero.

Returns
void

◆ resetActuators() [4/6]

virtual void Laos::XineticsCoreDevice::resetActuators ( const Nice::SeqFloat _currentPos)
virtual

◆ resetActuators() [5/6]

virtual void Laos::XineticsCoreDevice::resetActuators ( const Nice::SeqFloat _currentPos)
virtual

◆ resetActuators() [6/6]

void Laos::XineticsCoreDevice::resetActuators ( const Nice::SeqFloat _currentPos)
virtual

◆ setActuators() [1/3]

bool Laos::XineticsCoreDevice::setActuators ( Nice::SeqInt _actuatorCmd)
virtual

Calculate voltages (applying corrections like nonliearities) and send the to the refl memory. If the voltages exceed thresholds set by the configuration, the frame is skipped.


Parameters
_actuatorCmdThe vector of the (linear) commands.

◆ setActuators() [2/3]

virtual bool Laos::XineticsCoreDevice::setActuators ( Nice::SeqInt _actuatorCmd)
virtual

◆ setActuators() [3/3]

virtual bool Laos::XineticsCoreDevice::setActuators ( Nice::SeqInt _actuatorCmd)
virtual

◆ updateProperties() [1/3]

void Laos::XineticsCoreDevice::updateProperties ( )
protected

◆ updateProperties() [2/3]

void Laos::XineticsCoreDevice::updateProperties ( )
protected

◆ updateProperties() [3/3]

void Laos::XineticsCoreDevice::updateProperties ( )
protected

◆ version() [1/3]

virtual void Laos::XineticsCoreDevice::version ( )
virtual

version

Implements Basda::Device.

◆ version() [2/3]

virtual void Laos::XineticsCoreDevice::version ( )
virtual

version

Implements Basda::Device.

◆ version() [3/3]

void Laos::XineticsCoreDevice::version ( )
virtual

version

Implements Basda::Device.

Member Data Documentation

◆ m_actCommonSensitivity

double Laos::XineticsCoreDevice::m_actCommonSensitivity
protected

◆ m_actFlatPattern

Laos::FitsVector< Nice::I16 > Laos::XineticsCoreDevice::m_actFlatPattern
protected

◆ m_actNonlinearityPattern

Laos::FitsVector< double > Laos::XineticsCoreDevice::m_actNonlinearityPattern
protected

◆ m_actSensitivityPattern

Laos::FitsVector< double > Laos::XineticsCoreDevice::m_actSensitivityPattern
protected

◆ m_actVoltageArray

unsigned short Laos::XineticsCoreDevice::m_actVoltageArray
protected

◆ m_actVoltagePtr

unsigned short * Laos::XineticsCoreDevice::m_actVoltagePtr
protected

◆ m_correctFlatness

bool Laos::XineticsCoreDevice::m_correctFlatness
protected

◆ m_correctNonlinearity

bool Laos::XineticsCoreDevice::m_correctNonlinearity
protected

◆ m_correctSensitivity

bool Laos::XineticsCoreDevice::m_correctSensitivity
protected

◆ m_deviceFile

std::string Laos::XineticsCoreDevice::m_deviceFile
protected

◆ m_dspError

bool Laos::XineticsCoreDevice::m_dspError
protected

◆ m_dspState

Laos::dspState_t Laos::XineticsCoreDevice::m_dspState
protected

◆ m_dspStatename

std::map< dspState_t, std::string > Laos::XineticsCoreDevice::m_dspStatename
protected

◆ m_exceededActLimits

Nice::SeqInt Laos::XineticsCoreDevice::m_exceededActLimits
protected

◆ m_exceededNeighborActThreshold

Nice::SeqInt Laos::XineticsCoreDevice::m_exceededNeighborActThreshold
protected

◆ m_fiberLink

bool Laos::XineticsCoreDevice::m_fiberLink
protected

◆ m_frameCounter

long Laos::XineticsCoreDevice::m_frameCounter
protected

◆ m_integratedActVoltage

long Laos::XineticsCoreDevice::m_integratedActVoltage
protected

◆ m_isFlat

bool Laos::XineticsCoreDevice::m_isFlat
protected

◆ m_NeighborActThreshold

unsigned int Laos::XineticsCoreDevice::m_NeighborActThreshold
protected

◆ m_NeighborMap

Laos::FitsVector< Nice::I16 > Laos::XineticsCoreDevice::m_NeighborMap
protected

◆ m_skipFrame

bool Laos::XineticsCoreDevice::m_skipFrame
protected

◆ m_skippedFrameCounter

long Laos::XineticsCoreDevice::m_skippedFrameCounter
protected

◆ m_temporalDistanceThreshold

long Laos::XineticsCoreDevice::m_temporalDistanceThreshold
protected

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