rewrite MccGenericMount and MccGenericFsmMount class creation

Asibfm700MountNetServer is now started
This commit is contained in:
Timur A. Fatkhullin
2025-10-31 01:30:24 +03:00
parent f2be52d17c
commit cb362c6e49
7 changed files with 482 additions and 430 deletions

View File

@@ -156,18 +156,24 @@ public:
enum class mount_status_t : int { IDLE, INITIALIZATION, STOPPED, SLEWING, ADJUSTING, TRACKING, ERROR };
MccGenericMount(HardwareT hardware,
TelemetryT telemetry,
PZoneContT pzone_cont,
SlewModelT slew_model,
TrackModelT track_model,
LoggerT logger = MccNullLogger{})
: HardwareT(std::move(hardware)),
TelemetryT(std::move(telemetry)),
PZoneContT(std::move(pzone_cont)),
SlewModelT(std::move(slew_model)),
TrackModelT(std::move(track_model)),
LoggerT(std::move(logger)),
template <typename... HardwareCtorArgTs,
typename... TelemetryCtorArgTs,
typename... PZoneContCtorArgTs,
typename... SlewModelCtorArgTs,
typename... TrackModelCtorArgTs,
typename... LoggerCtorArgTs>
MccGenericMount(std::tuple<HardwareCtorArgTs...> hw_ctor_args,
std::tuple<TelemetryCtorArgTs...> tm_ctor_args,
std::tuple<PZoneContCtorArgTs...> pzcont_ctor_args,
std::tuple<SlewModelCtorArgTs...> smodel_ctor_args,
std::tuple<TrackModelCtorArgTs...> tmodel_ctor_args,
std::tuple<LoggerCtorArgTs...> log_ctor_args)
: HardwareT(std::make_from_tuple<HardwareT>(std::move(hw_ctor_args))),
TelemetryT(std::make_from_tuple<TelemetryT>(std::move(tm_ctor_args))),
PZoneContT(std::make_from_tuple<PZoneContT>(std::move(pzcont_ctor_args))),
SlewModelT(std::make_from_tuple<SlewModelT>(std::move(smodel_ctor_args))),
TrackModelT(std::make_from_tuple<TrackModelT>(std::move(tmodel_ctor_args))),
LoggerT(std::make_from_tuple<LoggerT>(std::move(log_ctor_args))),
_mountStatus(new std::atomic<mount_status_t>{})
{
*_mountStatus = mount_status_t::IDLE;
@@ -750,12 +756,17 @@ protected:
public:
template <fsm::traits::fsm_state_c ERROR_STATE_T = MccGenericFsmMountErrorState>
MccGenericFsmMount(MOUNT_T mount,
fsm::traits::fsm_state_c auto start_state = MccGenericFsmMountStartState<ERROR_STATE_T>{})
: MOUNT_T(std::move(mount)), fsm::MccFiniteStateMachine(std::move(start_state))
template <fsm::traits::fsm_state_c StartStateT, typename... MountCtorArgTs>
MccGenericFsmMount(StartStateT start_state, MountCtorArgTs&&... mount_ctor_args)
: MOUNT_T(std::forward<MountCtorArgTs>(mount_ctor_args)...), fsm::MccFiniteStateMachine(std::move(start_state))
{
}
// template <fsm::traits::fsm_state_c ERROR_STATE_T = MccGenericFsmMountErrorState>
// MccGenericFsmMount(MOUNT_T mount,
// fsm::traits::fsm_state_c auto start_state = MccGenericFsmMountStartState<ERROR_STATE_T>{})
// : MOUNT_T(std::move(mount)), fsm::MccFiniteStateMachine(std::move(start_state))
// {
// }
// reimplementation of base-class methods to adapt it to FSM-behavior