...
This commit is contained in:
@@ -17,6 +17,9 @@
|
||||
#include <thread>
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
#include <print>
|
||||
|
||||
#include "mcc_coordinate.h"
|
||||
#include "mcc_error.h"
|
||||
|
||||
@@ -265,28 +268,37 @@ public:
|
||||
[&, this](std::stop_token stoken) {
|
||||
while (!stoken.stop_requested()) {
|
||||
if (_doStop->load()) {
|
||||
std::println("******* DO-STOP ({} {} {}) *******", _doStop->load(), _doSlew->load(),
|
||||
_doTrack->load());
|
||||
*_stopMovementRequest = true;
|
||||
_currentState = STATE_IDLE;
|
||||
// _currentState = STATE_IDLE;
|
||||
_stopFunc();
|
||||
*_doStop = false;
|
||||
// *_doStop = false;
|
||||
}
|
||||
|
||||
if (_doSlew->load()) {
|
||||
std::println("******* DO-SLEW ({} {} {}) *******", _doStop->load(), _doSlew->load(),
|
||||
_doTrack->load());
|
||||
*_stopMovementRequest = false;
|
||||
_currentState = STATE_SLEW;
|
||||
_slewFunc(_slewAndStop->load());
|
||||
_currentState = STATE_IDLE;
|
||||
*_doSlew = false;
|
||||
// _currentState = STATE_IDLE;
|
||||
// *_doSlew = false;
|
||||
continue; // to guarantee execute doStop if tracking is requested!!!
|
||||
}
|
||||
|
||||
if (_doTrack->load()) {
|
||||
std::println("******* DO-TRACK ({} {} {}) *******", _doStop->load(), _doSlew->load(),
|
||||
_doTrack->load());
|
||||
*_stopMovementRequest = false;
|
||||
_currentState = STATE_TRACK;
|
||||
_trackFunc();
|
||||
_currentState = STATE_IDLE;
|
||||
*_doTrack = false;
|
||||
// _currentState = STATE_IDLE;
|
||||
// *_doTrack = false;
|
||||
}
|
||||
|
||||
_currentState = STATE_IDLE;
|
||||
|
||||
// wait here ...
|
||||
_wakeupRequest->wait(false, std::memory_order_relaxed);
|
||||
|
||||
@@ -337,7 +349,7 @@ public:
|
||||
|
||||
error_t slewToTarget(bool slew_and_stop)
|
||||
{
|
||||
*_stopMovementRequest = false;
|
||||
// *_stopMovementRequest = false;
|
||||
|
||||
if constexpr (executePolicy == MccGenericMovementControlsPolicy::POLICY_ASYNC) {
|
||||
// if (_slewFuncFuture.valid()) { // already slewing
|
||||
@@ -361,6 +373,9 @@ public:
|
||||
|
||||
if (_currentState == STATE_SLEW || _currentState == STATE_TRACK) { // first, stop mount
|
||||
*_doStop = true;
|
||||
*_stopMovementRequest = true; // to exit from slewing or tracking
|
||||
} else {
|
||||
*_doStop = false;
|
||||
}
|
||||
*_doTrack = false;
|
||||
*_doSlew = true;
|
||||
@@ -378,7 +393,7 @@ public:
|
||||
|
||||
error_t trackTarget()
|
||||
{
|
||||
*_stopMovementRequest = false;
|
||||
// *_stopMovementRequest = false;
|
||||
|
||||
if constexpr (executePolicy == MccGenericMovementControlsPolicy::POLICY_ASYNC) {
|
||||
// if (!_trackFuncFuture.valid()) {
|
||||
@@ -388,9 +403,13 @@ public:
|
||||
if (_currentState != STATE_TRACK) {
|
||||
if (_currentState == STATE_SLEW) { // first, stop mount
|
||||
*_doStop = true;
|
||||
*_stopMovementRequest = true; // to exit from slewing
|
||||
} else {
|
||||
*_doStop = false;
|
||||
}
|
||||
*_doSlew = false;
|
||||
*_doTrack = true;
|
||||
|
||||
_wakeupRequest->test_and_set();
|
||||
_wakeupRequest->notify_one();
|
||||
} // already tracking, just ignore
|
||||
@@ -405,7 +424,7 @@ public:
|
||||
|
||||
error_t stopMount()
|
||||
{
|
||||
*_stopMovementRequest = true;
|
||||
// *_stopMovementRequest = true;
|
||||
|
||||
if constexpr (executePolicy == MccGenericMovementControlsPolicy::POLICY_ASYNC) {
|
||||
// if future is valid then stop is already called
|
||||
@@ -416,6 +435,9 @@ public:
|
||||
*_doStop = true;
|
||||
*_doSlew = false;
|
||||
*_doTrack = false;
|
||||
|
||||
*_stopMovementRequest = true; // to exit from slewing or tracking
|
||||
|
||||
_wakeupRequest->test_and_set();
|
||||
_wakeupRequest->notify_one();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user