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

43 lines
1.4 KiB
C++

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