diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 27c498e97..802621f70 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -590,6 +590,16 @@ NodeDB::NodeDB() moduleConfig.mqtt.map_report_settings.publish_interval_secs = default_map_publish_interval_secs; } + // If a fixed position is configured, restore the persisted position into localPosition at boot. + // This keeps position broadcasts / MQTT map reports working after reboot on GPS-less nodes. + if (config.position.fixed_position) { + meshtastic_PositionLite fixedPos; + if (copyNodePosition(getNodeNum(), fixedPos) && (fixedPos.latitude_i != 0 || fixedPos.longitude_i != 0)) { + setLocalPosition(TypeConversions::ConvertToPosition(fixedPos)); + LOG_INFO("Restored fixed position to localPosition: lat=%d lon=%d", fixedPos.latitude_i, fixedPos.longitude_i); + } + } + // Ensure that the neighbor info update interval is coerced to the minimum moduleConfig.neighbor_info.update_interval = Default::getConfiguredOrMinimumValue(moduleConfig.neighbor_info.update_interval, min_neighbor_info_broadcast_secs);