sinqmotor
Overview
This library offers base classes for EPICS motor drivers (sinqAxis
and sinqController
) of PSI SINQ. These classes are extensions of the classes asynMotorAxis
and asynMotorController
from the asynMotor
framework (https://github.com/epics-modules/motor/tree/master/motorApp/MotorSrc) and bundle some common functionalities.
Features
sinqMotor offers a variety of additional methods for children classes to standardize certain patterns (e.g. writing messages to the IOC shell and the motor message PV). For a detailed description, please see the respective function documentation in the .h-file. All of these functions can be overwritten manually if e.g. a completely different implementation of poll
is required
sinqController
stringifyAsynStatus
: Convert the enumasynStatus
into a human-readable string.errMsgCouldNotParseResponse
: Write a standardized message if parsing a device response failedparamLibAccessFailed
: Write a standardized message if accessing the parameter library failed
sinqAxis
atFirstPoll
: This function is executed once before the first poll. If it returns anything butasynSuccess
, it retries.poll
: This is a wrapper arounddoPoll
which performs some bookkeeping tasks before and after callingdoPoll
: Before callingdoPoll
:- Try to execute
atFirstPoll
once (and retry, if that failed) After callingdoPoll
: - Reset
motorStatusProblem_
,motorStatusCommsError_
andmotorMessageText_
ifdoPoll
returnedasynSuccess
- Run
callParamCallbacks
- Return the status of
doPoll
- Try to execute
doPoll
: This is an empty function which should be overwritten by concrete driver implementations.
How to build it
The makefile in the top directory includes all necessary steps for compiling a shared library together with the header files into /ioc/modules
(using the PSI EPICS build system).Therefore it is sufficient to run make install -f Makefile
from the terminal. If you want to compile a new version, adjust the entry LIBVERSION
accordingly.
To use the library when writing a concrete motor driver, include it in the makefile of your application /library the same way as other libraries such as e.g. asynMotor
by adding REQUIRED+=sinqMotor
to your Makefile.