luat_wdt_idf5.c 730 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "luat_base.h"
  2. #include "luat_wdt.h"
  3. #include "esp_task_wdt.h"
  4. #include "luat_log.h"
  5. #define LUAT_LOG_TAG "wdt"
  6. static uint32_t task_added = 0;
  7. int luat_wdt_init(size_t timeout){
  8. if (task_added != 0)
  9. return 0;
  10. luat_wdt_set_timeout(timeout);
  11. esp_task_wdt_add(NULL);
  12. task_added = 1;
  13. return 0;
  14. }
  15. int luat_wdt_feed(void){
  16. return esp_task_wdt_reset();
  17. }
  18. int luat_wdt_set_timeout(size_t timeout){
  19. esp_task_wdt_config_t twdt_config = {
  20. .timeout_ms = timeout,
  21. .idle_core_mask = 0,
  22. .trigger_panic = true,
  23. };
  24. esp_task_wdt_reconfigure(&twdt_config);
  25. return 0;
  26. }
  27. int luat_wdt_close(void){
  28. esp_task_wdt_delete(NULL);
  29. return esp_task_wdt_deinit();
  30. }