From 5d0113ce0ce63cdb84be349026e53a0d796184ff Mon Sep 17 00:00:00 2001 From: ford-jones Date: Fri, 10 Oct 2025 21:44:18 +1300 Subject: [PATCH] Conditionally delete favourited nodes on reset --- src/mesh/NodeDB.cpp | 18 +++++++++++++++++- src/mesh/NodeDB.h | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index dec8411fe..639e5bc45 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -402,6 +402,11 @@ NodeDB::NodeDB() config.position.gps_mode = meshtastic_Config_PositionConfig_GpsMode_ENABLED; config.position.gps_enabled = 0; } + if (config.device.role == meshtastic_Config_DeviceConfig_Role_CLIENT_BASE || + config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER || + config.device.role == meshtastic_Config_DeviceConfig_Role_ROUTER_LATE) { + saveFavourites == true; + } #ifdef USERPREFS_FIRMWARE_EDITION myNodeInfo.firmware_edition = USERPREFS_FIRMWARE_EDITION; #endif @@ -983,7 +988,18 @@ void NodeDB::resetNodes() if (!config.position.fixed_position) clearLocalPosition(); numMeshNodes = 1; - std::fill(nodeDatabase.nodes.begin() + 1, nodeDatabase.nodes.end(), meshtastic_NodeInfoLite()); + if (saveFavourites) { + for (size_t i = 0; i < nodeDatabase.nodes.size(); i++) { + meshtastic_NodeInfoLite &node = nodeDatabase.nodes[i]; + if (i > 0 && !node.is_favorite) { + node = meshtastic_NodeInfoLite(); + } else { + numMeshNodes += 1; + } + }; + } else { + std::fill(nodeDatabase.nodes.begin() + 1, nodeDatabase.nodes.end(), meshtastic_NodeInfoLite()); + } devicestate.has_rx_text_message = false; devicestate.has_rx_waypoint = false; saveNodeDatabaseToDisk(); diff --git a/src/mesh/NodeDB.h b/src/mesh/NodeDB.h index e8724f2c9..a1722a403 100644 --- a/src/mesh/NodeDB.h +++ b/src/mesh/NodeDB.h @@ -144,6 +144,8 @@ class NodeDB bool keyIsLowEntropy = false; bool hasWarned = false; + bool saveFavourites = false; + /// don't do mesh based algorithm for node id assignment (initially) /// instead just store in flash - possibly even in the initial alpha release do this hack NodeDB();