From 73516def0dcfa0bb49a5bd02594052ec2707f20f Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Tue, 15 Nov 2022 20:11:37 -0800 Subject: [PATCH] Fix potential mqtt config view crash, request position from nodes if position is sent in a direct message --- Meshtastic/Helpers/BLEManager.swift | 25 +++---------------- .../Settings/Config/Module/MQTTConfig.swift | 12 ++------- 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 52ff7951..916577a0 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -818,9 +818,13 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph meshPacket.to = UInt32(destNum) meshPacket.from = 0 // Send 0 as from from phone to device to avoid warning about client trying to set node num meshPacket.wantAck = wantAck + var dataMessage = DataMessage() dataMessage.payload = try! positionPacket.serializedData() dataMessage.portnum = PortNum.positionApp + if destNum != broadcastNodeNum { + dataMessage.wantResponse = true + } meshPacket.decoded = dataMessage var toRadio: ToRadio! @@ -1119,7 +1123,6 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph var adminPacket = AdminMessage() adminPacket.setOwner = config - var meshPacket: MeshPacket = MeshPacket() meshPacket.to = UInt32(connectedPeripheral.num) meshPacket.from = 0 //UInt32(connectedPeripheral.num) @@ -1127,17 +1130,13 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph meshPacket.priority = MeshPacket.Priority.reliable meshPacket.wantAck = true meshPacket.hopLimit = 0 - var dataMessage = DataMessage() dataMessage.payload = try! adminPacket.serializedData() dataMessage.portnum = PortNum.adminApp - meshPacket.decoded = dataMessage - let messageDescription = "Saved User Config for \(toUser.longName ?? "Unknown")" if sendAdminMessageToRadio(meshPacket: meshPacket, adminDescription: messageDescription, fromUser: fromUser, toUser: toUser) { - return Int64(meshPacket.id) } @@ -1148,24 +1147,19 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph var adminPacket = AdminMessage() adminPacket.setConfig.bluetooth = config - var meshPacket: MeshPacket = MeshPacket() meshPacket.to = UInt32(connectedPeripheral.num) meshPacket.from = 0 //UInt32(connectedPeripheral.num) meshPacket.id = UInt32.random(in: UInt32(UInt8.max)..