...
This commit is contained in:
@@ -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{};
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user