12 using Clock = std::chrono::steady_clock;
27 std::array<TimerState, MaxTimers> states{};
34 bool initialized =
false;
42 const TimerState&
timer)
46 if (
timer.restartCount != 0 &&
52 uimsg::Message message{};
54 message.numberA =
static_cast<std::int64_t
>(
timerIndex);
75 if (--
timer.remainingTicks != 0)
82 if (--
timer.value == 0)
86 if (
timer.sendUIMessage)
100 for (TimerState&
timer : states)
105 timer.remainingTicks = 1;
142 timer.remainingTicks = 1;
154 const Clock::time_point
now = Clock::now();
177 for (std::uint64_t tick = 0; tick < numberOfTicks; ++tick)
std::uint8_t remainingTicks
std::uint16_t restartCount
std::uint64_t tickCount()
bool configure(std::size_t index, std::uint8_t speed, std::uint16_t restartCount, bool sendUIMessage, std::uint16_t value)
constexpr std::uint32_t BasicClockRateHz
constexpr std::size_t MaxTimers
void advanceTicks(std::uint64_t numberOfTicks)
constexpr std::size_t QueueCapacity
bool send(const Message &message)