diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index ca8fbd25..99f3e0b6 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -688,10 +688,11 @@ class BLEManager: NSObject, CBPeripheralDelegate, ObservableObject { MeshLogger.log("πŸ“² New messageId \(newMessage.messageId) sent to \(newMessage.toUser?.longName! ?? NSLocalizedString("unknown", comment: "Unknown"))") if connectedPeripheral!.peripheral.state == CBPeripheralState.connected { connectedPeripheral.peripheral.writeValue(binaryData, for: TORADIO_characteristic, type: .withResponse) + MeshLogger.log("πŸ’¬ Sent a message from \(connectedPeripheral.num) to \(toUserNum)") do { try context!.save() - MeshLogger.log("πŸ’Ύ Saved a new sent message from \(connectedPeripheral.num) to \(toUserNum)") + print("πŸ’Ύ Saved a new sent message from \(connectedPeripheral.num) to \(toUserNum)") success = true } catch { diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 8161c038..0b324843 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -1004,9 +1004,10 @@ func adminAppPacket (packet: MeshPacket, context: NSManagedObjectContext) { } } - func positionPacket (packet: MeshPacket, context: NSManagedObjectContext) { + MeshLogger.log("πŸ“ Position Packet received from node: \(packet.from)") + let fetchNodePositionRequest: NSFetchRequest = NSFetchRequest.init(entityName: "NodeInfoEntity") fetchNodePositionRequest.predicate = NSPredicate(format: "num == %lld", Int64(packet.from)) @@ -1045,7 +1046,7 @@ func positionPacket (packet: MeshPacket, context: NSManagedObjectContext) { do { try context.save() - MeshLogger.log("πŸ’Ύ Updated Node Position Coordinates, SNR and Time from Position App Packet For: \(fetchedNode[0].num)") + print("πŸ’Ύ Updated Node Position Coordinates, SNR and Time from Position App Packet For: \(fetchedNode[0].num)") } catch { context.rollback() @@ -1068,38 +1069,9 @@ func routingPacket (packet: MeshPacket, connectedNodeNum: Int64, context: NSMana if let routingMessage = try? Routing(serializedData: packet.decoded.payload) { - let error = routingMessage.errorReason - - var errorExplanation = "Unknown Routing Error" - - switch error { - case Routing.Error.none: - errorExplanation = "This message is not a failure" - case Routing.Error.noRoute: - errorExplanation = "Our node doesn't have a route to the requested destination anymore." - case Routing.Error.gotNak: - errorExplanation = "We received a nak while trying to forward on your behalf" - case Routing.Error.timeout: - errorExplanation = "Timeout" - case Routing.Error.noInterface: - errorExplanation = "No suitable interface could be found for delivering this packet" - case Routing.Error.maxRetransmit: - errorExplanation = "We reached the max retransmission count (typically for naive flood routing)" - case Routing.Error.noChannel: - errorExplanation = "No suitable channel was found for sending this packet (i.e. was requested channel index disabled?)" - case Routing.Error.tooLarge: - errorExplanation = "The packet was too big for sending (exceeds interface MTU after encoding)" - case Routing.Error.noResponse: - errorExplanation = "The request had want_response set, the request reached the destination node, but no service on that node wants to send a response (possibly due to bad channel permissions)" - case Routing.Error.badRequest: - errorExplanation = "The application layer service on the remote node received your request, but considered your request somehow invalid" - case Routing.Error.notAuthorized: - errorExplanation = "The application layer service on the remote node received your request, but considered your request not authorized (i.e you did not send the request on the required bound channel)" - fallthrough - default: () - } - - MeshLogger.log("πŸ•ΈοΈ ROUTING PACKET received for RequestID: \(packet.decoded.requestID) Error: \(errorExplanation)") + let routingError = RoutingError(rawValue: routingMessage.errorReason.rawValue) + + MeshLogger.log("πŸ•ΈοΈ Routing received for RequestID: \(packet.decoded.requestID) Ack Status: \(routingError?.display ?? NSLocalizedString("unknown", comment: ""))") let fetchMessageRequest: NSFetchRequest = NSFetchRequest.init(entityName: "MessageEntity") fetchMessageRequest.predicate = NSPredicate(format: "messageId == %lld", Int64(packet.decoded.requestID)) @@ -1147,11 +1119,11 @@ func routingPacket (packet: MeshPacket, connectedNodeNum: Int64, context: NSMana return } try context.save() - MeshLogger.log("πŸ’Ύ ACK Received and saved for MessageID \(packet.decoded.requestID)") + print("πŸ’Ύ ACK Saved for Message: \(packet.decoded.requestID)") } catch { context.rollback() let nsError = error as NSError - MeshLogger.log("πŸ’₯ Error Saving ACK for message MessageID \(packet.id) Error: \(nsError)") + print("πŸ’₯ Error Saving ACK for message: \(packet.id) Error: \(nsError)") } } } @@ -1160,7 +1132,12 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage if let telemetryMessage = try? Telemetry(serializedData: packet.decoded.payload) { - let telemetry = TelemetryEntity(context: context) + // Only log telemetry from the mesh not the connected device + if connectedNode != Int64(packet.from) { + MeshLogger.log("πŸ“ˆ Telemetry received for: \(String(packet.from))") + } + + let telemetry = TelemetryEntity(context: context) let fetchNodeTelemetryRequest: NSFetchRequest = NSFetchRequest.init(entityName: "NodeInfoEntity") fetchNodeTelemetryRequest.predicate = NSPredicate(format: "num == %lld", Int64(packet.from)) @@ -1194,9 +1171,9 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage fetchedNode[0].telemetries = mutableTelemetries.copy() as? NSOrderedSet } try context.save() - // Only log telemetery from the mesh not the connected device + // Only log telemetry from the mesh not the connected device if connectedNode != Int64(packet.from) { - MeshLogger.log("πŸ’Ύ Telemetry Saved for Node: \(packet.from)") + print("πŸ’Ύ Telemetry Saved for Node: \(packet.from)") } } catch { context.rollback() @@ -1212,7 +1189,7 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM if let messageText = String(bytes: packet.decoded.payload, encoding: .utf8) { - MeshLogger.log("πŸ’¬ Message received for text message app") + MeshLogger.log("πŸ’¬ Message received from the text message app") let messageUsers: NSFetchRequest = NSFetchRequest.init(entityName: "UserEntity") messageUsers.predicate = NSPredicate(format: "num IN %@", [packet.to, packet.from]) @@ -1248,7 +1225,7 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM do { try context.save() - MeshLogger.log("πŸ’Ύ Saved a new message for \(newMessage.messageId)") + print("πŸ’Ύ Saved a new message for \(newMessage.messageId)") messageSaved = true if messageSaved { @@ -1264,7 +1241,7 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM content: messageText) ] manager.schedule() - MeshLogger.log("πŸ’¬ iOS Notification Scheduled for text message from \(newMessage.fromUser?.longName ?? NSLocalizedString("unknown", comment: "Unknown"))") + print("πŸ’¬ iOS Notification Scheduled for text message from \(newMessage.fromUser?.longName ?? NSLocalizedString("unknown", comment: "Unknown"))") } else if newMessage.fromUser != nil && newMessage.toUser == nil { let fetchMyInfoRequest: NSFetchRequest = NSFetchRequest.init(entityName: "MyInfoEntity") @@ -1288,12 +1265,11 @@ func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSM content: messageText) ] manager.schedule() - MeshLogger.log("πŸ’¬ iOS Notification Scheduled for text message from \(newMessage.fromUser?.longName ?? NSLocalizedString("unknown", comment: "Unknown"))") + print("πŸ’¬ iOS Notification Scheduled for text message from \(newMessage.fromUser?.longName ?? NSLocalizedString("unknown", comment: "Unknown"))") } } } catch { - } } }