82 lines
2.5 KiB
C++
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 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
|