From eb83c6f50fd6c34a693d7abb63018ef47d4dba1f Mon Sep 17 00:00:00 2001 From: "Hans P. Reiser" Date: Sun, 28 Apr 2019 16:27:36 +0200 Subject: [PATCH] fix memory leak - generate reed solomon table only once --- RX_FSK/RX_FSK.ino | 2 +- libraries/SondeLib/RS41.cpp | 7 +++++-- libraries/SondeLib/RS41.h | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/RX_FSK/RX_FSK.ino b/RX_FSK/RX_FSK.ino index fb44735..8d87fcb 100644 --- a/RX_FSK/RX_FSK.ino +++ b/RX_FSK/RX_FSK.ino @@ -1002,7 +1002,7 @@ void initialMode() { // 2: access point mode in background. directly start initial mode (spectrum or scanner) // 3: traditional sync. WifiScan. Tries to connect to a network, in case of failure activates AP. // Mode 3 shows more debug information on serial port and display. -static char* _scan[2] = {"/", "\\"}; +static const char* _scan[2] = {"/", "\\"}; void loopWifiScan() { if (sonde.config.wifi == 0) { // no Wifi wifi_state = WIFI_DISABLED; diff --git a/libraries/SondeLib/RS41.cpp b/libraries/SondeLib/RS41.cpp index 29909ff..586698a 100644 --- a/libraries/SondeLib/RS41.cpp +++ b/libraries/SondeLib/RS41.cpp @@ -74,8 +74,11 @@ int RS41::setup() #if RS41_DEBUG Serial.println("Setup sx1278 for RS41 sonde"); #endif - Gencrctab(); - initrsc(); + if(!initialized) { + Gencrctab(); + initrsc(); + initialized = true; + } if(sx1278.ON()!=0) { RS41_DBG(Serial.println("Setting SX1278 power on FAILED")); diff --git a/libraries/SondeLib/RS41.h b/libraries/SondeLib/RS41.h index b7b1aca..41d9f92 100644 --- a/libraries/SondeLib/RS41.h +++ b/libraries/SondeLib/RS41.h @@ -42,6 +42,7 @@ private: { 1, 1, 1, 0, 0, 0, 0, 1}}; uint8_t He[8] = { 0x7, 0xB, 0xD, 0xE, 0x8, 0x4, 0x2, 0x1}; // Spalten von H: // 1-bit-error-Syndrome + boolean initialized = false; public: RS41();