mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-09 12:35:28 +00:00
New Task Watchdog API (Revert of Revert)
This commit reverts the revert on the new task watchdog API. It also fixes the following bug which caused the reversion. - sdkconfig TASK_WDT_TIMEOUT_S has been reverted from the unit of ms back to the unit of seconds. Fixes bug where projects using the new API without rebuilding sdkconfig would cause the old default value of 5 to be interpreted in ms. This commit also adds the following features to the task watchdog - Updated idle hook registration to be compatible with dual core hooks - Updated dual core hooks to support deregistration for cpu - Legacy mode has been removed and esp_task_wdt_feed() is now replaced by esp_task_wdt_reset(). esp_task_wdt_feed() is deprecated - Idle hooks to reset are now registered/deregistered when the idle tasks are added/deleted from the Task Watchdog instead of at Task Watchdog init/deinit - Updated example
This commit is contained in:
@@ -106,13 +106,35 @@ esp_err_t esp_register_freertos_tick_hook(esp_freertos_tick_cb_t new_tick_cb)
|
||||
return esp_register_freertos_tick_hook_for_cpu(new_tick_cb, xPortGetCoreID());
|
||||
}
|
||||
|
||||
void esp_deregister_freertos_idle_hook_for_cpu(esp_freertos_idle_cb_t old_idle_cb, UBaseType_t cpuid)
|
||||
{
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
if(cpuid >= portNUM_PROCESSORS){
|
||||
return;
|
||||
}
|
||||
for(int n = 0; n < MAX_HOOKS; n++){
|
||||
if(idle_cb[cpuid][n] == old_idle_cb) idle_cb[cpuid][n] = NULL;
|
||||
}
|
||||
portEXIT_CRITICAL(&hooks_spinlock);
|
||||
}
|
||||
|
||||
void esp_deregister_freertos_idle_hook(esp_freertos_idle_cb_t old_idle_cb)
|
||||
{
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
for(int m = 0; m < portNUM_PROCESSORS; m++) {
|
||||
for(int n = 0; n < MAX_HOOKS; n++){
|
||||
if(idle_cb[m][n] == old_idle_cb) idle_cb[m][n] = NULL;
|
||||
}
|
||||
esp_deregister_freertos_idle_hook_for_cpu(old_idle_cb, m);
|
||||
}
|
||||
portEXIT_CRITICAL(&hooks_spinlock);
|
||||
}
|
||||
|
||||
void esp_deregister_freertos_tick_hook_for_cpu(esp_freertos_tick_cb_t old_tick_cb, UBaseType_t cpuid)
|
||||
{
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
if(cpuid >= portNUM_PROCESSORS){
|
||||
return;
|
||||
}
|
||||
for(int n = 0; n < MAX_HOOKS; n++){
|
||||
if(tick_cb[cpuid][n] == old_tick_cb) tick_cb[cpuid][n] = NULL;
|
||||
}
|
||||
portEXIT_CRITICAL(&hooks_spinlock);
|
||||
}
|
||||
@@ -121,9 +143,7 @@ void esp_deregister_freertos_tick_hook(esp_freertos_tick_cb_t old_tick_cb)
|
||||
{
|
||||
portENTER_CRITICAL(&hooks_spinlock);
|
||||
for(int m = 0; m < portNUM_PROCESSORS; m++){
|
||||
for(int n = 0; n < MAX_HOOKS; n++){
|
||||
if(tick_cb[m][n] == old_tick_cb) tick_cb[m][n] = NULL;
|
||||
}
|
||||
esp_deregister_freertos_tick_hook_for_cpu(old_tick_cb, m);
|
||||
}
|
||||
portEXIT_CRITICAL(&hooks_spinlock);
|
||||
}
|
||||
|
Reference in New Issue
Block a user