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 mount is already slewing then stop and re-slew
|
||||||
if (_mountStatus->load() == mount_status_t::MOUNT_STATUS_SLEWING ||
|
if (_mountStatus->load() == mount_status_t::MOUNT_STATUS_SLEWING ||
|
||||||
_mountStatus->load() == mount_status_t::MOUNT_STATUS_ADJUSTING) {
|
_mountStatus->load() == mount_status_t::MOUNT_STATUS_ADJUSTING) {
|
||||||
*_lastMountError = stoppingImpl();
|
// *_lastMountError = stoppingImpl();
|
||||||
|
|
||||||
if (_lastMountError->load()) {
|
// if (_lastMountError->load()) {
|
||||||
return _lastMountError->load();
|
// return _lastMountError->load();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
*_stopMovementRequest = false;
|
*_stopMovementRequest = false;
|
||||||
@@ -623,14 +623,17 @@ Asibfm700Mount::error_t Asibfm700Mount::slewingImpl(bool slew_and_stop)
|
|||||||
typename hardware_t::hardware_state_t hw_state;
|
typename hardware_t::hardware_state_t hw_state;
|
||||||
using ep_t = decltype(hw_state.XY.epoch());
|
using ep_t = decltype(hw_state.XY.epoch());
|
||||||
|
|
||||||
hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_SLEWING;
|
if (slew_and_stop){
|
||||||
// hw_state.movementState = hardware_t::hardware_movement_state_t::HW_MOVE_ADJUSTING;
|
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.setX(tdata.targetXY.x());
|
||||||
hw_state.XY.setY(tdata.targetXY.y());
|
hw_state.XY.setY(tdata.targetXY.y());
|
||||||
hw_state.XY.setEpoch(ep_t::now());
|
hw_state.XY.setEpoch(ep_t::now());
|
||||||
|
|
||||||
|
|
||||||
// start slewing (LibSidServo.moveTo) ...
|
// start slewing (LibSidServo.moveTo or LibSidServo.correctTo) ...
|
||||||
|
|
||||||
*_lastMountError = sendToHardware(hw_state);
|
*_lastMountError = sendToHardware(hw_state);
|
||||||
|
|
||||||
@@ -981,6 +984,8 @@ Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl()
|
|||||||
|
|
||||||
typename AsibFM700ServoController::hardware_state_t hw_state;
|
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;
|
hw_state.movementState = AsibFM700ServoController::hardware_movement_state_t::HW_MOVE_STOPPING;
|
||||||
|
|
||||||
*_lastMountError = sendToHardware(hw_state);
|
*_lastMountError = sendToHardware(hw_state);
|
||||||
@@ -992,15 +997,20 @@ Asibfm700Mount::error_t Asibfm700Mount::stoppingImpl()
|
|||||||
|
|
||||||
*_lastMountError = _servolController.hardwareGetState(&hw_state);
|
*_lastMountError = _servolController.hardwareGetState(&hw_state);
|
||||||
|
|
||||||
logDebug(" wait for mount stopping (timeout is {} seconds) ...",
|
logDebug(" wait for mount stopping (timeout is {} seconds) ...", timeout.count());
|
||||||
_mountConfig.getValue<std::chrono::seconds>("stopTimeout").value().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 &&
|
while (hw_state.movementState != AsibFM700ServoController::hardware_movement_state_t::HW_MOVE_STOPPED &&
|
||||||
!_lastMountError->load()) {
|
!_lastMountError->load()) {
|
||||||
if ((std::chrono::steady_clock::now() - start_tp) >
|
if ((std::chrono::steady_clock::now() - start_tp) > timeout) {
|
||||||
_mountConfig.getValue<std::chrono::seconds>("stopTimeout").value()) {
|
|
||||||
*_lastMountError = mcc::impl::MccGenericMovementControlsErrorCode::ERROR_STOP_TIMEOUT;
|
*_lastMountError = mcc::impl::MccGenericMovementControlsErrorCode::ERROR_STOP_TIMEOUT;
|
||||||
break;
|
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));
|
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!
|
if (state.movementState == hardware_movement_state_t::HW_MOVE_STOPPING) { // stop!
|
||||||
err = static_cast<AsibFM700ServoControllerErrorCode>(Mount.stop());
|
err = static_cast<AsibFM700ServoControllerErrorCode>(Mount.stop());
|
||||||
|
|
||||||
|
/*
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@@ -144,6 +146,7 @@ AsibFM700ServoController::error_t AsibFM700ServoController::hardwareSetState(har
|
|||||||
std::this_thread::sleep_for(_hardwareConfig.pollingInterval);
|
std::this_thread::sleep_for(_hardwareConfig.pollingInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user