diff --git a/src/detectorTowerAngleAxis.h b/src/detectorTowerAngleAxis.h index 4049f5c..40ec243 100644 --- a/src/detectorTowerAngleAxis.h +++ b/src/detectorTowerAngleAxis.h @@ -98,6 +98,8 @@ class detectorTowerAngleAxis : public turboPmacAxis { * @brief Overwrite the `reset` function so it doesn't do fast polls * afterwards. * + * The + * * @return asynStatus */ asynStatus reset() { return doReset(); } diff --git a/src/detectorTowerController.cpp b/src/detectorTowerController.cpp index 5dc089e..c2a3871 100644 --- a/src/detectorTowerController.cpp +++ b/src/detectorTowerController.cpp @@ -149,6 +149,27 @@ asynStatus detectorTowerController::writeInt32(asynUser *pasynUser, return sAxis->angleAxis()->toggleWorkingChangerState(value); } } + + /* + Due to a bug which is currently not understood, the reset has to be handled + here rather than in sinqController. + */ + if (pasynUser->reason == motorReset_) { + detectorTowerAngleAxis *aAxis = getDetectorTowerAngleAxis(pasynUser); + if (aAxis != nullptr) { + return aAxis->reset(); + } + detectorTowerLiftAxis *lAxis = getDetectorTowerLiftAxis(pasynUser); + if (lAxis != nullptr) { + return lAxis->reset(); + } + detectorTowerSupportAxis *sAxis = + getDetectorTowerSupportAxis(pasynUser); + if (sAxis != nullptr) { + return sAxis->reset(); + } + } + return turboPmacController::writeInt32(pasynUser, value); } diff --git a/turboPmac b/turboPmac index 75292a6..55b523d 160000 --- a/turboPmac +++ b/turboPmac @@ -1 +1 @@ -Subproject commit 75292a6a9c696fbfcb4962281d1a2cf80819c83f +Subproject commit 55b523ddaa2d696f28a35c391ea96d07d82a8d5a