diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index b9380760dc..956067865d 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -134,8 +134,6 @@ bool NodeDB::factoryReset() installDefaultChannels(); // third, write everything to disk saveToDisk(); - // write NeighbourInfo - neighborInfoModule->saveProtoForModule(); #ifdef ARCH_ESP32 // This will erase what's in NVS including ssl keys, persistent variables and ble pairing nvs_flash_erase(); @@ -290,7 +288,8 @@ void NodeDB::resetNodes() devicestate.node_db_lite_count = 0; memset(devicestate.node_db_lite, 0, sizeof(devicestate.node_db_lite)); saveDeviceStateToDisk(); - neighborInfoModule->resetNeighbors(); + if (neighborInfoModule && moduleConfig.neighbor_info.enabled) + neighborInfoModule->resetNeighbors(); } void NodeDB::installDefaultDeviceState() @@ -841,4 +840,4 @@ void recordCriticalError(meshtastic_CriticalErrorCode code, uint32_t address, co LOG_ERROR("A critical failure occurred, portduino is exiting..."); exit(2); #endif -} +} \ No newline at end of file diff --git a/src/modules/NeighborInfoModule.cpp b/src/modules/NeighborInfoModule.cpp index 264107f421..578b41b290 100644 --- a/src/modules/NeighborInfoModule.cpp +++ b/src/modules/NeighborInfoModule.cpp @@ -173,6 +173,11 @@ size_t NeighborInfoModule::cleanUpNeighbors() (*numNeighbors)--; } + // Save the neighbor list if we removed any neighbors + if (indices_to_remove.size() > 0) { + saveProtoForModule(); + } + return *numNeighbors; } @@ -207,7 +212,7 @@ Pass it to an upper client; do not persist this data on the mesh */ bool NeighborInfoModule::handleReceivedProtobuf(const meshtastic_MeshPacket &mp, meshtastic_NeighborInfo *np) { - printNeighborInfo("RECIEVED", np); + printNeighborInfo("RECEIVED", np); updateNeighbors(mp, np); // Allow others to handle this packet return false; @@ -234,6 +239,7 @@ void NeighborInfoModule::updateLastSentById(meshtastic_MeshPacket *p) void NeighborInfoModule::resetNeighbors() { + *numNeighbors = 0; neighborState.neighbors_count = 0; memset(neighborState.neighbors, 0, sizeof(neighborState.neighbors)); saveProtoForModule(); @@ -265,6 +271,7 @@ meshtastic_Neighbor *NeighborInfoModule::getOrCreateNeighbor(NodeNum originalSen // Only if this is the original sender, the broadcast interval corresponds to it if (originalSender == n) nbr->node_broadcast_interval_secs = node_broadcast_interval_secs; + saveProtoForModule(); // Save the updated neighbor return nbr; } } @@ -280,6 +287,7 @@ meshtastic_Neighbor *NeighborInfoModule::getOrCreateNeighbor(NodeNum originalSen // Only if this is the original sender, the broadcast interval corresponds to it if (originalSender == n) new_nbr->node_broadcast_interval_secs = node_broadcast_interval_secs; + saveProtoForModule(); // Save the new neighbor return new_nbr; }