/* * Timer.h * * Created on: 20 дек. 2017 г. * Author: titov */ #ifndef SOURCE_SYSTEM_TIMER_H_ #define SOURCE_SYSTEM_TIMER_H_ #include 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_ */