#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" namespace asibfm700 { typedef mcc::astrom::erfa::MccMountAstromEngineERFA AsibFM700AstromEngine; typedef mcc::MccMountDefaultPEC AsibFM700PointingErrorCorrection; typedef mcc::MccMountTelemetryData AsibFM700TelemetryData; typedef mcc::MccMountTelemetry AsibFM700Telemetry; // typedef mcc::MccSimpleSlewModel<> AsibFM700SlewModel; // typedef mcc::MccSimpleGuidingModel<> AsibFM700GuidingModel; template using AsibFM700SlewModel = mcc::MccSimpleSlewModel; template using AsibFM700GuidingModel = mcc::MccSimpleGuidingModel; template struct AsibFM700MountControls { AsibFM700MountControls(AsibFM700MountControls&&) = default; AsibFM700MountControls& operator=(AsibFM700MountControls&&) = default; AsibFM700AstromEngine astrometryEngine; AsibFM700PointingErrorCorrection PEC; AsibFM700Hardware hardware; AsibFM700Telemetry telemetry{astrometryEngine, PEC, hardware}; AsibFM700SlewModel slewModel; AsibFM700GuidingModel guidingModel; std::tuple> prohibitedZones; }; // global mount configuration struct AsibFM700Config { std::chrono::milliseconds hardwareAskingPeriod{100}; // main cycle period // mount hardware config AsibFM700Hardware::hardware_config_t hardwareConfig; }; class AsibFM700Mount : public mcc::MccMount> { public: }; } // namespace asibfm700