This commit is contained in:
2025-08-24 04:03:45 +03:00
parent dc87ce0fb9
commit 60cade4d1f
93 changed files with 19500 additions and 55 deletions

View File

@@ -411,12 +411,37 @@ template <mcc_error_c RetT>
struct mcc_telemetry_interface_t {
virtual ~mcc_telemetry_interface_t() = default;
// update telemetry data right now
// an implementation is expected to update the data within the given 'timeout' time interval
// if not the method must return an appropriate timeout-error
template <std::derived_from<mcc_telemetry_interface_t> SelfT>
RetT updateTelemetryData(this SelfT&& self, traits::mcc_time_duration_c auto const& timeout)
{
return std::forward<SelfT>(self).updateTelemetryData(timeout);
}
// get current data
// an implementation is expected to return current, possibly already expired, telemetry data
// one should call consistently both 'updateTelemetryData' + 'telemetryData' methods
// to ensure that the data is up-to-date
template <std::derived_from<mcc_telemetry_interface_t> SelfT>
RetT telemetryData(this SelfT&& self, mcc_telemetry_data_c auto* data)
{
return std::forward<SelfT>(self).telemetryData(data);
}
// waiting for updated data
// an implementation is expected to block the current thread waiting for
// telemetry data to be updated (internal synchronization)
// if a timeout occured the method must return an appropriate timeout-error
template <std::derived_from<mcc_telemetry_interface_t> SelfT>
RetT waitForTelemetryData(this SelfT&& self,
mcc_telemetry_data_c auto* data,
traits::mcc_time_duration_c auto const& timeout)
{
return std::forward<SelfT>(self).waitForTelemetryData(data, timeout);
}
template <std::derived_from<mcc_telemetry_interface_t> SelfT>
RetT setPointingTarget(this SelfT&& self, mcc_celestial_point_c auto pt)
{