55 lines
2.4 KiB
C++
55 lines
2.4 KiB
C++
#include "asibfm700_mount.h"
|
|
|
|
#include <mcc_pzone.h>
|
|
|
|
namespace asibfm700
|
|
{
|
|
|
|
|
|
|
|
Asibfm700Mount::Asibfm700Mount(Asibfm700MountConfig const& config,
|
|
std::shared_ptr<spdlog::logger> 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<mcc::MccAltLimitKind::MIN_ALT_LIMIT>{config.pzMinAltitude, config.siteLatitude, this});
|
|
|
|
logInfo("Add MccAxisLimitSwitchPZ zone: min value = {}, max value = {}", config.pzLimitSwitchHAMin,
|
|
config.pzLimitSwitchHAMax);
|
|
size_t pz_num = addPZone(mcc::MccAxisLimitSwitchPZ<mcc::MccCoordKind::COORDS_KIND_HA>{
|
|
config.pzLimitSwitchHAMin, config.pzLimitSwitchHAMax, this});
|
|
|
|
logInfo("{} prohibited zones were added", pz_num);
|
|
}
|
|
|
|
|
|
Asibfm700Mount::~Asibfm700Mount()
|
|
{
|
|
logDebug("Delete Asibfm700Mount class instance ({})", this->getThreadId());
|
|
}
|
|
|
|
} // namespace asibfm700
|