diff --git a/src/MyESP.cpp b/src/MyESP.cpp index 6c3f97e7b..a01222dc6 100644 --- a/src/MyESP.cpp +++ b/src/MyESP.cpp @@ -27,6 +27,8 @@ union system_rtcmem_t { static char * _general_password = nullptr; static bool _shouldRestart = false; +static char _debug_buffer[TELNET_MAX_BUFFER_LENGTH]; + uint8_t RtcmemSize = (sizeof(RtcmemData) / 4u); auto Rtcmem = reinterpret_cast(RTCMEM_ADDR); @@ -142,14 +144,14 @@ void MyESP::myDebug(const char * format, ...) { char test[1]; int len = ets_vsnprintf(test, 1, format, args) + 1; + if (len > TELNET_MAX_BUFFER_LENGTH - 1) { + len = TELNET_MAX_BUFFER_LENGTH; + } - char * buffer = new char[len]; - ets_vsnprintf(buffer, len, format, args); + ets_vsnprintf(_debug_buffer, len, format, args); va_end(args); - SerialAndTelnet.println(buffer); - - delete[] buffer; + SerialAndTelnet.println(_debug_buffer); } // for flashmemory. Must use PSTR() @@ -164,9 +166,11 @@ void MyESP::myDebug_P(PGM_P format_P, ...) { va_start(args, format_P); char test[1]; int len = ets_vsnprintf(test, 1, format, args) + 1; + if (len > TELNET_MAX_BUFFER_LENGTH - 1) { + len = TELNET_MAX_BUFFER_LENGTH; + } - char * buffer = new char[len]; - ets_vsnprintf(buffer, len, format, args); + ets_vsnprintf(_debug_buffer, len, format, args); va_end(args); @@ -177,9 +181,7 @@ void MyESP::myDebug_P(PGM_P format_P, ...) { SerialAndTelnet.print(timestamp); #endif - SerialAndTelnet.println(buffer); - - delete[] buffer; + SerialAndTelnet.println(_debug_buffer); } // use Serial? @@ -450,7 +452,7 @@ void MyESP::_mqttOnConnect() { mqttPublish(MQTT_TOPIC_START, MQTT_TOPIC_START_PAYLOAD, false); // send heartbeat if enabled - _heartbeatCheck(true); + _heartbeatCheck(); // call custom function to handle mqtt receives (_mqtt_callback_f)(MQTT_CONNECT_EVENT, nullptr, nullptr); @@ -684,13 +686,13 @@ void MyESP::_kick() { } // kick web - myDebug_P(PSTR(" - Restart web server and web sockets")); + myDebug_P(PSTR(" - Restarting web server and web sockets")); _ws->enable(false); //_webServer->reset(); _ws->enable(true); // kick mqtt - myDebug_P(PSTR(" - Restart MQTT")); + myDebug_P(PSTR(" - Restarting MQTT")); mqttClient.disconnect(); } @@ -848,8 +850,8 @@ void MyESP::_printSetCommands() { // reset / restart void MyESP::resetESP() { myDebug_P(PSTR("* Restart ESP...")); - _deferredReset(500, CUSTOM_RESET_TERMINAL); end(); + _deferredReset(500, CUSTOM_RESET_TERMINAL); #if defined(ARDUINO_ARCH_ESP32) ESP.restart(); #else @@ -1440,16 +1442,7 @@ void MyESP::showSystemStats() { myDebug_P(PSTR(" [MEM] Firmware size: %d"), ESP.getSketchSize()); myDebug_P(PSTR(" [MEM] Max OTA size: %d"), (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000); myDebug_P(PSTR(" [MEM] OTA Reserved: %d"), 4 * SPI_FLASH_SEC_SIZE); - - uint32_t total_memory = _getInitialFreeHeap(); - uint32_t free_memory = ESP.getFreeHeap(); - - myDebug(" [MEM] Free Heap: %d bytes initially | %d bytes used (%2u%%) | %d bytes free (%2u%%)", - total_memory, - total_memory - free_memory, - 100 * (total_memory - free_memory) / total_memory, - free_memory, - 100 * free_memory / total_memory); + _printHeap(" [MEM]"); myDebug_P(PSTR("")); } @@ -1457,14 +1450,19 @@ void MyESP::showSystemStats() { /* * Send heartbeat via MQTT with all system data */ -void MyESP::_heartbeatCheck(bool force = false) { +void MyESP::_heartbeatCheck(bool force) { static uint32_t last_heartbeat = 0; if ((millis() - last_heartbeat > MYESP_HEARTBEAT_INTERVAL) || force) { last_heartbeat = millis(); + // print to log if force is set, so at bootup + if (force) { + _printHeap("[SYSTEM]"); + } + #ifdef MYESP_DEBUG - _printHeap("HEARTBEAT"); + _printHeap("[HEARTBEAT] "); #endif if (!isMQTTConnected() || !(_mqtt_heartbeat)) { return; @@ -2666,12 +2664,12 @@ void MyESP::_webserver_setup() { } // print memory -void MyESP::_printHeap(const char * s) { +void MyESP::_printHeap(const char * prefix) { uint32_t total_memory = _getInitialFreeHeap(); uint32_t free_memory = ESP.getFreeHeap(); - myDebug(" [%s] Free Heap: %d bytes initially | %d bytes used (%2u%%) | %d bytes free (%2u%%)", - s, + myDebug("%s Free Heap: %d bytes initially | %d bytes used (%2u%%) | %d bytes free (%2u%%)", + prefix, total_memory, total_memory - free_memory, 100 * (total_memory - free_memory) / total_memory, @@ -2831,7 +2829,7 @@ void MyESP::_syslog_setup() { syslog.mark_interval(3600); IPAddress syslog_ip; - syslog_ip.fromString("192.168.1.4"); + syslog_ip.fromString(_general_log_ip); syslog.destination(syslog_ip); logger.info(F("Application started")); @@ -2874,7 +2872,7 @@ void MyESP::begin(const char * app_hostname, const char * app_name, const char * _webserver_setup(); // init web server _setSystemCheck(false); // reset system check - _heartbeatCheck(true); // force heartbeat + _heartbeatCheck(true); // force heartbeat, will send out message to log too _setSystemDropoutCounter(0); // reset # TCP dropouts @@ -2925,7 +2923,7 @@ void MyESP::loop() { ESP.restart(); } - delay(MYESP_DELAY); // some time to WiFi and everything else to catch up, and prevent overheating + delay(MYESP_DELAY); // some time to WiFi and everything else to catch up, calls yield, and also prevent overheating } MyESP myESP; diff --git a/src/MyESP.h b/src/MyESP.h index 851eb433c..614775b5d 100644 --- a/src/MyESP.h +++ b/src/MyESP.h @@ -9,7 +9,7 @@ #ifndef MyESP_h #define MyESP_h -#define MYESP_VERSION "1.2.21" +#define MYESP_VERSION "1.2.22" #include #include @@ -113,6 +113,7 @@ extern struct rst_info resetInfo; // Telnet #define TELNET_SERIAL_BAUD 115200 #define TELNET_MAX_COMMAND_LENGTH 80 // length of a command +#define TELNET_MAX_BUFFER_LENGTH 300 // max length of telnet string #define TELNET_EVENT_CONNECT 1 #define TELNET_EVENT_DISCONNECT 0 #define TELNET_EVENT_SHOWCMD 10 @@ -252,12 +253,9 @@ constexpr size_t ArraySize(T (&)[N]) { } #define MYESP_UPTIME_OVERFLOW 4294967295 // Uptime overflow value - -// web min and max length of wifi ssid and password -#define MYESP_MAX_STR_LEN 16 - -#define MYESP_BOOTUP_FLASHDELAY 50 // flash duration for LED at bootup sequence -#define MYESP_BOOTUP_DELAY 2000 // time before we open the window to reset. This is to stop resetting values when uploading firmware via USB +#define MYESP_MAX_STR_LEN 16 // web min and max length of wifi ssid and password +#define MYESP_BOOTUP_FLASHDELAY 50 // flash duration for LED at bootup sequence +#define MYESP_BOOTUP_DELAY 2000 // time before we open the window to reset. This is to stop resetting values when uploading firmware via USB // class definition class MyESP { @@ -480,7 +478,7 @@ class MyESP { uint32_t _getUsedHeap(); // heartbeat - void _heartbeatCheck(bool force); + void _heartbeatCheck(bool force = false); // web web_callback_f _web_callback_f; @@ -494,9 +492,6 @@ class MyESP { void _printScanResult(int networksFound); void _sendTime(); void _webserver_setup(); - void _webRootPage(); - void _webResetPage(); - void _webResetAllPage(); // ntp char * _ntp_server; diff --git a/src/TelnetSpy.h b/src/TelnetSpy.h index 1f7b901c7..2b57d0490 100644 --- a/src/TelnetSpy.h +++ b/src/TelnetSpy.h @@ -151,7 +151,7 @@ #ifndef TelnetSpy_h #define TelnetSpy_h -#define TELNETSPY_BUFFER_LEN 3000 +#define TELNETSPY_BUFFER_LEN 1000 // was 3000 #define TELNETSPY_MIN_BLOCK_SIZE 64 #define TELNETSPY_COLLECTING_TIME 100 #define TELNETSPY_MAX_BLOCK_SIZE 512 diff --git a/src/emsuart.h b/src/emsuart.h index 3e3e5550d..99198562f 100644 --- a/src/emsuart.h +++ b/src/emsuart.h @@ -13,7 +13,7 @@ #define EMSUART_CONFIG 0x1C // 8N1 (8 bits, no stop bits, 1 parity) #define EMSUART_BAUD 9600 // uart baud rate for the EMS circuit -#define EMS_MAXBUFFERS 5 // buffers for circular filling to avoid collisions +#define EMS_MAXBUFFERS 3 // buffers for circular filling to avoid collisions #define EMS_MAXBUFFERSIZE (EMS_MAX_TELEGRAM_LENGTH + 2) // max size of the buffer. EMS packets are max 32 bytes, plus extra 2 for BRKs #define EMSUART_BIT_TIME 104 // bit time @9600 baud diff --git a/src/version.h b/src/version.h index 408a4ffa2..c38a882f1 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define APP_VERSION "1.9.4b16" +#define APP_VERSION "1.9.4b17"