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

79 lines
1.9 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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