Added doReset wrapper around reset and added two functions to set and

retrieve the motor position which handle the conversion via
motorRecResolution.
This commit is contained in:
2025-03-28 14:51:09 +01:00
parent 828e9bc59c
commit 7729eceb28
6 changed files with 198 additions and 94 deletions

View File

@@ -32,9 +32,9 @@ class epicsShareClass sinqController : public asynMotorController {
pAxes_ which has the length specified here. When getting an axis, the
`getAxis` function indexes into this array. A length of 8 would therefore
mean that the axis slots 0 to 7 are available. However, in order to keep the
axis enumeration in sync with the electronics counting logic, we start
counting the axes with 1 and end at 8. Therefore, an offset of 1 is added
when forwarding this number to asynMotorController.
axis enumeration identical to that of the hardware, we start counting the
axes with 1 and end at 8. Therefore, an offset of 1 is added when forwarding
this number to asynMotorController.
* @param movingPollPeriod Time between polls when moving (in seconds)
* @param idlePollPeriod Time between polls when not moving (in
seconds)
@@ -82,7 +82,7 @@ class epicsShareClass sinqController : public asynMotorController {
*
* If accessing the parameter library failed (return status !=
asynSuccess), calling this function writes a standardized message to both
the IOC shell and the motor message text PV. It then returns the input
the IOC shell and the motorMessageText PV. It then returns the input
status.
*
* @param status Status of the failed parameter library access
@@ -90,7 +90,7 @@ class epicsShareClass sinqController : public asynMotorController {
error messages.
* @param functionName Name of the caller function. It is recommended
to use a macro, e.g. __func__ or __PRETTY_FUNCTION__.
* @param line Source code line where this function is
* @param line Source code line where this function is
called. It is recommended to use a macro, e.g. __LINE__.
* @return asynStatus Returns input status.
*/
@@ -115,7 +115,7 @@ class epicsShareClass sinqController : public asynMotorController {
called. It is recommended to use a macro, e.g. __LINE__.
* @return asynStatus Returns asynError.
*/
asynStatus errMsgCouldNotParseResponse(const char *command,
asynStatus couldNotParseResponse(const char *command,
const char *response, int axisNo,
const char *functionName, int line);
@@ -131,7 +131,7 @@ class epicsShareClass sinqController : public asynMotorController {
* @brief This function should be called when a communication timeout
occured. It calculates the frequency of communication timeout events and
creates an error message, if an threshold has been exceeded.
*
Occasionally, communication timeouts between the IOC and the motor
controller may happen, usually because the controller takes too long to
respond. If this happens infrequently, this is not a problem. However, if it
@@ -181,7 +181,7 @@ class epicsShareClass sinqController : public asynMotorController {
/**
* @brief Inform the user, if the number of timeouts exceeds the threshold
* specified with setMaxSubsequentTimeouts
* specified with `setMaxSubsequentTimeouts`.
*
* @param timeoutNo Number of subsequent timeouts which already
* happened.
@@ -192,10 +192,10 @@ class epicsShareClass sinqController : public asynMotorController {
class sinqAxis *axis);
/**
* @brief See documentation of checkMaxSubsequentTimeouts(sinqAxis * axis)
* @brief See documentation of `checkMaxSubsequentTimeouts(sinqAxis * axis)`
*
* @param userMessage Buffer for the user message
* @param userMessageSize Buffer size in chars
* @param userMessage Buffer for the user message
* @param userMessageSize Buffer size in chars
* @return asynStatus
*/
virtual asynStatus checkMaxSubsequentTimeouts(int timeoutNo, int axisNo,
@@ -216,8 +216,8 @@ class epicsShareClass sinqController : public asynMotorController {
/**
* @brief Get a reference to the map used to control the maximum number of
* message repetitions. See the documentation of printRepetitionWatchdog in
* msgPrintControl.h for details.
* message repetitions. See the documentation of `printRepetitionWatchdog`
* in msgPrintControl.h for details.
*/
msgPrintControl &getMsgPrintControl();
@@ -253,7 +253,7 @@ class epicsShareClass sinqController : public asynMotorController {
int motorStatus() { return motorStatus_; }
int motorUpdateStatus() { return motorUpdateStatus_; }
// Accessors for sztatus bits (integers)
// Accessors for status bits (integers)
int motorStatusDirection() { return motorStatusDirection_; }
int motorStatusDone() { return motorStatusDone_; }
int motorStatusHighLimit() { return motorStatusHighLimit_; }
@@ -295,6 +295,8 @@ class epicsShareClass sinqController : public asynMotorController {
// Additional members
int numAxes() { return numAxes_; }
double idlePollPeriod() { return idlePollPeriod_; }
double movingPollPeriod() { return movingPollPeriod_; }
asynUser *asynUserSelf() { return pasynUserSelf; }
asynUser *ipPortUser() { return ipPortUser_; }
@@ -302,7 +304,7 @@ class epicsShareClass sinqController : public asynMotorController {
protected:
// Pointer to the port user which is specified by the char array
// ipPortConfigName in the constructor
// `ipPortConfigName` in the constructor
asynUser *ipPortUser_;
double movingPollPeriod_;
double idlePollPeriod_;