From 5eea9ea87c20f828b2742bad7099579ddc2aaabe Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 17 Jul 2024 00:20:35 -0700 Subject: [PATCH] Node num details --- Meshtastic.xcodeproj/project.pbxproj | 2 +- Meshtastic/Extensions/Constants.swift | 10 +++++----- Meshtastic/Helpers/BLEManager.swift | 4 ++-- Meshtastic/Helpers/MeshPackets.swift | 4 ++-- Meshtastic/Persistence/UpdateCoreData.swift | 4 ++-- .../Messages/TextMessageField/TextMessageField.swift | 2 +- protobufs | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index b95716c8..89385765 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -919,6 +919,7 @@ DDDB444529F8A96500EE2349 /* Character.swift */, DDDB444929F8AA3A00EE2349 /* CLLocationCoordinate2D.swift */, DDDB444B29F8AAA600EE2349 /* Color.swift */, + 25C49D8F2C471AEA0024FBD1 /* Constants.swift */, DDDB445329F8AD1600EE2349 /* Data.swift */, DDDB445129F8ACF900EE2349 /* Date.swift */, DDDB444129F8A88700EE2349 /* Double.swift */, @@ -934,7 +935,6 @@ DDD5BB172C2F9C36007E03CA /* OSLogEntryLog.swift */, DDF45C362BC46A5A005ED5F2 /* TimeZone.swift */, DDD5BB0C2C285F00007E03CA /* Logger.swift */, - 25C49D8F2C471AEA0024FBD1 /* Constants.swift */, ); path = Extensions; sourceTree = ""; diff --git a/Meshtastic/Extensions/Constants.swift b/Meshtastic/Extensions/Constants.swift index db4d84e8..03a3cc31 100644 --- a/Meshtastic/Extensions/Constants.swift +++ b/Meshtastic/Extensions/Constants.swift @@ -1,11 +1,11 @@ import Foundation enum Constants { - /// `UInt32.max` is used to identify messages that are being + /// `UInt32.max` or FFFF,FFFF in hex is used to identify messages that are being /// sent to a channel and are not a DM to an individual user. This is used /// in the `to` field of some mesh packets. - static let emptyNodeNum = UInt32.max - - /// TODO: document me - static let minimumNodeNum = Int16.max + static let maximumNodeNum = UInt32.max + /// Based on the NUM_RESERVED from the firmware. + /// https://github.com/meshtastic/firmware/blob/46d7b82ac1a4292ba52ca690e1a433d3a501a9e5/src/mesh/NodeDB.cpp#L522 + static let minimumNodeNum = 4 } diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 776685a9..cc877499 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1009,7 +1009,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate if toUserNum > 0 { meshPacket.to = UInt32(toUserNum) } else { - meshPacket.to = Constants.emptyNodeNum + meshPacket.to = Constants.maximumNodeNum } meshPacket.channel = UInt32(channel) meshPacket.from = UInt32(fromUserNum) @@ -1057,7 +1057,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate var success = false let fromNodeNum = UInt32(connectedPeripheral.num) var meshPacket = MeshPacket() - meshPacket.to = Constants.emptyNodeNum + meshPacket.to = Constants.maximumNodeNum meshPacket.from = fromNodeNum meshPacket.wantAck = true var dataMessage = DataMessage() diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 2dadb10d..fb942e60 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -799,7 +799,7 @@ func textMessageAppPacket(packet: MeshPacket, wantRangeTestPackets: Bool, connec newMessage.replyID = Int64(packet.decoded.replyID) } - if fetchedUsers.first(where: { $0.num == packet.to }) != nil && packet.to != Constants.emptyNodeNum { + if fetchedUsers.first(where: { $0.num == packet.to }) != nil && packet.to != Constants.maximumNodeNum { if !storeForwardBroadcast { newMessage.toUser = fetchedUsers.first(where: { $0.num == packet.to }) } @@ -812,7 +812,7 @@ func textMessageAppPacket(packet: MeshPacket, wantRangeTestPackets: Bool, connec } newMessage.messagePayload = messageText newMessage.messagePayloadMarkdown = generateMessageMarkdown(message: messageText!) - if packet.to != Constants.emptyNodeNum && newMessage.fromUser != nil { + if packet.to != Constants.maximumNodeNum && newMessage.fromUser != nil { newMessage.fromUser?.lastMessage = Date() } var messageSaved = false diff --git a/Meshtastic/Persistence/UpdateCoreData.swift b/Meshtastic/Persistence/UpdateCoreData.swift index 1ab6985f..c612dd4e 100644 --- a/Meshtastic/Persistence/UpdateCoreData.swift +++ b/Meshtastic/Persistence/UpdateCoreData.swift @@ -153,7 +153,7 @@ func upsertNodeInfoPacket (packet: MeshPacket, context: NSManagedObjectContext) newNode.rssi = packet.rxRssi newNode.viaMqtt = packet.viaMqtt - if packet.to == Constants.emptyNodeNum || packet.to == UserDefaults.preferredPeripheralNum { + if packet.to == Constants.maximumNodeNum || packet.to == UserDefaults.preferredPeripheralNum { newNode.channel = Int32(packet.channel) } if let nodeInfoMessage = try? NodeInfo(serializedData: packet.decoded.payload) { @@ -231,7 +231,7 @@ func upsertNodeInfoPacket (packet: MeshPacket, context: NSManagedObjectContext) fetchedNode[0].snr = packet.rxSnr fetchedNode[0].rssi = packet.rxRssi fetchedNode[0].viaMqtt = packet.viaMqtt - if packet.to == Constants.emptyNodeNum || packet.to == UserDefaults.preferredPeripheralNum { + if packet.to == Constants.maximumNodeNum || packet.to == UserDefaults.preferredPeripheralNum { fetchedNode[0].channel = Int32(packet.channel) } diff --git a/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift b/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift index 4bf1d670..469e57a4 100644 --- a/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift +++ b/Meshtastic/Views/Messages/TextMessageField/TextMessageField.swift @@ -126,7 +126,7 @@ private extension MessageDestination { var positionDestNum: Int64 { switch self { case let .user(user): return user.num - case .channel: return Int64(Constants.emptyNodeNum) + case .channel: return Int64(Constants.maximumNodeNum) } } diff --git a/protobufs b/protobufs index 0fd5023a..10494bf3 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 0fd5023a0aa67eefdf2292a624e8fbbda4489a6c +Subproject commit 10494bf328ac051fc4add9ddeb677eebf337b531