This commit is contained in:
2025-08-25 13:40:54 +03:00
parent 60cade4d1f
commit 0295d93cd3
5 changed files with 388 additions and 57 deletions

View File

@@ -442,6 +442,8 @@ struct mcc_telemetry_interface_t {
return std::forward<SelfT>(self).waitForTelemetryData(data, timeout);
}
// set target coordinates
template <std::derived_from<mcc_telemetry_interface_t> SelfT>
RetT setPointingTarget(this SelfT&& self, mcc_celestial_point_c auto pt)
{
@@ -467,11 +469,16 @@ concept mcc_PCM_result_c = requires(T t) {
template <mcc_error_c RetT, mcc_PCM_result_c ResT>
struct mcc_PCM_interface_t {
virtual ~mcc_PCM_interface_t() = default;
template <std::derived_from<mcc_PCM_interface_t> SelfT>
RetT computePCM(this SelfT&& self, mcc_celestial_point_c auto pt, ResT* result)
{
return std::forward<SelfT>(self).computePCM(std::move(pt), result);
}
protected:
mcc_PCM_interface_t() = default;
};
template <typename T>
@@ -644,4 +651,22 @@ template <typename T>
concept mcc_pzone_container_c = std::derived_from<T, mcc_pzone_container_interface_t<typename T::error_t>>;
template <mcc_error_c RetT>
struct mcc_generic_mount_interface_t {
virtual ~mcc_generic_mount_interface_t() = default;
RetT slew(mcc_celestial_point_c auto pt) {}
protected:
mcc_generic_mount_interface_t() = default;
};
template <typename T>
concept mcc_generic_mount_c = mcc_telemetry_c<T> && requires(T t) {
requires mcc_error_c<typename T::error_t>;
{ t.slewToTarget() } -> std::same_as<typename T::error_t>;
{ t.guidingTarget() } -> std::same_as<typename T::error_t>;
};
} // namespace mcc