/******************************************** * seleneGuideController.h * * Detector tower controller driver based on the asynMotorController class * * Stefan Mathis, September 2024 ********************************************/ #ifndef seleneGuideController_H #define seleneGuideController_H #include "seleneAngleAxis.h" #include "seleneLiftAxis.h" #include "seleneOffsetAxis.h" #include "turboPmacController.h" class 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); /** * @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 */