This commit is contained in:
2025-09-11 18:23:39 +03:00
parent ab49f927fb
commit 8e8cb543ae
6 changed files with 146 additions and 77 deletions

View File

@@ -8,6 +8,8 @@
#include <mcc_moving_model_common.h>
#include <mcc_pcm.h>
#include <mcc_pzone_container.h>
#include <mcc_spdlog.h>
#include "asibfm700_servocontroller.h"
@@ -16,6 +18,11 @@ namespace asibfm700
static constexpr mcc::MccMountType asibfm700MountType = mcc::MccMountType::FORK_TYPE;
typedef mcc::MccDefaultPCM<asibfm700MountType> Asibfm700PCM;
typedef mcc::MccPZoneContainer<mcc::MccTimeDuration> Asibfm700PZoneContainer;
typedef mcc::utils::MccSpdlogLogger Asibfm700Logger;
struct Asibfm700MountConfig {
std::chrono::milliseconds hardwarePollingPeriod{100}; // main cycle period
@@ -30,10 +37,9 @@ struct Asibfm700MountConfig {
// 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}};
Asibfm700PCM::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{};

View File

@@ -12,9 +12,21 @@ Asibfm700Mount::Asibfm700Mount(Asibfm700MountConfig const& config,
.lat = config.siteLatitude,
.lon = config.siteLongitude,
.elev = config.siteElevation}),
mcc::MccDefaultPCM<asibfm700MountType>(config.pcmData),
base_gm_class_t(AsibFM700ServoController{config.servoControllerConfig}, mcc::MccTelemetry{this});
Asibfm700PCM(config.pcmData),
base_gm_class_t(AsibFM700ServoController{config.servoControllerConfig},
mcc::MccTelemetry{this},
Asibfm700PZoneContainer{},
mcc::MccSimpleSlewingModel{this},
mcc::MccSimpleTrackingModel{this},
Asibfm700Logger{std::move(logger), pattern_range})
{
logDebug("Create Asibfm700Mount class instance ({})", this->getThreadId());
}
Asibfm700Mount::~Asibfm700Mount()
{
logDebug("Delete Asibfm700Mount class instance ({})", this->getThreadId());
}
} // namespace asibfm700

View File

@@ -17,30 +17,37 @@
namespace asibfm700
{
class Asibfm700Mount : protected mcc::ccte::erfa::MccCCTE_ERFA,
protected mcc::MccDefaultPCM<asibfm700MountType>,
protected AsibFM700ServoController,
class Asibfm700Mount : public mcc::ccte::erfa::MccCCTE_ERFA,
public mcc::MccDefaultPCM<asibfm700MountType>,
public mcc::MccGenericMountFSM<AsibFM700ServoController,
mcc::MccTelemetry,
mcc::MccPZoneContainer<mcc::MccTimeDuration>,
Asibfm700PZoneContainer,
mcc::MccSimpleSlewingModel,
mcc::MccSimpleTrackingModel,
mcc::utils::MccSpdlogLogger>
Asibfm700Logger>
{
typedef mcc::MccGenericMountFSM<AsibFM700ServoController,
mcc::MccTelemetry,
mcc::MccPZoneContainer<mcc::MccTimeDuration>,
Asibfm700PZoneContainer,
mcc::MccSimpleSlewingModel,
mcc::MccSimpleTrackingModel,
mcc::utils::MccSpdlogLogger>
Asibfm700Logger>
base_gm_class_t;
public:
using base_gm_class_t::error_t;
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;
using Asibfm700Logger::logCritical;
using Asibfm700Logger::logDebug;
using Asibfm700Logger::logError;
using Asibfm700Logger::logInfo;
using Asibfm700Logger::logWarn;
Asibfm700Mount(Asibfm700MountConfig const& config,
std::shared_ptr<spdlog::logger> logger,
const auto& pattern_range = LOGGER_DEFAULT_FORMAT);
@@ -48,5 +55,10 @@ public:
~Asibfm700Mount();
};
static_assert(mcc::mcc_position_controls_c<Asibfm700Mount>, "");
static_assert(mcc::mcc_all_controls_c<Asibfm700Mount>, "");
static_assert(mcc::mcc_generic_mount_c<Asibfm700Mount>, "");
static_assert(mcc::mcc_generic_fsm_log_mount_c<Asibfm700Mount>, "");
} // namespace asibfm700