Compare commits

..

2 Commits

Author SHA1 Message Date
bdefc6090d Added getters and setters for wasMoving and targetPosition 2025-06-10 14:09:20 +02:00
c2eca33ce8 Ready for release 1.0 2025-05-23 12:25:48 +02:00
2 changed files with 45 additions and 4 deletions

View File

@@ -216,10 +216,11 @@ sinqAxis::sinqAxis(class sinqController *pC, int axisNo)
.wasMoving = false, .wasMoving = false,
.lastPollTime = lastPollTime}); .lastPollTime = lastPollTime});
// This check is also done in asynMotorAxis, but there the IOC continues /*
// running even though the configuration is incorrect. When failing this This check is also done in asynMotorAxis, but there the IOC continues
// check, the IOC is stopped, since this is definitely a configuration running even though the configuration is incorrect. When failing this check,
// problem. the IOC is stopped, since this is definitely a configuration problem.
*/
if ((axisNo < 0) || (axisNo >= pC->numAxes())) { if ((axisNo < 0) || (axisNo >= pC->numAxes())) {
asynPrint(pC_->pasynUser(), ASYN_TRACE_ERROR, asynPrint(pC_->pasynUser(), ASYN_TRACE_ERROR,
"Controller \"%s\", axis %d => %s, line %d:\nFATAL ERROR " "Controller \"%s\", axis %d => %s, line %d:\nFATAL ERROR "
@@ -820,6 +821,16 @@ asynStatus sinqAxis::setScaleMovTimeout(time_t scaleMovTimeout) {
return asynSuccess; return asynSuccess;
} }
bool sinqAxis::wasMoving() { return pSinqA_->wasMoving; }
void sinqAxis::setWasMoving(bool wasMoving) { pSinqA_->wasMoving = wasMoving; }
double sinqAxis::targetPosition() { return pSinqA_->targetPosition; }
void sinqAxis::setTargetPosition(double targetPosition) {
pSinqA_->targetPosition = targetPosition;
}
// ============================================================================= // =============================================================================
// IOC shell functions // IOC shell functions
extern "C" { extern "C" {

View File

@@ -369,6 +369,36 @@ class epicsShareClass sinqAxis : public asynMotorAxis {
*/ */
sinqController *pController() { return pC_; }; sinqController *pController() { return pC_; };
/**
* @brief Returns true, if the axis was moving in the last poll cycle, and
* false otherwise.
*
* @return true
* @return false
*/
bool wasMoving();
/**
* @brief Override the wasMoving flag (normally, it is automatically updated
* during each poll).
*
*/
void setWasMoving(bool wasMoving);
/**
* @brief Read out the last received target position in engineering units.
*
* @return double
*/
double targetPosition();
/**
* @brief Override the targetPosition value (normally, it is automatically
* updated at every call of the move() method).
*
*/
void setTargetPosition(double targetPosition);
private: private:
std::unique_ptr<sinqAxisImpl> pSinqA_; std::unique_ptr<sinqAxisImpl> pSinqA_;
sinqController *pC_; sinqController *pC_;