Update README.md

This commit is contained in:
2024-11-12 15:31:45 +01:00
parent af182bb73b
commit 25401ba68b

View File

@ -2,30 +2,30 @@
## Overview ## 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. 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 ## 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 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 ### sinqController
- 'stringifyAsynStatus': Convert the enum 'asynStatus' into a human-readable string. - `stringifyAsynStatus`: Convert the enum `asynStatus` into a human-readable string.
- 'errMsgCouldNotParseResponse': Write a standardized message if parsing a device response failed - `errMsgCouldNotParseResponse`: Write a standardized message if parsing a device response failed
- 'paramLibAccessFailed': Write a standardized message if accessing the parameter library failed - `paramLibAccessFailed`: Write a standardized message if accessing the parameter library failed
### sinqAxis ### sinqAxis
- 'atFirstPoll': This function is executed once before the first poll. If it returns anything but 'asynSuccess', it retries. - `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: - `poll`: This is a wrapper around `doPoll` which performs some bookkeeping tasks before and after calling `doPoll`:
Before calling 'doPoll': Before calling `doPoll`:
- Try to execute 'atFirstPoll' once (and retry, if that failed) - Try to execute `atFirstPoll` once (and retry, if that failed)
After calling 'doPoll': After calling `doPoll`:
- Reset 'motorStatusProblem_', 'motorStatusCommsError_' and 'motorMessageText_' if 'doPoll' returned 'asynSuccess' - Reset `motorStatusProblem_`, `motorStatusCommsError_` and `motorMessageText_` if `doPoll` returned `asynSuccess`
- Run 'callParamCallbacks' - Run `callParamCallbacks`
- Return the status of 'doPoll' - Return the status of `doPoll`
- 'doPoll': This is an empty function which should be overwritten by concrete driver implementations. - `doPoll`: This is an empty function which should be overwritten by concrete driver implementations.
## How to build it ## 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. 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. 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.