This commit is contained in:
Timur A. Fatkhullin
2025-05-19 14:21:04 +03:00
parent d0674d15a6
commit 88d4b30a58
2 changed files with 35 additions and 5 deletions

View File

@@ -6,8 +6,15 @@
namespace mcc::traits
{
template <typename T, mcc::MccMountType MOUNT_TYPE>
concept mcc_mount_c = std::derived_from<T, mcc::MccMount<MOUNT_TYPE>>;
// template <typename T, mcc::MccMountType MOUNT_TYPE>
// concept mcc_mount_c = std::derived_from<T, mcc::MccMount<MOUNT_TYPE>>;
template <typename T>
concept mcc_mount_c = requires {
typename T::mount_config_t;
requires std::same_as<decltype(T::mountType), MccMountType>;
requires std::derived_from<T, mcc::MccMount<T::mountType, typename T::mount_config_t>>;
};
} // namespace mcc::traits
@@ -28,8 +35,7 @@ public:
// helper
static constexpr auto mcc_noop_callback = [](const mount_state_error_t&) {};
template <MccMountType MOUNT_TYPE>
MccMountAbstractState(traits::mcc_mount_c<MOUNT_TYPE> auto* mount_ptr,
MccMountAbstractState(traits::mcc_mount_c auto* mount_ptr,
std::convertible_to<enter_callback_t> auto&& enter_callback,
std::convertible_to<exit_callback_t> auto&& exit_callback,
std::convertible_to<error_callback_t> auto&& error_callback)
@@ -74,4 +80,27 @@ public:
}
};
/* */
class MccMountStateSlew
{
public:
enum coords_kind_t { COORDS_KIND_RADEC_IRCS, COORDS_KIND_RADEC_APP, COORDS_KIND_HADEC_APP, COORDS_KIND_AZALT };
struct slew_state_params_t {
coords_kind_t coordKind{COORDS_KIND_RADEC_APP};
MccAngle x, y; // according to 'coordKind'
bool stop{false}; // stop after
};
MccMountStateSlew() {}
std::string_view ident() const
{
return "MCC-MOUNT-STATE-SLEW";
}
};
} // namespace mcc