diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index d1298f4e..8e9d3beb 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -550,7 +550,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate case .serialApp: MeshLogger.log("๐Ÿ•ธ๏ธ MESH PACKET received for Serial App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")") case .storeForwardApp: - MeshLogger.log("๐Ÿ•ธ๏ธ MESH PACKET received for Store Forward App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")") + storeAndForwardPacket(packet: decodedInfo.packet, connectedNodeNum: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!) case .rangeTestApp: MeshLogger.log("๐Ÿ•ธ๏ธ MESH PACKET received for Range Test App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")") case .telemetryApp: @@ -659,7 +659,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate self.startScanning() // Try and connect to the preferredPeripherial first - let preferredPeripheral = peripherals.filter({ $0.peripheral.identifier.uuidString == UserDefaults.preferredPeripheralId as? String ?? "" }).first + let preferredPeripheral = peripherals.filter({ $0.peripheral.identifier.uuidString == UserDefaults.preferredPeripheralId as String }).first if preferredPeripheral != nil && preferredPeripheral?.peripheral != nil { connectTo(peripheral: preferredPeripheral!.peripheral) } diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 382a4619..d3e5a31c 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -578,6 +578,47 @@ func routingPacket (packet: MeshPacket, connectedNodeNum: Int64, context: NSMana } } +func storeAndForwardPacket(packet: MeshPacket, connectedNodeNum: Int64, context: NSManagedObjectContext) { + + if let storeAndForwardMessage = try? StoreAndForward(serializedData: packet.decoded.payload) { + // RequestResponse + switch storeAndForwardMessage.rr { + + case .unset: + MeshLogger.log("๐Ÿ“ฎ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .routerError: + MeshLogger.log("โ˜ ๏ธ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .routerHeartbeat: + // Query any messages since the heartbeat.period. Send their ids to the store and forward node. + MeshLogger.log("๐Ÿ’“ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .routerPing: + MeshLogger.log("๐Ÿ“ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .routerPong: + MeshLogger.log("๐Ÿ“ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .routerBusy: + MeshLogger.log("๐Ÿ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .routerHistory: + MeshLogger.log("๐Ÿ“œ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .routerStats: + MeshLogger.log("๐Ÿ“Š Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .clientError: + MeshLogger.log("โ˜ ๏ธ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .clientHistory: + MeshLogger.log("๐Ÿ“œ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .clientStats: + MeshLogger.log("๐Ÿ“Š Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .clientPing: + MeshLogger.log("๐Ÿ“ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .clientPong: + MeshLogger.log("๐Ÿ“ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .clientAbort: + MeshLogger.log("๐Ÿ›‘ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + case .UNRECOGNIZED(_): + MeshLogger.log("๐Ÿ“ฎ Store and Forward \(storeAndForwardMessage.rr) message received \(storeAndForwardMessage)") + } + } +} + func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManagedObjectContext) { if let telemetryMessage = try? Telemetry(serializedData: packet.decoded.payload) { diff --git a/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift b/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift index 8015b3fd..1f7b1b41 100644 --- a/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift @@ -103,7 +103,6 @@ struct DetectionSensorConfig: View { Section(header: Text("update.interval")) { Picker("Minimum time between detection broadcasts", selection: $minimumBroadcastSecs) { - Text("Default").tag(0) ForEach(UpdateIntervals.allCases) { ui in Text(ui.description).tag(ui.rawValue) } @@ -113,7 +112,7 @@ struct DetectionSensorConfig: View { .font(.caption) Picker("State Broadcast Interval", selection: $stateBroadcastSecs) { - Text("Default").tag(0) + Text("Never").tag(0) ForEach(UpdateIntervals.allCases) { ui in Text(ui.description).tag(ui.rawValue) } diff --git a/de.lproj/Localizable.strings b/de.lproj/Localizable.strings index ea8b3b90..16356d1c 100644 --- a/de.lproj/Localizable.strings +++ b/de.lproj/Localizable.strings @@ -194,6 +194,7 @@ "name"="Name"; "network"="Netzwerk"; "network.config"="Netzwerkeinstellungen"; +"nodes"="Nodes"; "nodes %@"="Nodes (%@)"; "no.nodes"="Keine Meshtastic Nodes gefunden"; "not.connected"="Kein Gerรคt verbunden"; diff --git a/en.lproj/Localizable.strings b/en.lproj/Localizable.strings index 6ab770c4..b6166ab2 100644 --- a/en.lproj/Localizable.strings +++ b/en.lproj/Localizable.strings @@ -196,6 +196,7 @@ "name"="Name"; "network"="Network"; "network.config"="Network Config"; +"nodes"="Nodes"; "nodes %@"="Nodes (%@)"; "no.nodes"="No Meshtastic Nodes Found"; "not.connected"="No device connected"; diff --git a/zh-Hans.lproj/Localizable.strings b/zh-Hans.lproj/Localizable.strings index dac0df52..9ec1cc5d 100644 --- a/zh-Hans.lproj/Localizable.strings +++ b/zh-Hans.lproj/Localizable.strings @@ -194,6 +194,7 @@ "name"="ๅ็งฐ"; "network"="็ฝ‘็ปœ"; "network.config"="็ฝ‘็ปœ้…็ฝฎ"; +"nodes"="่Š‚็‚น"; "nodes %@"="่Š‚็‚น (%@)"; "no.nodes"="ๆœชๆ‰พๅˆฐ Meshtastic ่Š‚็‚น"; "not.connected"="ๆœช่ฟžๆŽฅๅˆฐ็”ตๅฐ";