From e1f2e34c2e29dc894fd7b687c448009bb03f67d0 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Fri, 10 Jan 2025 08:32:42 -0800 Subject: [PATCH] Add criticial alerts functionality to textMessageAppPacket --- Meshtastic/Helpers/BLEManager.swift | 10 ++++++++-- Meshtastic/Helpers/LocalNotificationManager.swift | 4 ++++ Meshtastic/Helpers/MeshPackets.swift | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index a70c60ca..6381a237 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -758,7 +758,6 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate // Log any other unknownApp calls if !nowKnown { MeshLogger.log("🕸️ MESH PACKET received for Unknown App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")") } case .textMessageApp, .detectionSensorApp: - // TODO: Critical alert for alertApp payloads textMessageAppPacket( packet: decodedInfo.packet, wantRangeTestPackets: wantRangeTestPackets, @@ -767,7 +766,14 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate appState: appState ) case .alertApp: - MeshLogger.log("🕸️ MESH PACKET received for Alert App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")") + textMessageAppPacket( + packet: decodedInfo.packet, + wantRangeTestPackets: wantRangeTestPackets, + critical: true, + connectedNode: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), + context: context, + appState: appState + ) case .remoteHardwareApp: MeshLogger.log("🕸️ MESH PACKET received for Remote Hardware App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")") case .positionApp: diff --git a/Meshtastic/Helpers/LocalNotificationManager.swift b/Meshtastic/Helpers/LocalNotificationManager.swift index 47f64bce..7eb830c3 100644 --- a/Meshtastic/Helpers/LocalNotificationManager.swift +++ b/Meshtastic/Helpers/LocalNotificationManager.swift @@ -67,6 +67,9 @@ class LocalNotificationManager { if notification.userNum != nil { content.userInfo["userNum"] = notification.userNum } + if notification.critical { + content.sound = UNNotificationSound.defaultCritical + } let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) let request = UNNotificationRequest(identifier: notification.id, content: content, trigger: trigger) @@ -101,4 +104,5 @@ struct Notification { var messageId: Int64? var channel: Int32? var userNum: Int64? + var critical: Bool = false } diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index fd9ffb8e..917c38c0 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -820,6 +820,7 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage func textMessageAppPacket( packet: MeshPacket, wantRangeTestPackets: Bool, + critical: Bool = false, connectedNode: Int64, storeForward: Bool = false, context: NSManagedObjectContext,