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

43 lines
1.9 KiB
C++
Raw Normal View History

2024-06-07 11:12:56 +03:00
/*
* ReversCounter.hh
*
* Created on: 19 мая 2021 г.
* Author: sozonov
*/
#ifndef UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_
#define UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_
/*!Класс реализует логику работы реверсивного счётчика:
*В зависимости от настройки direction, при вызове метода счёта, счетчик либо увеличивает, либо уменьшает свое значение
*Модуль счёта module отвечает за значение сброса счётчика
*При вызове метода сброса, счётчик принимает значение по сбросу reset_value */
class ReversCounter {
public:
//todo: В конструктор необходимо передавать енум. Решение о преобразовании - на вызывающем коде.
enum Direction{
Increment ,
Decrement
};
ReversCounter(unsigned int _dir, unsigned int _mod, unsigned int _r_v);
//!Дискретный шаг счёта.
void count();
//!Сброс значения счетчика.
void reset();
//!Получение значения счётчика.
unsigned int getCount() const{return counter;}
protected:
//Данные, задающиеся в настройках
Direction direction; //!<направление счета
const unsigned int module; //!<модуль счёта
const unsigned int reset_value; //!<значение по сбросу
unsigned int counter; //!<значение счётчика
//!метод при пересечении через границы счётчика
virtual void border_crossing();
};
#endif /* UMLIBRARY_SCHEMATIC_REVERSCOUNTER_HH_ */