#ifndef __ZPP_WATCHDOG_HPP #define __ZPP_WATCHDOG_HPP #include #include #include namespace app { class WatchDogConfig { public: WatchDogConfig() { if (!device_is_ready(m_wdt)) { __ASSERT_NO_MSG(0); } chan_id = wdt_install_timeout(m_wdt, &cfg); if (auto err = wdt_setup(m_wdt, WDT_OPT_PAUSE_HALTED_BY_DBG); err < 0) { __ASSERT_NO_MSG(0); } } auto Feed() { wdt_feed(m_wdt, chan_id); } private: const device *m_wdt{DEVICE_DT_GET(DT_ALIAS(watchdog0))}; static constexpr wdt_timeout_cfg cfg{ .window{0, 1000}, .callback = nullptr, .flags = WDT_FLAG_RESET_SOC, }; int chan_id; }; } // namespace app #endif