...
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user