mountcontrol/cxx/asibfm700_common.h
2025-08-07 02:24:28 +03:00

82 lines
2.5 KiB
C++

#pragma once
/* AstroSIB-FM700 FORK MOUNT CONTROL LIBRARY */
/* COMMON DEFINITIONS */
#include "asibfm700_hardware.h"
// #include "mcc_fsm_mount.h"
#include "mcc_guiding_model.h"
#include "mcc_mount_astro_erfa.h"
#include "mcc_mount_pec.h"
#include "mcc_mount_pz.h"
#include "mcc_mount_telemetry.h"
#include "mcc_slew_model.h"
// #include "mcc_spdlog.h"
namespace asibfm700
{
typedef mcc::astrom::erfa::MccMountAstromEngineERFA<mcc::MccAngle> AsibFM700AstromEngine;
typedef mcc::MccMountDefaultPEC<mcc::MccMountType::FORK_TYPE> AsibFM700PointingErrorCorrection;
typedef mcc::MccMountTelemetryData<AsibFM700AstromEngine> AsibFM700TelemetryData;
typedef mcc::MccMountTelemetry<AsibFM700AstromEngine,
AsibFM700PointingErrorCorrection,
AsibFM700Hardware,
AsibFM700TelemetryData>
AsibFM700Telemetry;
static_assert(std::movable<AsibFM700Telemetry>);
static_assert(std::movable<AsibFM700AstromEngine>);
static_assert(std::movable<mcc::MccAltLimitPZ<>>);
// typedef mcc::MccSimpleSlewModel<mcc::utils::MccSpdlogLogger> AsibFM700SlewModel;
// typedef mcc::MccSimpleGuidingModel<mcc::utils::MccSpdlogLogger> AsibFM700GuidingModel;
template <mcc::traits::mcc_logger_c LoggerT>
using AsibFM700SlewModel = mcc::MccSimpleSlewModel<LoggerT>;
template <mcc::traits::mcc_logger_c LoggerT>
using AsibFM700GuidingModel = mcc::MccSimpleGuidingModel<LoggerT>;
/*
template <mcc::traits::mcc_logger_c LoggerT>
struct AsibFM700MountControls {
AsibFM700MountControls(AsibFM700MountControls&&) = default;
AsibFM700MountControls& operator=(AsibFM700MountControls&&) = default;
AsibFM700AstromEngine astrometryEngine;
AsibFM700PointingErrorCorrection PEC;
AsibFM700Hardware hardware;
AsibFM700Telemetry telemetry{astrometryEngine, PEC, hardware};
std::tuple<mcc::MccAltLimitPZ<mcc::MccAltLimitKind::MIN_ALT_LIMIT>> prohibitedZones;
AsibFM700SlewModel<LoggerT> slewModel{PEC, hardware, prohibitedZones};
AsibFM700GuidingModel<LoggerT> guidingModel{PEC, hardware, prohibitedZones};
};
static_assert(mcc::traits::mcc_mount_controls_c<AsibFM700MountControls<mcc::utils::MccSpdlogLogger>>);
// global mount configuration
class AsibFM700Mount : public mcc::MccMount<AsibFM700MountControls<mcc::utils::MccSpdlogLogger>>
{
class InitState : public AsibFM700Mount::MccMountEventBase
{
};
public:
};
*/
} // namespace asibfm700