From 8229bb76583a654010bcaca28fcad4a4673e147b Mon Sep 17 00:00:00 2001 From: Matthew Pearson Date: Fri, 29 Sep 2017 11:36:59 -0400 Subject: [PATCH] Fix issue with power being left on when using autoPower option in asynMotorController. This could happen if the motor doesn't move because it's already in position, so the poller doesn't detect a move. --- motorApp/MotorSrc/asynMotorController.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/motorApp/MotorSrc/asynMotorController.cpp b/motorApp/MotorSrc/asynMotorController.cpp index 612b993e..63d161d5 100644 --- a/motorApp/MotorSrc/asynMotorController.cpp +++ b/motorApp/MotorSrc/asynMotorController.cpp @@ -280,6 +280,7 @@ asynStatus asynMotorController::writeFloat64(asynUser *pasynUser, epicsFloat64 v if (function == motorMoveRel_) { if (autoPower == 1) { status = pAxis->setClosedLoop(true); + pAxis->setWasMovingFlag(1); epicsThreadSleep(autoPowerOnDelay); } getDoubleParam(axis, motorVelBase_, &baseVelocity); @@ -296,6 +297,7 @@ asynStatus asynMotorController::writeFloat64(asynUser *pasynUser, epicsFloat64 v } else if (function == motorMoveAbs_) { if (autoPower == 1) { status = pAxis->setClosedLoop(true); + pAxis->setWasMovingFlag(1); epicsThreadSleep(autoPowerOnDelay); } getDoubleParam(axis, motorVelBase_, &baseVelocity); @@ -312,6 +314,7 @@ asynStatus asynMotorController::writeFloat64(asynUser *pasynUser, epicsFloat64 v } else if (function == motorMoveVel_) { if (autoPower == 1) { status = pAxis->setClosedLoop(true); + pAxis->setWasMovingFlag(1); epicsThreadSleep(autoPowerOnDelay); } getDoubleParam(axis, motorVelBase_, &baseVelocity); @@ -328,6 +331,7 @@ asynStatus asynMotorController::writeFloat64(asynUser *pasynUser, epicsFloat64 v } else if (function == motorHome_) { if (autoPower == 1) { status = pAxis->setClosedLoop(true); + pAxis->setWasMovingFlag(1); epicsThreadSleep(autoPowerOnDelay); } getDoubleParam(axis, motorVelBase_, &baseVelocity);