This commit is contained in:
2026-02-27 12:29:21 +03:00
parent 982846d2b1
commit 006930dc0d
2 changed files with 24 additions and 1 deletions

View File

@@ -33,6 +33,10 @@ Asibfm700Mount::Asibfm700Mount(Asibfm700MountConfig const& config, std::shared_p
Asibfm700Mount::~Asibfm700Mount()
{
stoppingImpl();
Mount.quit();
logDebug("Delete Asibfm700Mount class instance ({})", this->getThreadId());
}
@@ -476,6 +480,16 @@ Asibfm700Mount::error_t Asibfm700Mount::checkPZone(typename telemetry_t::telemet
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();
if (_lastMountError->load()) {
return _lastMountError->load();
}
}
_pathFile.clearPath();
_enteredBackupCoordinates = telemetry_t::getPointingTarget();
@@ -729,6 +743,10 @@ Asibfm700Mount::error_t Asibfm700Mount::slewingImpl(bool slew_and_stop)
Asibfm700Mount::error_t Asibfm700Mount::trackingImpl()
{
if (_mountStatus->load() == mount_status_t::MOUNT_STATUS_TRACKING) { // just ignore
return mcc::impl::MccGenericMovementControlsErrorCode::ERROR_OK;
}
*_mountStatus = mount_status_t::MOUNT_STATUS_TRACKING;
_pathFile.clearPath();
@@ -859,9 +877,11 @@ Asibfm700Mount::error_t Asibfm700Mount::trackingImpl()
Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl()
{
*_stopMovementRequest = true;
typename AsibFM700ServoController::hardware_state_t hw_state;
hw_state.movementState == AsibFM700ServoController::hardware_movement_state_t::HW_MOVE_STOPPING;
hw_state.movementState = AsibFM700ServoController::hardware_movement_state_t::HW_MOVE_STOPPING;
*_lastMountError = sendToHardware(hw_state);

View File

@@ -19,12 +19,14 @@ class Asibfm700Mount
: public mcc::impl::MccGenericMount<mcc::impl::MccTelemetry<AsibFM700ServoController>,
Asibfm700PZoneContainer,
// mcc::impl::MccSimpleMovementControls,
// mcc::impl::MccGenericBlockingMovementControls<details::movement_pars_t>,
mcc::impl::MccGenericAsyncMovementControls<details::movement_pars_t>,
Asibfm700Logger>
{
typedef mcc::impl::MccGenericMount<mcc::impl::MccTelemetry<AsibFM700ServoController>,
Asibfm700PZoneContainer,
// mcc::impl::MccSimpleMovementControls,
// mcc::impl::MccGenericBlockingMovementControls<details::movement_pars_t>,
mcc::impl::MccGenericAsyncMovementControls<details::movement_pars_t>,
Asibfm700Logger>
gm_class_t;
@@ -34,6 +36,7 @@ public:
typedef mcc::impl::MccTelemetry<AsibFM700ServoController> telemetry_t;
typedef mcc::impl::MccGenericAsyncMovementControls<details::movement_pars_t> movement_controls_t;
// typedef mcc::impl::MccGenericBlockingMovementControls<details::movement_pars_t> movement_controls_t;
using typename gm_class_t::error_t;
using typename movement_controls_t::movement_params_t;