53 lines
1.7 KiB
C++
53 lines
1.7 KiB
C++
/*
|
|
* ReversCounter.hh
|
|
*
|
|
* Created on: 20 ìàÿ 2021 ã.
|
|
* Author: sozonov
|
|
*/
|
|
|
|
#ifndef UMLIBRARY_APPLICATION_SCHEMATIC_REVERSCOUNTER_HH_
|
|
#define UMLIBRARY_APPLICATION_SCHEMATIC_REVERSCOUNTER_HH_
|
|
|
|
#include "../ISetupStep.hh"
|
|
|
|
#include "../../schematic/CallBackReversCounter.hh"
|
|
|
|
namespace application { namespace schematic {
|
|
|
|
//todo: Íå èñïîëüçóåì òàâòàëîãèþ ïðè èìåíîâàíèè.
|
|
//!Ðåâåðñèâíûé ñ÷¸ò÷èê. Ïî äîñòèæåíèþ îäíîé èç ãðàíèö çíà÷åíèå ñ÷¸ò÷èêà ñòàíîâèòñÿ ðàâíûì çíà÷åíèþ äðóãîé ãðàíèöû. Íàïðÿâëåíèå ñ÷¸òà, çíà÷åíèå ñáðîñà è âåðõíÿÿ ãðàíèöà çàäàþòñÿ ÷åðåç íàñòðîéêè.
|
|
struct ActionCounter : public ISetupStep {
|
|
|
|
typedef systemic::IFunctor<void> Action;
|
|
|
|
//Âõîäû
|
|
Action * border_cross = nullptr; //!Ñèãíàë î ïåðåõîäå ÷åðåç âåðõíþþ ëèáî íèæíþþ ãðàíèöó.
|
|
|
|
bool input( Environment & env );
|
|
void build( Environment & env );
|
|
|
|
struct Links {
|
|
Environment::Id border_cross; //!<Äåéñòâèå ïðè ïåðåõîäå ÷åðåç ãðàíèöó.
|
|
|
|
Environment::Id count; //!<Âûïîëíåíèå øàãà ñ÷¸òà.
|
|
Environment::Id reset; //!<Ñáðîñ ñ÷¸ò÷èêà.
|
|
Environment::SignalId value; //!<Òåêóùåå çíà÷åíèå ñ÷¸ò÷èêà.
|
|
};
|
|
|
|
//!Íà÷àëüíûå çíà÷åíèÿ.
|
|
struct Setting {
|
|
unsigned int direction; //!<Íàïðàâëåíèå ñ÷åòà: 0 - ïîëîæèòåëüíîå, 1 - îòðèöàòåëüíîå.
|
|
unsigned int module; //!<Ìîäóëü ñ÷¸òà.
|
|
unsigned int reset_value; //!<Çíà÷åíèå ïî ñáðîñó.
|
|
};
|
|
|
|
const Links & links;
|
|
const Setting & setting;
|
|
|
|
ActionCounter( const Links & links, const Setting & setting ) :
|
|
links(links), setting(setting) {}
|
|
};
|
|
|
|
}}
|
|
#endif /* UMLIBRARY_APPLICATION_SCHEMATIC_REVERSCOUNTER_HH_ */
|