From ec5dfd5ae3adc48ed411544847c2374e645bb958 Mon Sep 17 00:00:00 2001 From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:10:25 -0800 Subject: [PATCH] Fix: hoplimit of dms would always fallback to hops away of the node even when configured hops was higher (#1495) * fix hops setting in dms * Fix hops for exchange position * Final fix --- .../Accessory/Accessory Manager/AccessoryManager+ToRadio.swift | 2 +- .../Views/Nodes/Helpers/Actions/ExchangePositionsButton.swift | 3 ++- Meshtastic/Views/Nodes/Helpers/NodeDetail.swift | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift b/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift index 57c2f701..afdd04f5 100644 --- a/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift +++ b/Meshtastic/Accessory/Accessory Manager/AccessoryManager+ToRadio.swift @@ -350,7 +350,7 @@ extension AccessoryManager { if toUserNum > 0 { meshPacket.to = UInt32(toUserNum) let hopsAway = newMessage.toUser?.userNode?.hopsAway ?? 0 - if hopsAway > Int32(truncatingIfNeeded: newMessage.toUser?.userNode?.loRaConfig?.hopLimit ?? 0) { + if hopsAway > Int32(truncatingIfNeeded: newMessage.fromUser?.userNode?.loRaConfig?.hopLimit ?? 0) { meshPacket.hopLimit = UInt32(truncatingIfNeeded: hopsAway) } } else { diff --git a/Meshtastic/Views/Nodes/Helpers/Actions/ExchangePositionsButton.swift b/Meshtastic/Views/Nodes/Helpers/Actions/ExchangePositionsButton.swift index 05747fa9..f303f21e 100644 --- a/Meshtastic/Views/Nodes/Helpers/Actions/ExchangePositionsButton.swift +++ b/Meshtastic/Views/Nodes/Helpers/Actions/ExchangePositionsButton.swift @@ -3,6 +3,7 @@ import SwiftUI struct ExchangePositionsButton: View { var node: NodeInfoEntity + var connectedNode: NodeInfoEntity @EnvironmentObject var accessoryManager: AccessoryManager @@ -10,7 +11,7 @@ struct ExchangePositionsButton: View { @State private var isPresentingPositionFailedAlert: Bool = false var body: some View { - let hopsAway = Int32(truncatingIfNeeded: node.hopsAway > node.loRaConfig?.hopLimit ?? 0 ? node.hopsAway : node.loRaConfig?.hopLimit ?? 0) + let hopsAway = Int32(truncatingIfNeeded: node.hopsAway > connectedNode.loRaConfig?.hopLimit ?? 0 ? node.hopsAway : connectedNode.loRaConfig?.hopLimit ?? 0) Button { Task { do { diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index 7ad12716..efdcabb3 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -460,7 +460,8 @@ struct NodeDetail: View { } } ExchangePositionsButton( - node: node + node: node, + connectedNode: connectedNode ) TraceRouteButton( node: node