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 calling
doPoll
:- 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.
Versioning
The versioning is done via git tags. Git tags are recognized by the PSI build system: If you tag a version as 1.0, it will be built into the directory /ioc/modules/sinqMotor/1.0. The tag is directly coupled to a commit so that it is always clear which source code was used to build which binary.
All existing tags can be listed with git tag
in the sinqMotor directory. Detailed information (author, data, commit number, commit message) regarding a specific tag can be shown with git show X.X
, where X.X is the name of your version. To create a new tag, use git tag -a X.X
.
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.
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.