From 611cde365f5864801c80d35b8f035b1c95a02840 Mon Sep 17 00:00:00 2001 From: mathis_s Date: Tue, 12 Nov 2024 15:10:41 +0100 Subject: [PATCH] Upload New File --- README.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..abe40f3 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# 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 enum 'asynStatus' into a human-readable string. +- 'errMsgCouldNotParseResponse': Write a standardized message if parsing a device response failed +- 'paramLibAccessFailed': 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 but 'asynSuccess', it retries. +- 'poll': This is a wrapper around doPoll which performs some bookkeeping tasks before and after calling doPoll: + Before calling 'doPoll': + - Try to execute 'atFirstPoll' once (and retry, if that failed) + After calling 'doPoll': + - Reset 'motorStatusProblem_', 'motorStatusCommsError_' and 'motorMessageText_' if 'doPoll' returned 'asynSuccess' + - Run 'callParamCallbacks' + - Return the status of 'doPoll' +- '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.