#include "asibfm700_mount.h" #include namespace asibfm700 { Asibfm700Mount::Asibfm700Mount(Asibfm700MountConfig const& config, std::shared_ptr logger, const auto& pattern_range) : mcc::ccte::erfa::MccCCTE_ERFA({.meteo{.temperature = 10.0, .humidity = 0.5, .pressure = 1010.0}, .wavelength = config.refractWavelength, .lat = config.siteLatitude, .lon = config.siteLongitude, .elev = config.siteElevation}), Asibfm700PCM(config.pcmData), base_gm_class_t(gm_class_t{AsibFM700ServoController{config.servoControllerConfig}, mcc::MccTelemetry{this}, Asibfm700PZoneContainer{}, mcc::MccSimpleSlewingModel{this}, mcc::MccSimpleTrackingModel{this}, Asibfm700Logger{std::move(logger), pattern_range}}, Asibfm700StartState{}) { logDebug("Create Asibfm700Mount class instance ({})", this->getThreadId()); logInfo("Init AstroSib FM-700 mount with configuration:"); logInfo(" site latitude: {}", config.siteLatitude.sexagesimal()); logInfo(" site longitude: {}", config.siteLongitude.sexagesimal()); logInfo(" site elevation: {} meters", config.siteElevation); logInfo(" refraction wavelength: {} mkm", config.refractWavelength); logInfo(" leap seconds filename: {}", config.leapSecondFilename); logInfo(" IERS Bulletin A filename: {}", config.bulletinAFilename); logInfo("Add prohibited zones ..."); logInfo("Add MccAltLimitPZ zone: min alt = {}, lat = {}", config.pzMinAltitude.degrees(), config.siteLatitude.degrees()); addPZone(mcc::MccAltLimitPZ{config.pzMinAltitude, config.siteLatitude, this}); logInfo("Add MccAxisLimitSwitchPZ zone: min value = {}, max value = {}", config.pzLimitSwitchHAMin, config.pzLimitSwitchHAMax); size_t pz_num = addPZone(mcc::MccAxisLimitSwitchPZ{ config.pzLimitSwitchHAMin, config.pzLimitSwitchHAMax, this}); logInfo("{} prohibited zones were added", pz_num); } Asibfm700Mount::~Asibfm700Mount() { logDebug("Delete Asibfm700Mount class instance ({})", this->getThreadId()); } } // namespace asibfm700