diff --git a/platformio.ini b/platformio.ini index fe62f41..c7273ae 100644 --- a/platformio.ini +++ b/platformio.ini @@ -29,7 +29,7 @@ build_unflags = -std=gnu++11 lib_deps = - https://github.com/attermann/microReticulum.git#392363c + https://github.com/ratspeak/microReticulum.git#fix/tcp-transport-and-identity-persistence https://github.com/attermann/Crypto.git bblanchon/ArduinoJson@^7.4.2 lovyan03/LovyanGFX@^1.1.16 diff --git a/src/config/Config.h b/src/config/Config.h index 4675403..d446e7f 100644 --- a/src/config/Config.h +++ b/src/config/Config.h @@ -6,8 +6,8 @@ #define RATDECK_VERSION_MAJOR 1 #define RATDECK_VERSION_MINOR 5 -#define RATDECK_VERSION_PATCH 5 -#define RATDECK_VERSION_STRING "1.5.5" +#define RATDECK_VERSION_PATCH 6 +#define RATDECK_VERSION_STRING "1.5.6" // --- Feature Flags --- #define HAS_DISPLAY true diff --git a/src/reticulum/ReticulumManager.cpp b/src/reticulum/ReticulumManager.cpp index 98b0f97..663263d 100644 --- a/src/reticulum/ReticulumManager.cpp +++ b/src/reticulum/ReticulumManager.cpp @@ -64,9 +64,9 @@ bool ReticulumManager::begin(SX1262* radio, FlashStore* flash) { RNS::Utilities::OS::register_filesystem(fs); Serial.println("[RNS] Filesystem registered"); - // Restore routing tables from SD if missing on flash + // Restore routing tables and known destinations from SD if missing on flash if (_sd && _sd->isReady()) { - static const char* files[] = {"/destination_table", "/packet_hashlist"}; + static const char* files[] = {"/destination_table", "/packet_hashlist", "/known_destinations"}; for (const char* name : files) { if (!LittleFS.exists(name)) { char sdPath[64]; @@ -105,6 +105,10 @@ bool ReticulumManager::begin(SX1262* radio, FlashStore* flash) { _reticulum.start(); Serial.printf("[RNS] Reticulum started (%s)\n", _transportEnabled ? "Transport Node" : "Endpoint"); + // Load persisted known destinations so Identity::recall() works + // immediately after reboot for previously-seen nodes. + RNS::Identity::load_known_destinations(); + if (!loadOrCreateIdentity()) { Serial.println("[RNS] ERROR: Identity creation failed!"); return false; @@ -217,9 +221,10 @@ void ReticulumManager::loop() { void ReticulumManager::persistData() { RNS::Transport::persist_data(); - // Backup routing tables to SD + RNS::Identity::persist_data(); + // Backup routing tables and known destinations to SD if (_sd && _sd->isReady()) { - static const char* files[] = {"/destination_table", "/packet_hashlist"}; + static const char* files[] = {"/destination_table", "/packet_hashlist", "/known_destinations"}; for (const char* name : files) { File f = LittleFS.open(name, "r"); if (f && f.size() > 0) {