diff --git a/arduino/libretuya/core/LibreTuyaClass.cpp b/arduino/libretuya/core/LibreTuyaClass.cpp index a02ed9c..4cf53dd 100644 --- a/arduino/libretuya/core/LibreTuyaClass.cpp +++ b/arduino/libretuya/core/LibreTuyaClass.cpp @@ -50,6 +50,33 @@ const char *LibreTuya::getDeviceName() { return deviceName; } +/** + * @brief Get a textual representation of a reset reason. + * + * @param reason value to convert to text, uses getResetReason() by default + */ +const char *LibreTuya::getResetReasonName(ResetReason reason) { + if (reason >= RESET_REASON_MAX) + reason = getResetReason(); + switch (reason) { + case RESET_REASON_POWER: + return "Power-On"; + case RESET_REASON_BROWNOUT: + return "Brownout"; + case RESET_REASON_HARDWARE: + return "HW Reboot"; + case RESET_REASON_SOFTWARE: + return "SW Reboot"; + case RESET_REASON_WATCHDOG: + return "WDT Reset"; + case RESET_REASON_CRASH: + return "Crash"; + case RESET_REASON_SLEEP: + return "Sleep Wakeup"; + } + return "Unknown"; +} + /** * @brief Get CPU frequency in MHz. */ diff --git a/arduino/libretuya/core/LibreTuyaClass.h b/arduino/libretuya/core/LibreTuyaClass.h index 2505dee..0b1690e 100644 --- a/arduino/libretuya/core/LibreTuyaClass.h +++ b/arduino/libretuya/core/LibreTuyaClass.h @@ -16,6 +16,7 @@ typedef enum { RESET_REASON_WATCHDOG = 5, RESET_REASON_CRASH = 6, RESET_REASON_SLEEP = 7, + RESET_REASON_MAX = 8, } ResetReason; /** @@ -42,12 +43,21 @@ class LibreTuya { ChipFamily getChipFamily(); const char *getChipFamilyName(); const char *getDeviceName(); + const char *getResetReasonName(int32_t reason = -1); uint32_t getCpuFreqMHz(); uint32_t getFlashChipSize(); uint8_t otaGetTarget(); bool otaRollback(); bool otaCanRollback(); + public: /* Compatibility methods */ + /** + * @brief Alias of getMaxAllocHeap(). + */ + inline uint32_t getMaxFreeBlockSize() { + return getMaxAllocHeap(); + } + public: /* Family-defined methods */ /** * @brief Reboot the CPU.