// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include namespace app { class TimerWithCallbacks { public: virtual ~TimerWithCallbacks() = default; [[nodiscard]] virtual auto isStopped() const noexcept -> bool = 0; virtual void reset(std::chrono::seconds duration, std::chrono::seconds interval = std::chrono::seconds::zero()) = 0; virtual void start() = 0; virtual void stop() = 0; virtual std::chrono::milliseconds getElapsed() = 0; virtual void registerOnFinishedCallback(std::function cb) = 0; virtual void registerOnIntervalCallback(std::function cb) = 0; }; } // namespace app