Files
seleneguide/src/seleneGuideController.h
smathis c494fc88a5
Some checks failed
Test And Build / Lint (push) Successful in 3s
Test And Build / Build (push) Failing after 9s
Updated to turboPmac 1.4 and hid symbols
2025-08-12 09:28:06 +02:00

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 */