#include #include #include "chrg_wdt.h" #define LOG_TAG "chrg.wdt" #define DBG_LEVEL DBG_LOG #include struct chrg_wdt_t chrgwdt = { .dev = RT_NULL, .name = DEV_NAME_WATCHDOG, .feed = 3, }; void chrg_wdt_feed (void) { rt_device_control(chrgwdt.dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, RT_NULL); } static int chrg_wdt_init (void) { rt_err_t ret; struct chrg_wdt_t *pWDT = &chrgwdt; pWDT->dev = rt_device_find(pWDT->name); if (RT_NULL == pWDT->dev) { rt_kprintf("dev '%s' not found.\r\n", pWDT->name); return RT_ERROR; } ret = rt_device_control(chrgwdt.dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &pWDT->feed); if (RT_EOK != ret) { rt_kprintf("dev '%s' control failed.\r\n", pWDT->name); return ret; } ret = rt_device_control(chrgwdt.dev, RT_DEVICE_CTRL_WDT_START, RT_NULL); if (RT_EOK != ret) { rt_kprintf("dev '%s' start failed.\r\n", pWDT->name); return ret; } //rt_thread_idle_sethook(chrg_wdt_feed); return RT_EOK; } INIT_APP_EXPORT(chrg_wdt_init);