/* * SignalValidation.hh * * Created on: 29 апр. 2022 г. * Author: titov */ #ifndef UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALVALIDATION_HH_ #define UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALVALIDATION_HH_ #include "../ISetupStep.hh" #include "../../systemic/ISignal.hh" #include "../../systemic/IStatus.hh" #include "../../schematic/SignalValidation.hh" namespace application { namespace schematic { //!Валидация сигнала - замена невалидного значения предыдущим валидным. struct SignalValidationPrevious : public ISetupStep { systemic::ISignal * origin = nullptr; systemic::IStatus * validity = nullptr; bool input( Environment & env ); void build( Environment & env ); struct Links { Environment::SignalId origin; //!<Исходный сигнал. Environment::StatusId validity; //!<Признак валидности сигнала. Environment::SignalId validated;//!<Валидированный сигнал. }; const Links & links; SignalValidationPrevious( const Links & links ) : links(links) {} }; //!Валидация сигнала - замена невалидного значения фиксированным значением. struct SignalValidationFixed : public ISetupStep { systemic::ISignal * origin = nullptr; systemic::IStatus * validity = nullptr; bool input( Environment & env ); void build( Environment & env ); struct Links { Environment::SignalId origin; //!<Исходный сигнал. Environment::StatusId validity; //!<Признак валидности сигнала. Environment::SignalId validated;//!<Валидированный сигнал. }; struct Setting { float fixed; //!<Фиксированное валидное значение. }; const Links & links; const Setting & setting; SignalValidationFixed( const Links & links, const Setting & config ) : links(links), setting(config) {} }; //!Валидация сигнала - замена невалидного значения преднастроенным значением. struct SignalValidationPreset : public ISetupStep { static const Environment::Id provider = 0; systemic::ISignal * origin = nullptr; systemic::IStatus * validity = nullptr; typedef ::systemic::detail::SignalValidationPreset Object; systemic::Parameter parameter; bool input( Environment & env ); void build( Environment & env ); struct Links { Environment::SignalId origin; //!<Исходный сигнал. Environment::StatusId validity; //!<Признак валидности сигнала. Environment::SignalId validated;//!<Валидированный сигнал. Environment::SettingId preset; //!<Предзаданное значение.ы }; const Links & links; SignalValidationPreset( const Links & links ) : links(links) {} }; //!Валидация сигнала - замена невалидного значения резервным значением. struct SignalValidationAnother : public ISetupStep { systemic::ISignal * origin = nullptr; systemic::ISignal * alternate = nullptr; systemic::IStatus * validity = nullptr; bool input( Environment & env ); void build( Environment & env ); struct Links { Environment::SignalId origin; //!<Исходный сигнал. Environment::StatusId validity; //!<Признак валидности сигнала. Environment::SignalId validated;//!<Валидированный сигнал. Environment::SignalId alternate; //!<Запасное значение. }; const Links & links; SignalValidationAnother( const Links & links ) : links(links) {} }; } /* namespace schematic */ } /* namespace application */ #endif /* UMLIBRARY_APPLICATION_SCHEMATIC_SIGNALVALIDATION_HH_ */