57 lines
1.6 KiB
C++
57 lines
1.6 KiB
C++
/*
|
|
* 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<void> 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_ */
|