This commit is contained in:
2025-09-16 18:35:39 +03:00
parent bb41710645
commit 732cd33947
5 changed files with 433 additions and 175 deletions

View File

@@ -29,4 +29,28 @@ Asibfm700Mount::~Asibfm700Mount()
logDebug("Delete Asibfm700Mount class instance ({})", this->getThreadId());
}
Asibfm700Mount1::Asibfm700Mount1(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());
}
Asibfm700Mount1::~Asibfm700Mount1()
{
logDebug("Delete Asibfm700Mount class instance ({})", this->getThreadId());
}
} // namespace asibfm700

View File

@@ -64,6 +64,14 @@ class Asibfm700Mount1 : public mcc::ccte::erfa::MccCCTE_ERFA,
mcc::MccSimpleTrackingModel,
Asibfm700Logger>>
{
typedef mcc::MccGenericMount<AsibFM700ServoController,
mcc::MccTelemetry,
Asibfm700PZoneContainer,
mcc::MccSimpleSlewingModel,
mcc::MccSimpleTrackingModel,
Asibfm700Logger>
gm_class_t;
typedef mcc::MccGenericFsmMount<mcc::MccGenericMount<AsibFM700ServoController,
mcc::MccTelemetry,
Asibfm700PZoneContainer,
@@ -72,6 +80,41 @@ class Asibfm700Mount1 : public mcc::ccte::erfa::MccCCTE_ERFA,
Asibfm700Logger>>
base_gm_class_t;
protected:
struct Asibfm700ErrorState : base_gm_class_t::MccGenericFsmMountBaseState {
static constexpr std::string_view ID{"ASIBFM700-MOUNT-ERROR-STATE"};
void exit(MccGenericFsmMountErrorEvent& event)
{
event.mount()->logWarn("The mount already in error state!");
}
void enter(MccGenericFsmMountErrorEvent& event)
{
event.mount()->logWarn("The mount already in error state!");
}
void exit(mcc::fsm::traits::fsm_event_c auto& event)
{
exitLog(event);
}
void enter(mcc::fsm::traits::fsm_event_c auto& event)
{
enterLog(event);
// ...
}
using transition_t = mcc::fsm::fsm_transition_table_t<
std::pair<MccGenericFsmMountErrorEvent, Asibfm700ErrorState>,
std::pair<MccGenericFsmMountInitEvent, MccGenericFsmMountInitState<Asibfm700ErrorState>>,
std::pair<MccGenericFsmMountIdleEvent, MccGenericFsmMountIdleState<Asibfm700ErrorState>>>;
};
typedef base_gm_class_t::MccGenericFsmMountStartState<Asibfm700ErrorState> Asibfm700StartState;
public:
using base_gm_class_t::error_t;