Added interpose driver from DLS

Added a low-level interpose driver to allow usage of stream devices.
This commit is contained in:
2025-04-17 09:25:42 +02:00
parent 7b904e30db
commit e5a4af14ea
10 changed files with 1147 additions and 1012 deletions

View File

@@ -103,15 +103,30 @@ class turboPmacController : public sinqController {
int axisNo_, const char *functionName,
int lineNumber);
/**
* @brief Perform a hardware flush (clearing of communication buffers)
*
* The PMAC controllers hardware buffers can be flushed (see Turbo PMAC user
* manual, p. 414). This "freezes" the PMAC for around 10 ms and should
* therefore only be done if it is necessary (i.e. not as part of the
* regular communication procedure).
*
* @return asynStatus
*/
asynStatus doFlushHardware();
// Accessors for additional PVs
int rereadEncoderPosition() { return rereadEncoderPosition_; }
int readConfig() { return readConfig_; }
int flushHardware() { return flushHardware_; }
// Set the maximum buffer size. This is an empirical value which must be
// large enough to avoid overflows for all commands to the device /
// responses from it.
static const uint32_t MAXBUF_ = 200;
asynUser *pasynInt32SyncIOipPort() { return pasynInt32SyncIOipPort_; }
protected:
/*
Timeout for the communication process in seconds
@@ -120,11 +135,15 @@ class turboPmacController : public sinqController {
char lastResponse[MAXBUF_];
// User for writing int32 values to the port driver.
asynUser *pasynInt32SyncIOipPort_;
// Indices of additional PVs
#define FIRST_turboPmac_PARAM rereadEncoderPosition_
int rereadEncoderPosition_;
int readConfig_;
#define LAST_turboPmac_PARAM readConfig_
int flushHardware_;
#define LAST_turboPmac_PARAM flushHardware_
};
#define NUM_turboPmac_DRIVER_PARAMS \
(&LAST_turboPmac_PARAM - &FIRST_turboPmac_PARAM + 1)