...
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
20
asibfm700/asibfm700_mount.cpp
Normal file
20
asibfm700/asibfm700_mount.cpp
Normal 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
|
||||
52
asibfm700/asibfm700_mount.h
Normal file
52
asibfm700/asibfm700_mount.h
Normal 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
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user