...
This commit is contained in:
parent
d417c03f59
commit
b12c0ec521
@ -759,6 +759,24 @@ template <typename T>
|
|||||||
concept mcc_telemetry_c = std::derived_from<T, mcc_telemetry_interface_t<typename T::error_t>>;
|
concept mcc_telemetry_c = std::derived_from<T, mcc_telemetry_interface_t<typename T::error_t>>;
|
||||||
|
|
||||||
|
|
||||||
|
// template <typename T, typename VT>
|
||||||
|
// concept mcc_retval_c = requires(T t) {
|
||||||
|
// //
|
||||||
|
// []<mcc_error_c ErrT>(std::expected<VT, ErrT>) {}(t);
|
||||||
|
// };
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
concept mcc_telemetry_controls_c = requires(T t) {
|
||||||
|
requires mcc_telemetry_data_c<typename T::telemetry_data_t>;
|
||||||
|
|
||||||
|
{ t.telemetryData(std::declval<typename T::telemetry_data_t*>()) } -> mcc_error_c;
|
||||||
|
// { t.telemetryData() } -> mcc_retval_c<typename T::telemetry_data_t>;
|
||||||
|
|
||||||
|
{
|
||||||
|
t.setPointingTarget(std::declval<decltype(std::declval<typename T::telemetry_data_t>().entered_target)>())
|
||||||
|
} -> mcc_error_c;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* PROHIBITED ZONE CLASS CONCEPT */
|
/* PROHIBITED ZONE CLASS CONCEPT */
|
||||||
|
|
||||||
@ -975,6 +993,21 @@ concept mcc_tracking_model_c = requires(T t) {
|
|||||||
// };
|
// };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// a concept of a class of mount moving control methods
|
||||||
|
template <typename T>
|
||||||
|
concept mcc_moving_controls_c = requires(T t) {
|
||||||
|
typename T::moving_params_t;
|
||||||
|
|
||||||
|
{ t.slewToTarget(std::declval<bool>()) } -> mcc_error_c;
|
||||||
|
{ t.trackTarget() } -> mcc_error_c;
|
||||||
|
|
||||||
|
{ t.setMovingParams(std::declval<typename T::moving_params_t>()) } -> mcc_error_c;
|
||||||
|
{ t.getMovingParams() } -> std::same_as<typename T::moving_params_t>;
|
||||||
|
|
||||||
|
{ t.stopMount() } -> mcc_error_c;
|
||||||
|
};
|
||||||
|
|
||||||
/* GENERIC MOUNT CLASS CONCEPT */
|
/* GENERIC MOUNT CLASS CONCEPT */
|
||||||
|
|
||||||
|
|
||||||
@ -995,23 +1028,14 @@ concept mcc_all_controls_c = mcc_position_controls_c<T> && mcc_telemetry_c<T> &&
|
|||||||
// 3) slewing and tracking, stop and init mount methods
|
// 3) slewing and tracking, stop and init mount methods
|
||||||
template <typename T>
|
template <typename T>
|
||||||
concept mcc_generic_mount_c = mcc_telemetry_c<T> && mcc_pzone_container_c<T> && requires(T t, const T t_const) {
|
concept mcc_generic_mount_c = mcc_telemetry_c<T> && mcc_pzone_container_c<T> && requires(T t, const T t_const) {
|
||||||
// requires mcc_error_c<typename T::error_t>;
|
|
||||||
|
|
||||||
// slew mount to target (it is assumed that the target coordinates are determined in the telemetry data)
|
// slew mount to target (it is assumed that the target coordinates are determined in the telemetry data)
|
||||||
{ t.slewToTarget(std::declval<bool>()) };
|
{ t.slewToTarget(std::declval<bool>()) };
|
||||||
// { t.slewToTarget() } -> std::same_as<typename T::error_t>;
|
|
||||||
|
|
||||||
// track target, i.e., the mount moves with celestial speed
|
// track target, i.e., the mount moves with celestial speed
|
||||||
{ t.trackTarget() };
|
{ t.trackTarget() };
|
||||||
// { t.trackTarget() } -> std::same_as<typename T::error_t>;
|
|
||||||
|
|
||||||
|
|
||||||
// { t.startGuidingTarget() } -> std::same_as<typename T::error_t>;
|
|
||||||
// { t.stopGuidingTarget() } -> std::same_as<typename T::error_t>;
|
|
||||||
|
|
||||||
// stop any movement
|
// stop any movement
|
||||||
{ t.stopMount() };
|
{ t.stopMount() };
|
||||||
// { t.stopMount() } -> std::same_as<typename T::error_t>;
|
|
||||||
|
|
||||||
// init mount
|
// init mount
|
||||||
{ t.initMount() };
|
{ t.initMount() };
|
||||||
|
|||||||
@ -142,6 +142,10 @@ class MccSimpleMovingControls
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_st.str().empty()) { // nothing to save
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
fst.open(_filename);
|
fst.open(_filename);
|
||||||
|
|
||||||
if (!fst.is_open()) {
|
if (!fst.is_open()) {
|
||||||
@ -164,6 +168,8 @@ class MccSimpleMovingControls
|
|||||||
public:
|
public:
|
||||||
typedef std::error_code error_t;
|
typedef std::error_code error_t;
|
||||||
|
|
||||||
|
typedef MccSimpleMovingModelParams moving_params_t;
|
||||||
|
|
||||||
enum Mode { MOVING_MODE_SLEW, MOVING_MODE_TRACK, MOVING_MODE_ERROR };
|
enum Mode { MOVING_MODE_SLEW, MOVING_MODE_TRACK, MOVING_MODE_ERROR };
|
||||||
|
|
||||||
// typedef std::CallbackFuncTion<void(Mode mode)> mode_switch_callback_t;
|
// typedef std::CallbackFuncTion<void(Mode mode)> mode_switch_callback_t;
|
||||||
@ -769,7 +775,7 @@ public:
|
|||||||
return *_lastError;
|
return *_lastError;
|
||||||
}
|
}
|
||||||
|
|
||||||
error_t setMovingParams(MccSimpleMovingModelParams params)
|
error_t setMovingParams(moving_params_t params)
|
||||||
{
|
{
|
||||||
std::lock_guard lock{*_currentParamsMutex};
|
std::lock_guard lock{*_currentParamsMutex};
|
||||||
|
|
||||||
@ -778,7 +784,7 @@ public:
|
|||||||
return MccSimpleMovingControlsErrorCode::ERROR_OK;
|
return MccSimpleMovingControlsErrorCode::ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MccSimpleMovingModelParams getMovingParams() const
|
moving_params_t getMovingParams() const
|
||||||
{
|
{
|
||||||
std::lock_guard lock{*_currentParamsMutex};
|
std::lock_guard lock{*_currentParamsMutex};
|
||||||
|
|
||||||
@ -798,7 +804,7 @@ protected:
|
|||||||
std::unique_ptr<std::atomic_bool> _stopMoving;
|
std::unique_ptr<std::atomic_bool> _stopMoving;
|
||||||
|
|
||||||
std::unique_ptr<std::mutex> _currentParamsMutex;
|
std::unique_ptr<std::mutex> _currentParamsMutex;
|
||||||
MccSimpleMovingModelParams _currentParams{};
|
moving_params_t _currentParams{};
|
||||||
|
|
||||||
std::unique_ptr<std::atomic<error_t>> _lastError;
|
std::unique_ptr<std::atomic<error_t>> _lastError;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user