32 lines
861 B
C++
32 lines
861 B
C++
#pragma once
|
|
|
|
/* Interval
|
|
* Copyright (C) 2014, 2016, 2018, 2019, 2023 Pavel Brychta http://www.xpablo.cz
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify it under the terms of the MIT License
|
|
*/
|
|
|
|
#include <Arduino.h>
|
|
|
|
class Interval
|
|
{
|
|
protected:
|
|
uint32_t _timefrom = 0;
|
|
uint32_t _timeout = 0;
|
|
uint8_t _mode = 0; // mode of actual operation (compatibility, oneshot, periodic)
|
|
uint8_t _done = 0xff; // compatibility mode autostart
|
|
public:
|
|
Interval() = default;
|
|
explicit Interval(uint32_t tmout)
|
|
: _timeout(tmout)
|
|
, _mode(2) // periodic mode autostart
|
|
{}
|
|
bool expired();
|
|
void set(uint32_t tmout);
|
|
void setOneshot(uint32_t tmout);
|
|
void setPeriodic(uint32_t tmout);
|
|
void reload();
|
|
[[nodiscard]] uint32_t elapsed() const;
|
|
[[nodiscard]] uint32_t remains() const;
|
|
};
|