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();