...
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>>;
|
||||
|
||||
|
||||
// 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 */
|
||||
|
||||
@ -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 */
|
||||
|
||||
|
||||
@ -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
|
||||
template <typename T>
|
||||
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)
|
||||
{ t.slewToTarget(std::declval<bool>()) };
|
||||
// { t.slewToTarget() } -> std::same_as<typename T::error_t>;
|
||||
|
||||
// track target, i.e., the mount moves with celestial speed
|
||||
{ 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
|
||||
{ t.stopMount() };
|
||||
// { t.stopMount() } -> std::same_as<typename T::error_t>;
|
||||
|
||||
// init mount
|
||||
{ t.initMount() };
|
||||
|
||||
@ -142,6 +142,10 @@ class MccSimpleMovingControls
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_st.str().empty()) { // nothing to save
|
||||
return true;
|
||||
}
|
||||
|
||||
fst.open(_filename);
|
||||
|
||||
if (!fst.is_open()) {
|
||||
@ -164,6 +168,8 @@ class MccSimpleMovingControls
|
||||
public:
|
||||
typedef std::error_code error_t;
|
||||
|
||||
typedef MccSimpleMovingModelParams moving_params_t;
|
||||
|
||||
enum Mode { MOVING_MODE_SLEW, MOVING_MODE_TRACK, MOVING_MODE_ERROR };
|
||||
|
||||
// typedef std::CallbackFuncTion<void(Mode mode)> mode_switch_callback_t;
|
||||
@ -769,7 +775,7 @@ public:
|
||||
return *_lastError;
|
||||
}
|
||||
|
||||
error_t setMovingParams(MccSimpleMovingModelParams params)
|
||||
error_t setMovingParams(moving_params_t params)
|
||||
{
|
||||
std::lock_guard lock{*_currentParamsMutex};
|
||||
|
||||
@ -778,7 +784,7 @@ public:
|
||||
return MccSimpleMovingControlsErrorCode::ERROR_OK;
|
||||
}
|
||||
|
||||
MccSimpleMovingModelParams getMovingParams() const
|
||||
moving_params_t getMovingParams() const
|
||||
{
|
||||
std::lock_guard lock{*_currentParamsMutex};
|
||||
|
||||
@ -798,7 +804,7 @@ protected:
|
||||
std::unique_ptr<std::atomic_bool> _stopMoving;
|
||||
|
||||
std::unique_ptr<std::mutex> _currentParamsMutex;
|
||||
MccSimpleMovingModelParams _currentParams{};
|
||||
moving_params_t _currentParams{};
|
||||
|
||||
std::unique_ptr<std::atomic<error_t>> _lastError;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user