forked from espressif/esp-idf
refactor(esp_system) add user configurable reboot delay in seconds
Closes https://github.com/espressif/esp-idf/pull/9962
This commit is contained in:
committed by
Jakob Hasse
parent
7f4179744b
commit
6e2ce0d289
@@ -48,6 +48,14 @@ menu "ESP System Settings"
|
|||||||
Invoke gdbstub on the serial port, allowing for gdb to attach to it and to do a debug on runtime.
|
Invoke gdbstub on the serial port, allowing for gdb to attach to it and to do a debug on runtime.
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
config ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS
|
||||||
|
int "Panic reboot delay (Seconds)"
|
||||||
|
default 0
|
||||||
|
depends on ESP_SYSTEM_PANIC_PRINT_REBOOT || ESP_SYSTEM_PANIC_SILENT_REBOOT
|
||||||
|
help
|
||||||
|
After the panic handler executes, you can specify a number of seconds to
|
||||||
|
wait before the device reboots.
|
||||||
|
|
||||||
config ESP_SYSTEM_SINGLE_CORE_MODE
|
config ESP_SYSTEM_SINGLE_CORE_MODE
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
@@ -383,6 +383,27 @@ void esp_panic_handler(panic_info_t *info)
|
|||||||
wdt_hal_write_protect_enable(&rtc_wdt_ctx);
|
wdt_hal_write_protect_enable(&rtc_wdt_ctx);
|
||||||
#if CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT || CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT
|
#if CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT || CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT
|
||||||
|
|
||||||
|
#if CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS
|
||||||
|
|
||||||
|
disable_all_wdts();
|
||||||
|
|
||||||
|
panic_print_str("Waiting to reboot...\r\n");
|
||||||
|
|
||||||
|
for(int i = 0; i < CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS; i++) {
|
||||||
|
|
||||||
|
// Display a progress countdown.
|
||||||
|
// Only print every 5th second so users terminal is still "calm".
|
||||||
|
if (i % 5 == 0) {
|
||||||
|
panic_print_dec(CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS - i);
|
||||||
|
panic_print_str(" seconds...\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_rom_delay_us(1000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_panic_handler_reconfigure_wdts();
|
||||||
|
#endif /* CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS */
|
||||||
|
|
||||||
if (esp_reset_reason_get_hint() == ESP_RST_UNKNOWN) {
|
if (esp_reset_reason_get_hint() == ESP_RST_UNKNOWN) {
|
||||||
switch (info->exception) {
|
switch (info->exception) {
|
||||||
case PANIC_EXCEPTION_IWDT:
|
case PANIC_EXCEPTION_IWDT:
|
||||||
|
Reference in New Issue
Block a user