MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/application/schematic/ReversCounter.hh
2024-06-07 11:12:56 +03:00

53 lines
2.1 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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_ */