| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | /** * @file * @author Marek Bel */#ifndef TIMERREMAINING_H#define TIMERREMAINING_H#include "Timer.h"#include "Arduino.h"#include "system_timer.h"#include <limits.h>class TimerRemaining : public LongTimer{public:    TimerRemaining() : m_period(){}    void start() = delete;    bool expired(unsigned long msPeriod) = delete;    /**     * @brief Start timer     * @param msPeriod Time to expire in milliseconds     */    void start(unsigned long msPeriod)    {        m_period = msPeriod;        LongTimer::start();    }    /**     * @brief Time remaining to expiration     *     * @param msPeriod timer period in milliseconds     * @return time remaining to expiration in milliseconds     * @retval 0 Timer has expired, or was not even started.     */    unsigned long remaining()    {      if (!running()) return 0;      if (expired()) return 0;      const unsigned long now = _millis();      return (started() + m_period - now);    }    /**     * @brief Timer has expired.     * @retval true Timer has expired.     * @retval false Timer has not expired.     */    bool expired()    {        return LongTimer::expired(m_period);    }private:    unsigned long m_period; //!< Timer period in milliseconds.};#endif // ifndef TIMERREMAINING_H
 |