diff --git a/Arduino/BTCDieselHeater/BTCDieselHeater.ino b/Arduino/BTCDieselHeater/BTCDieselHeater.ino index e32e6c5..be157d2 100644 --- a/Arduino/BTCDieselHeater/BTCDieselHeater.ino +++ b/Arduino/BTCDieselHeater/BTCDieselHeater.ino @@ -110,6 +110,7 @@ #if USE_SPIFFS == 1 #include #endif +//#include "esp_system.h" //#define AP_SSID "Afterburner" //#define AP_PASSWORD "thereisnospoon" @@ -189,6 +190,8 @@ bool bUpdateDisplay = false; bool bHaveWebClient = false; bool bBTconnected = false; +hw_timer_t *watchdogTimer = NULL; + //////////////////////////////////////////////////////////////////////////////////////////////////////// // Bluetooth instantiation // @@ -295,6 +298,12 @@ void listDir(fs::FS &fs, const char * dirname, uint8_t levels) } #endif +void interruptReboot() +{ + ets_printf("Software watchdog reboot......\r\n"); + esp_restart(); +} + void setup() { char msg[128]; TempSensor.begin(); @@ -424,6 +433,14 @@ void setup() { setupGPIO(); +#if USE_SW_WATCHDOG == 1 + // create a watchdog timer + watchdogTimer = timerBegin(0, 80, true); //timer 0, divisor 80 + timerAlarmWrite(watchdogTimer, 4000000, false); //set time in uS must be fed within this time or reboot + timerAttachInterrupt(watchdogTimer, &interruptReboot, true); + timerAlarmEnable(watchdogTimer); //enable interrupt +#endif + delay(1000); // just to hold the splash screeen for while } @@ -546,6 +563,10 @@ void loop() case CommStates::Idle: +#if USE_SW_WATCHDOG == 1 + timerWrite(watchdogTimer, 0); //reset timer (feed watchdog) +#endif + moderator = 50; #if RX_LED == 1 diff --git a/Arduino/BTCDieselHeater/src/Utility/NVCore.cpp b/Arduino/BTCDieselHeater/src/Utility/NVCore.cpp index f7975a9..c94dece 100644 --- a/Arduino/BTCDieselHeater/src/Utility/NVCore.cpp +++ b/Arduino/BTCDieselHeater/src/Utility/NVCore.cpp @@ -22,6 +22,7 @@ #include #include "NVCore.h" #include "DebugPort.h" +#include bool diff --git a/Arduino/BTCDieselHeater/src/Utility/NVCore.h b/Arduino/BTCDieselHeater/src/Utility/NVCore.h index 38d0fe6..bb174da 100644 --- a/Arduino/BTCDieselHeater/src/Utility/NVCore.h +++ b/Arduino/BTCDieselHeater/src/Utility/NVCore.h @@ -25,6 +25,7 @@ #include #include + bool u8inBounds(uint8_t test, uint8_t minLim, uint8_t maxLim); bool s8inBounds(int8_t test, int8_t minLim, int8_t maxLim); bool u8Match2(uint8_t test, uint8_t test1, uint8_t test2); diff --git a/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp b/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp index a5617cd..3eca877 100644 --- a/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp +++ b/Arduino/BTCDieselHeater/src/WiFi/BTCWifi.cpp @@ -113,7 +113,7 @@ bool initWifi(int initpin,const char *failedssid, const char *failedpassword) // if you get here you have connected to the WiFi isSTA = true; DebugPort.println("WiFiManager connected in STA mode OK"); - DebugPort.printf(" STA IP address: %s\r\n", WiFi.localIP()); + DebugPort.printf(" STA IP address: %s\r\n", WiFi.localIP().toString().c_str()); // must use same radio channel as STA to go to STA+AP, otherwise we drop the STA! chnl = WiFi.channel(); DebugPort.println("Now promoting to STA+AP mode..."); @@ -128,7 +128,7 @@ bool initWifi(int initpin,const char *failedssid, const char *failedpassword) WiFi.softAP(APname, failedpassword, chnl); WiFi.enableAP(true); DebugPort.printf(" AP SSID: %s\r\n", WiFi.softAPgetHostname()); - DebugPort.printf(" AP IP address: %s\r\n", WiFi.softAPIP()); + DebugPort.printf(" AP IP address: %s\r\n", WiFi.softAPIP().toString().c_str()); DebugPort.printf("WifiMode after initWifi = %d\r\n", WiFi.getMode()); #endif diff --git a/Arduino/BTCDieselHeater/src/cfg/BTCConfig.h b/Arduino/BTCDieselHeater/src/cfg/BTCConfig.h index 9fd3631..61b35c4 100644 --- a/Arduino/BTCDieselHeater/src/cfg/BTCConfig.h +++ b/Arduino/BTCDieselHeater/src/cfg/BTCConfig.h @@ -107,3 +107,9 @@ // Protocol exploration // //#define PROTOCOL_INVESTIGATION + +/////////////////////////////////////////////////////////////////////////////// +// Software base watchdog +// +#define USE_SW_WATCHDOG 1 + diff --git a/Bootload/AfterBurner.bin b/Bootload/AfterBurner.bin index f2a31f6..97583a9 100644 Binary files a/Bootload/AfterBurner.bin and b/Bootload/AfterBurner.bin differ