1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-18 23:03:34 +03:00

Merge pull request #1495 from hallard/master

Added function to return reset reason in human readable format
This commit is contained in:
Ivan Grokhotkov
2016-01-25 09:23:41 +03:00
5 changed files with 33 additions and 7 deletions

View File

@ -329,6 +329,28 @@ bool EspClass::checkFlashConfig(bool needsEquals) {
return false;
}
String EspClass::getResetReason(void) {
char buff[32];
if (resetInfo.reason == REASON_DEFAULT_RST) { // normal startup by power on
strcpy_P(buff, PSTR("Power on"));
} else if (resetInfo.reason == REASON_WDT_RST) { // hardware watch dog reset
strcpy_P(buff, PSTR("Hardware Watchdog"));
} else if (resetInfo.reason == REASON_EXCEPTION_RST) { // exception reset, GPIO status wont change
strcpy_P(buff, PSTR("Exception"));
} else if (resetInfo.reason == REASON_SOFT_WDT_RST) { // software watch dog reset, GPIO status wont change
strcpy_P(buff, PSTR("Software Watchdog"));
} else if (resetInfo.reason == REASON_SOFT_RESTART) { // software restart ,system_restart , GPIO status wont change
strcpy_P(buff, PSTR("Software/System restart"));
} else if (resetInfo.reason == REASON_DEEP_SLEEP_AWAKE) { // wake up from deep-sleep
strcpy_P(buff, PSTR("Deep-Sleep Wake"));
} else if (resetInfo.reason == REASON_EXT_SYS_RST) { // external system reset
strcpy_P(buff, PSTR("External System"));
} else {
strcpy_P(buff, PSTR("Unknown"));
}
return String(buff);
}
String EspClass::getResetInfo(void) {
if(resetInfo.reason != 0) {
char buff[200];

View File

@ -131,6 +131,7 @@ class EspClass {
uint32_t getFreeSketchSpace();
bool updateSketch(Stream& in, uint32_t size, bool restartOnFail = false, bool restartOnSuccess = true);
String getResetReason();
String getResetInfo();
struct rst_info * getResetInfoPtr();

View File

@ -6,6 +6,7 @@ title: Change Log
### Core
- Add function to know last reset resaon.
- Allow control of enabling debug and debug level from IDE
- Make HardwareSerial::begin() and end() interrupt safe
- Put HardwareSerial and cbuf methods called from interrupt context in RAM

View File

@ -83,6 +83,8 @@ APIs related to deep sleep and watchdog timer are available in the `ESP` object,
`ESP.restart()` restarts the CPU.
`ESP.getResetReason()` returns String containing the last reset resaon in human readable format.
`ESP.getFreeHeap()` returns the free heap size.
`ESP.getChipId()` returns the ESP8266 chip ID as a 32-bit integer.

View File

@ -23,13 +23,13 @@
#endif
enum rst_reason {
REASON_DEFAULT_RST = 0,
REASON_WDT_RST = 1,
REASON_EXCEPTION_RST = 2,
REASON_SOFT_WDT_RST = 3,
REASON_SOFT_RESTART = 4,
REASON_DEEP_SLEEP_AWAKE = 5,
REASON_EXT_SYS_RST = 6
REASON_DEFAULT_RST = 0, /* normal startup by power on */
REASON_WDT_RST = 1, /* hardware watch dog reset */
REASON_EXCEPTION_RST = 2, /* exception reset, GPIO status wont change */
REASON_SOFT_WDT_RST = 3, /* software watch dog reset, GPIO status wont change */
REASON_SOFT_RESTART = 4, /* software restart ,system_restart , GPIO status wont change */
REASON_DEEP_SLEEP_AWAKE = 5, /* wake up from deep-sleep */
REASON_EXT_SYS_RST = 6 /* external system reset */
};
struct rst_info{