// 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 namespace bsp::watchdog { class SoftwareWatchdog : private cpp_freertos::Thread { public: SoftwareWatchdog(); SoftwareWatchdog(const SoftwareWatchdog &) = delete; SoftwareWatchdog(SoftwareWatchdog &&) = delete; SoftwareWatchdog &operator=(const SoftwareWatchdog &) = delete; SoftwareWatchdog &operator=(SoftwareWatchdog &&) = delete; bool init(TickType_t timeoutPeriodMs); void refresh(); private: void Run() final; TickType_t timeoutPeriod = 0; TickType_t lastRefreshTimestamp = 0; }; } // namespace bsp::watchdog