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