This commit is contained in:
2025-09-10 18:07:22 +03:00
parent 00354d9b41
commit ab49f927fb
10 changed files with 154 additions and 27 deletions

View File

@@ -11,5 +11,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
set(ASIBFM700_LIB_SRC asibfm700_common.h asibfm700_servocontroller.h asibfm700_servocontroller.cpp)
set(ASIBFM700_LIB asibfm700mount)
add_library(${ASIBFM700_LIB} STATIC ${ASIBFM700_LIB_SRC})
add_library(${ASIBFM700_LIB} STATIC ${ASIBFM700_LIB_SRC}
asibfm700_mount.h asibfm700_mount.cpp)
target_link_libraries(${ASIBFM700_LIB} PRIVATE mcc1)

View File

@@ -5,9 +5,38 @@
/* COMMON LIBRARY DEFINITIONS */
#include <mcc_moving_model_common.h>
#include <mcc_pcm.h>
#include "asibfm700_servocontroller.h"
namespace asibfm700
{
static constexpr mcc::MccMountType asibfm700MountType = mcc::MccMountType::FORK_TYPE;
struct Asibfm700MountConfig {
std::chrono::milliseconds hardwarePollingPeriod{100}; // main cycle period
// CCTE-related configuration
double siteLatitude{43.646711_degs};
double siteLongitude{41.440732_degs};
double siteElevation{2100.0};
double refractWavelength{0.55};
std::string leapSecondFilename{};
std::string bulletinAFilename{};
// PCM-related configuration
mcc::MccDefaultPCM<asibfm700MountType>::pcm_data_t pcmData{
.type = mcc::MccDefaultPCMType::PCM_TYPE_GEOMETRY,
.siteLatitude = siteLatitude,
.geomCoefficients = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}};
AsibFM700ServoController::hardware_config_t servoControllerConfig{};
mcc::MccSimpleMovingModelParams movingModelParams{};
};
} // namespace asibfm700

View File

@@ -0,0 +1,20 @@
#include "asibfm700_mount.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}),
mcc::MccDefaultPCM<asibfm700MountType>(config.pcmData),
base_gm_class_t(AsibFM700ServoController{config.servoControllerConfig}, mcc::MccTelemetry{this});
{
}
} // namespace asibfm700

View File

@@ -0,0 +1,52 @@
#pragma once
#include <mcc_ccte_erfa.h>
#include <mcc_generic_mount.h>
#include <mcc_pcm.h>
#include <mcc_pzone_container.h>
#include <mcc_slewing_model.h>
#include <mcc_spdlog.h>
#include <mcc_telemetry.h>
#include <mcc_tracking_model.h>
#include "asibfm700_common.h"
namespace asibfm700
{
class Asibfm700Mount : protected mcc::ccte::erfa::MccCCTE_ERFA,
protected mcc::MccDefaultPCM<asibfm700MountType>,
protected AsibFM700ServoController,
public mcc::MccGenericMountFSM<AsibFM700ServoController,
mcc::MccTelemetry,
mcc::MccPZoneContainer<mcc::MccTimeDuration>,
mcc::MccSimpleSlewingModel,
mcc::MccSimpleTrackingModel,
mcc::utils::MccSpdlogLogger>
{
typedef mcc::MccGenericMountFSM<AsibFM700ServoController,
mcc::MccTelemetry,
mcc::MccPZoneContainer<mcc::MccTimeDuration>,
mcc::MccSimpleSlewingModel,
mcc::MccSimpleTrackingModel,
mcc::utils::MccSpdlogLogger>
base_gm_class_t;
public:
using mcc::ccte::erfa::MccCCTE_ERFA::setStateERFA;
using mcc::ccte::erfa::MccCCTE_ERFA::updateBulletinA;
using mcc::ccte::erfa::MccCCTE_ERFA::updateLeapSeconds;
using mcc::ccte::erfa::MccCCTE_ERFA::updateMeteoERFA;
Asibfm700Mount(Asibfm700MountConfig const& config,
std::shared_ptr<spdlog::logger> logger,
const auto& pattern_range = LOGGER_DEFAULT_FORMAT);
~Asibfm700Mount();
};
} // namespace asibfm700

View File

@@ -53,7 +53,7 @@ class is_error_code_enum<asibfm700::AsibFM700ServoControllerErrorCode> : public
namespace asibfm700
{
class AsibFM700ServoController final
class AsibFM700ServoController
{
public:
typedef std::error_code error_t;