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