diff --git a/asibfm700_mount.cpp b/asibfm700_mount.cpp index 28b6811..151d04e 100644 --- a/asibfm700_mount.cpp +++ b/asibfm700_mount.cpp @@ -551,11 +551,11 @@ Asibfm700Mount::error_t Asibfm700Mount::slewingImpl(bool slew_and_stop) // if mount is already slewing then stop and re-slew if (_mountStatus->load() == mount_status_t::MOUNT_STATUS_SLEWING || _mountStatus->load() == mount_status_t::MOUNT_STATUS_ADJUSTING) { - *_lastMountError = stoppingImpl(); +// *_lastMountError = stoppingImpl(); - if (_lastMountError->load()) { - return _lastMountError->load(); - } +// if (_lastMountError->load()) { +// return _lastMountError->load(); +// } } *_stopMovementRequest = false; @@ -623,14 +623,17 @@ Asibfm700Mount::error_t Asibfm700Mount::slewingImpl(bool slew_and_stop) typename hardware_t::hardware_state_t hw_state; using ep_t = decltype(hw_state.XY.epoch()); - hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_SLEWING; - // hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_ADJUSTING; + if (slew_and_stop){ + hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_SLEWING; + } else { // set to "HW_MOVE_ADJUSTING" to call LibSidServo's 'correctTo' function + hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_ADJUSTING; + } hw_state.XY.setX(tdata.targetXY.x()); hw_state.XY.setY(tdata.targetXY.y()); hw_state.XY.setEpoch(ep_t::now()); - // start slewing (LibSidServo.moveTo) ... + // start slewing (LibSidServo.moveTo or LibSidServo.correctTo) ... *_lastMountError = sendToHardware(hw_state); @@ -981,6 +984,8 @@ Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl() typename AsibFM700ServoController::hardware_state_t hw_state; + const auto timeout = _mountConfig.getValue("stopTimeout").value(); + hw_state.movementState = AsibFM700ServoController::hardware_movement_state_t::HW_MOVE_STOPPING; *_lastMountError = sendToHardware(hw_state); @@ -992,15 +997,20 @@ Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl() *_lastMountError = _servolController.hardwareGetState(&hw_state); - logDebug(" wait for mount stopping (timeout is {} seconds) ...", - _mountConfig.getValue("stopTimeout").value().count()); + logDebug(" wait for mount stopping (timeout is {} seconds) ...", timeout.count()); +// logDebug(" wait for mount stopping (timeout is {} seconds) ...", +// _mountConfig.getValue("stopTimeout").value().count()); while (hw_state.movementState != AsibFM700ServoController::hardware_movement_state_t::HW_MOVE_STOPPED && !_lastMountError->load()) { - if ((std::chrono::steady_clock::now() - start_tp) > - _mountConfig.getValue("stopTimeout").value()) { + if ((std::chrono::steady_clock::now() - start_tp) > timeout) { *_lastMountError = mcc::impl::MccGenericMovementControlsErrorCode::ERROR_STOP_TIMEOUT; break; } +// if ((std::chrono::steady_clock::now() - start_tp) > +// _mountConfig.getValue("stopTimeout").value()) { +// *_lastMountError = mcc::impl::MccGenericMovementControlsErrorCode::ERROR_STOP_TIMEOUT; +// break; +// } std::this_thread::sleep_for(std::chrono::milliseconds(300)); diff --git a/asibfm700_servocontroller.cpp b/asibfm700_servocontroller.cpp index 3b8c530..6b42912 100644 --- a/asibfm700_servocontroller.cpp +++ b/asibfm700_servocontroller.cpp @@ -117,6 +117,8 @@ AsibFM700ServoController::error_t AsibFM700ServoController::hardwareSetState(har if (state.movementState == hardware_movement_state_t::HW_MOVE_STOPPING) { // stop! err = static_cast(Mount.stop()); + +/* if (err) { return err; } @@ -144,6 +146,7 @@ AsibFM700ServoController::error_t AsibFM700ServoController::hardwareSetState(har std::this_thread::sleep_for(_hardwareConfig.pollingInterval); } +*/ return err; }