This commit is contained in:
2025-09-02 16:49:58 +03:00
parent de80acf315
commit fe6492e4fc
11 changed files with 484 additions and 161 deletions

View File

@@ -19,6 +19,8 @@
namespace mcc
{
static constexpr double mcc_sideral_to_UT1_ratio = 1.002737909350795; // sideral/UT1
// mount construction type (only the most common ones)
enum class MccMountType : uint8_t { GERMAN_TYPE, FORK_TYPE, CROSSAXIS_TYPE, ALTAZ_TYPE };
@@ -879,56 +881,18 @@ concept mcc_guiding_model_c = requires(T t) {
/* GENERIC MOUNT CLASS CONCEPT */
// a class containing mount position related controls
template <typename T>
concept mcc_position_controls_c = mcc_ccte_c<T> && mcc_hardware_c<T> && mcc_PCM_c<T>;
// template <mcc_error_c RetT, typename StopReasonT>
// struct mcc_generic_mount_interface_t {
// virtual ~mcc_generic_mount_interface_t() = default;
// a class containing full set of mount controls
template <typename T>
concept mcc_all_controls_c = mcc_position_controls_c<T> && mcc_telemetry_c<T> && mcc_pzone_container_c<T>;
// // slew mount to target (target coordinates were defined in telemetry data)
// template <std::derived_from<mcc_generic_mount_interface_t> SelfT>
// RetT slewToTarget(this SelfT&& self, mcc_slewing_model_c auto model)
// {
// return std::forward<SelfT>(self).slewToTarget(std::move(model));
// }
// // track target, i.e., the mount moves with celestial speed
// template <std::derived_from<mcc_generic_mount_interface_t> SelfT>
// RetT trackTarget(this SelfT&& self, mcc_tracking_model_c auto model)
// {
// return std::forward<SelfT>(self).trackTarget(std::move(model));
// }
// template <std::derived_from<mcc_generic_mount_interface_t> SelfT>
// RetT startGuidingTarget(this SelfT&& self, mcc_guiding_model_c auto model)
// {
// return std::forward<SelfT>(self).startGuidingTarget(std::move(model));
// }
// template <std::derived_from<mcc_generic_mount_interface_t> SelfT>
// RetT stopGuidingTarget(this SelfT&& self)
// {
// return std::forward<SelfT>(self).stopGuidingTarget();
// }
// template <std::derived_from<mcc_generic_mount_interface_t> SelfT>
// RetT stopMount(this SelfT&& self, StopReasonT reason)
// {
// return std::forward<SelfT>(self).stopMount(std::move(reason));
// }
// protected:
// mcc_generic_mount_interface_t() = default;
// };
// template<typename T>
// concept mcc_generic_mount_c
// = std::derived_from<T, mcc_generic_mount_interface_t<typename T::error_t, typename T::stop_reason_t>>
// && mcc_telemetry_c<T> && mcc_pzone_container_c<T>;
template <typename T>
concept mcc_generic_mount_c = mcc_hardware_c<T> && mcc_telemetry_c<T> && mcc_pzone_container_c<T> && requires(T t) {
concept mcc_generic_mount_c = mcc_telemetry_c<T> && mcc_pzone_container_c<T> && requires(T t) {
requires mcc_error_c<typename T::error_t>;
// slew mount to target (target coordinates were defined in telemetry data)