This commit is contained in:
2026-02-27 18:02:41 +03:00
parent 006930dc0d
commit d7a9b7364f
4 changed files with 29 additions and 5 deletions

View File

@@ -33,9 +33,12 @@ Asibfm700Mount::Asibfm700Mount(Asibfm700MountConfig const& config, std::shared_p
Asibfm700Mount::~Asibfm700Mount()
{
stoppingImpl();
*_lastMountError = stoppingImpl();
if (_lastMountError->load()) {
errorLogging("an error occured while stopping mount: ", _lastMountError->load());
}
Mount.quit();
_servolController.hardwareShutdown();
logDebug("Delete Asibfm700Mount class instance ({})", this->getThreadId());
}
@@ -490,6 +493,8 @@ Asibfm700Mount::error_t Asibfm700Mount::slewingImpl(bool slew_and_stop)
}
}
*_stopMovementRequest = false;
_pathFile.clearPath();
_enteredBackupCoordinates = telemetry_t::getPointingTarget();
@@ -747,6 +752,8 @@ Asibfm700Mount::error_t Asibfm700Mount::trackingImpl()
return mcc::impl::MccGenericMovementControlsErrorCode::ERROR_OK;
}
*_stopMovementRequest = false;
*_mountStatus = mount_status_t::MOUNT_STATUS_TRACKING;
_pathFile.clearPath();
@@ -877,6 +884,8 @@ Asibfm700Mount::error_t Asibfm700Mount::trackingImpl()
Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl()
{
logInfo("Stop mount requested");
*_stopMovementRequest = true;
typename AsibFM700ServoController::hardware_state_t hw_state;
@@ -892,6 +901,8 @@ Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl()
*_lastMountError = _servolController.hardwareGetState(&hw_state);
logDebug(" wait for mount stopping (timeout is {} seconds) ...",
_mountConfig.getValue<std::chrono::seconds>("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) >
@@ -909,6 +920,7 @@ Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl()
if (!_lastMountError->load()) {
*_mountStatus = mount_status_t::MOUNT_STATUS_IDLE;
*_lastMountError = mcc::impl::MccGenericMovementControlsErrorCode::ERROR_OK;
logInfo("The mount is stopped!");
} else {
*_mountStatus = mount_status_t::MOUNT_STATUS_ERROR;
errorLogging("An error occured while stoppping mount: ", _lastMountError->load());