MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/application/schematic/ReversCounter.hh

53 lines
2.1 KiB
C++
Raw Normal View History

2024-06-07 11:12:56 +03:00
/*
* 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_ */