79 lines
1.9 KiB
C++
79 lines
1.9 KiB
C++
/*
|
||
* 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_ */
|