/* * AlarmTimer.hh * * Created on: 26 мая 2021 г. * Author: sozonov */ #ifndef UMLIBRARY_APPLICATION_SCHEMATIC_ALARMTIMER_HH_ #define UMLIBRARY_APPLICATION_SCHEMATIC_ALARMTIMER_HH_ #include "../ISetupStep.hh" #include "../../schematic/AlarmTimerLogic.hh" namespace application { namespace schematic { //!Таймер. При достижении, заданного настройкой тайм-аута вызывается функция alarm и таймер останавливается. struct AlarmTimer : public ISetupStep { typedef systemic::IFunctor Action; //Входы Action * alarm = nullptr; //!Сигнал о переходе через верхнюю либо нижнюю границу. bool input( Environment & env ); void build( Environment & env ); struct Links { Environment::Id alarm; //!<Достижение значения тайм-аута. Environment::SignalId time; //!<Текущее значение таймера в секундах. Environment::Id start; //!<Запуск таймера. Environment::Id stop; //!<Останов таймера. Environment::Id reset; //!<Сброс таймера. Environment::StatusId state; //!<Статус запущен/остановлен. }; //!Начальные значения. struct Setting { float time_out; //!<Тайм-аут в секундах. }; const Links & links; const Setting & setting; const configuration::ProcessConfig & params; AlarmTimer( const Links & links, const Setting & setting, const configuration::ProcessConfig & params) : links(links), setting(setting), params(params) {} }; }} #endif /* UMLIBRARY_APPLICATION_SCHEMATIC_ALARMTIMER_HH_ */