MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/systemic/Timer.hh

79 lines
2.6 KiB
C++
Raw Normal View History

2024-06-07 11:12:56 +03:00
/*
* Timer.h
*
* Created on: 20 дек. 2017 г.
* Author: titov
*/
#ifndef SOURCE_SYSTEM_TIMER_H_
#define SOURCE_SYSTEM_TIMER_H_
#include <ctime>
namespace systemic {
//!Тип описывает отрезок времени в мс.
typedef std::clock_t time_t;
time_t seconds2time( float time_in_secods );
float time2seconds ( time_t time_ );
//!\brief Класс реализации работы с пользовательскими таймерами
/*!\details Предоставляет инструменты для отслеживания временных интервалов. */
class Timer {
private:
//!Перечисление состояния таймера
enum State {
off, //!<Выключен
active, //!<Активен
elapsed //!<Сработал
};
mutable State state; //!<Состояние таймера
time_t time_stamp; //!<Временная метка старта таймера
time_t time_delay; //!<Временная задержка срабатывания
static float system_tick_frequency_khz; //!<Частота системного тика в Гц
public:
//!\brief Установить частоту системного тика, Гц
/* !\details
* \param[in] frequency Частота системного тика, Гц
*/
static void setSystemTickFrequency( unsigned long frequency );
//!\brief Конструктор по умолчанию
Timer();
//!\brief Функция запуска таймера
/* !\details
* \param[in] delay Период таймера, мс
*/
void start( time_t delay );
//!\brief Функция останова таймера
void stop();
//!\brief Функция проверки пройденого интервала времени без деактивации таймера
/*!\details
* \return Признак истечения временного интервала
*/
bool delayElapsed() const;
//!\brief Функция проверки пройденого интервала времени с деактивацией таймера
/*!\details
* \return Признак истечения временного интервала
*/
bool delayFinished();
//!\brief Функция проверки активности таймера
/*!\details
* \return Признак активности временного интервала
*/
bool isActive() const;
};
}
#endif /* SOURCE_SYSTEM_TIMER_H_ */