This commit is contained in:
2025-10-03 12:11:21 +03:00
parent 962504ed98
commit 5fe2788cd7
4 changed files with 93 additions and 6 deletions

View File

@@ -6,13 +6,21 @@
/* GENERIC MOUNT REFERENCE IMPLEMENTATION */
#include "mcc_defaults.h"
#include "mcc_generics.h"
namespace mcc
{
enum class MccGenericMountErrorCode : int { ERROR_OK, ERROR_HW_INIT, ERROR_HW_STOP, ERROR_HW_GETSTATE };
enum class MccGenericMountErrorCode : int {
ERROR_OK,
ERROR_HW_INIT,
ERROR_HW_STOP,
ERROR_HW_GETSTATE,
ERROR_SET_TARGET,
ERROR_MOUNT_SLEW
};
enum class MccGenericFsmMountErrorCode : int { ERROR_OK, ERROR_INVALID_OPERATION, ERROR_UNKNOWN_EVENT };
@@ -197,6 +205,43 @@ public:
return MccGenericMountErrorCode::ERROR_OK;
}
// re-implements TelemetryT::setPointingTarget to hold target coordinates
// in some intermediate buffer
error_t setPointingTarget(mcc_celestial_point_c auto pt)
{
mcc_copy_celestial_point(std::move(pt), &_inputTargetCoordiniates);
std::string xstr;
if (_inputTargetCoordiniates.pair_kind == MccCoordPairKind::COORDS_KIND_RADEC_ICRS ||
_inputTargetCoordiniates.pair_kind == MccCoordPairKind::COORDS_KIND_RADEC_APP ||
_inputTargetCoordiniates.pair_kind == MccCoordPairKind::COORDS_KIND_HADEC_APP) {
xstr = MccAngle(_inputTargetCoordiniates.X).sexagesimal(true);
} else {
MccAngle(_inputTargetCoordiniates.X).sexagesimal();
}
logInfo(std::format("Set input target coordinates to: {} {} {}", xstr,
MccAngle(_inputTargetCoordiniates.Y).sexagesimal(),
MccCoordPairKindStr<_inputTargetCoordiniates.pair_kind>));
return MccGenericMountErrorCode::ERROR_OK;
}
// re-implements SlewModelT::slewToTarget to fetch input target coordinates from intermediate buffer
error_t slewToTarget(bool slew_and_stop = false)
{
auto err = TelemetryT::setPointingTarget(_inputTargetCoordiniates);
if (err) {
return mcc_deduce_error_code(err, MccGenericMountErrorCode::ERROR_SET_TARGET);
}
return mcc_deduce_error_code(SlewModelT::slewToTarget(slew_and_stop),
MccGenericMountErrorCode::ERROR_MOUNT_SLEW);
}
protected:
MccCelestialPoint _inputTargetCoordiniates;
};