fix stopping
This commit is contained in:
@@ -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());
|
||||
|
||||
if (slew_and_stop){
|
||||
hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_SLEWING;
|
||||
// hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_ADJUSTING;
|
||||
} 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<std::chrono::seconds>("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<std::chrono::seconds>("stopTimeout").value().count());
|
||||
logDebug(" wait for mount stopping (timeout is {} seconds) ...", timeout.count());
|
||||
// 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) >
|
||||
_mountConfig.getValue<std::chrono::seconds>("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<std::chrono::seconds>("stopTimeout").value()) {
|
||||
// *_lastMountError = mcc::impl::MccGenericMovementControlsErrorCode::ERROR_STOP_TIMEOUT;
|
||||
// break;
|
||||
// }
|
||||
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(300));
|
||||
|
||||
|
||||
@@ -117,6 +117,8 @@ AsibFM700ServoController::error_t AsibFM700ServoController::hardwareSetState(har
|
||||
|
||||
if (state.movementState == hardware_movement_state_t::HW_MOVE_STOPPING) { // stop!
|
||||
err = static_cast<AsibFM700ServoControllerErrorCode>(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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user