67 lines
2.5 KiB
C++
67 lines
2.5 KiB
C++
/********************************************
|
|
* seleneGuideController.h
|
|
*
|
|
* Detector tower controller driver based on the asynMotorController class
|
|
*
|
|
* Stefan Mathis, September 2024
|
|
********************************************/
|
|
|
|
#ifndef seleneGuideController_H
|
|
#define seleneGuideController_H
|
|
#include "turboPmacController.h"
|
|
|
|
// Forward declaration of the axis classes to resolve the cyclic
|
|
// dependency between the seleneLiftAxis and the seleneAngleAxis .h-file.
|
|
// See https://en.cppreference.com/w/cpp/language/class.
|
|
class HIDDEN seleneAngleAxis;
|
|
class HIDDEN seleneLiftAxis;
|
|
class HIDDEN seleneOffsetAxis;
|
|
|
|
class HIDDEN seleneGuideController : public turboPmacController {
|
|
|
|
public:
|
|
/**
|
|
* @brief Construct a new seleneGuideController object
|
|
*
|
|
* This controller object can handle both "normal" TurboPMAC axes created
|
|
with the turboPmacAxis constructor as well as one or multiple selene axis
|
|
assemblies consisting of offset axes, lift axis and angle axis.
|
|
*
|
|
* @param portName See turboPmacController constructor
|
|
* @param ipPortConfigName See turboPmacController constructor
|
|
* @param numAxes See turboPmacController constructor
|
|
* @param movingPollPeriod See turboPmacController constructor
|
|
* @param idlePollPeriod See turboPmacController constructor
|
|
* @param comTimeout See turboPmacController constructor
|
|
*/
|
|
seleneGuideController(const char *portName, const char *ipPortConfigName,
|
|
int numAxes, double movingPollPeriod,
|
|
double idlePollPeriod, double comTimeout);
|
|
|
|
virtual ~seleneGuideController();
|
|
|
|
/**
|
|
* @brief Overloaded function of turboPmacController
|
|
*
|
|
* @param pasynUser Specify the axis via the asynUser
|
|
* @param value New value
|
|
* @return asynStatus
|
|
*/
|
|
asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
|
|
|
|
// Accessors for the indices of the additional PVs
|
|
int motorAbsolutePositionRBV() { return motorAbsolutePositionRBV_; }
|
|
int normalize() { return normalize_; }
|
|
|
|
private:
|
|
// Indices of additional PVs
|
|
#define FIRST_seleneGuide_PARAM motorAbsolutePositionRBV_
|
|
int motorAbsolutePositionRBV_;
|
|
int normalize_;
|
|
#define LAST_seleneGuide_PARAM normalize_
|
|
};
|
|
#define NUM_seleneGuide_DRIVER_PARAMS \
|
|
(&LAST_seleneGuide_PARAM - &FIRST_seleneGuide_PARAM + 1)
|
|
|
|
#endif /* seleneGuideController_H */
|