From 6bcb8198b8f11f1e6010e67bf031e1ca926bc0de Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Sun, 19 Apr 2015 10:19:06 +0200 Subject: [PATCH] add to ESP class: getChipId getSDKversion getBootVersion getBootMode getCPUfreqMHz add some defines for AVR like WDT control --- cores/esp8266/Esp.cpp | 39 +++++++++++++++++++++++++++++++++++---- cores/esp8266/Esp.h | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 5 deletions(-) diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index 0e1443818..3d70d61fe 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -24,9 +24,11 @@ extern "C" { #include "user_interface.h" } -extern "C" void ets_wdt_enable (void); -extern "C" void ets_wdt_disable (void); -extern "C" void wdt_feed (void); + +//extern "C" void ets_wdt_init(uint32_t val); +extern "C" void ets_wdt_enable(void); +extern "C" void ets_wdt_disable(void); +extern "C" void wdt_feed(void); EspClass ESP; @@ -35,11 +37,17 @@ EspClass::EspClass() } -void EspClass::wdtEnable(int) +void EspClass::wdtEnable(uint32_t timeout_ms) { + //todo find doku for ets_wdt_init may set the timeout ets_wdt_enable(); } +void EspClass::wdtEnable(WDTO_t timeout_ms) +{ + wdtEnable((uint32_t) timeout_ms); +} + void EspClass::wdtDisable(void) { ets_wdt_disable(); @@ -76,4 +84,27 @@ uint32_t EspClass::getFreeHeap(void) return system_get_free_heap_size(); } +uint32_t EspClass::getChipId(void) +{ + return system_get_chip_id(); +} +const char * EspClass::getSDKversion(void) +{ + return system_get_sdk_version(); +} + +uint8_t EspClass::getBootVersion(void) +{ + return system_get_boot_version(); +} + +uint8_t EspClass::getBootMode(void) +{ + return system_get_boot_mode(); +} + +uint8_t EspClass::getCPUfreqMHz(void) +{ + return system_get_cpu_freq(); +} diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index 9b48c3be9..f4d6b652b 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -20,8 +20,28 @@ #ifndef ESP_H #define ESP_H +/** + * AVR macros for WDT managment + */ +typedef enum { + WDTO_0MS = 0, //!< WDTO_0MS + WDTO_15MS = 15, //!< WDTO_15MS + WDTO_30MS = 30, //!< WDTO_30MS + WDTO_60MS = 60, //!< WDTO_60MS + WDTO_120MS = 120, //!< WDTO_120MS + WDTO_250MS = 250, //!< WDTO_250MS + WDTO_500MS = 500, //!< WDTO_500MS + WDTO_1S = 1000,//!< WDTO_1S + WDTO_2S = 2000,//!< WDTO_2S + WDTO_4S = 4000,//!< WDTO_4S + WDTO_8S = 8000 //!< WDTO_8S +} WDTO_t; +#define wdt_enable(time) ESP.wdtEnable(time) +#define wdt_disable() ESP.wdtDisable() +#define wdt_reset() ESP.wdtFeed() + enum WakeMode { WAKE_RF_DEFAULT = 0, // RF_CAL or not after deep-sleep wake up, depends on init data byte 108. WAKE_RFCAL = 1, // RF_CAL after deep-sleep wake up, there will be large current. @@ -33,8 +53,10 @@ class EspClass { public: EspClass(); - void wdtEnable(int timeout_ms = 0); // TODO: figure out how to set WDT timeout + void wdtEnable(uint32_t timeout_ms = 0); + void wdtEnable(WDTO_t timeout_ms = WDTO_0MS); + void wdtDisable(void); void wdtFeed(void); @@ -45,6 +67,16 @@ class EspClass { void restart(void); uint16_t getVCC(void); uint32_t getFreeHeap(void); + + uint32_t getChipId(void); + + const char * getSDKversion(void); + + uint8_t getBootVersion(void); + uint8_t getBootMode(void); + + uint8_t getCPUfreqMHz(void); + }; extern EspClass ESP;