mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Release Cleanup
Add back block range test functionaitly, hook it up to the device range test settings. Delete messages when deleting a channel Make pax counter clear work properly
This commit is contained in:
parent
505e1128ed
commit
d3d16e206e
11 changed files with 51 additions and 12 deletions
|
|
@ -593,7 +593,7 @@ 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:
|
||||
textMessageAppPacket(packet: decodedInfo.packet, connectedNode: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!)
|
||||
textMessageAppPacket(packet: decodedInfo.packet, wantRangeTestPackets: wantRangeTestPackets, connectedNode: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!)
|
||||
case .remoteHardwareApp:
|
||||
MeshLogger.log("🕸️ MESH PACKET received for Remote Hardware App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")")
|
||||
case .positionApp:
|
||||
|
|
@ -620,7 +620,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
|
|||
}
|
||||
case .rangeTestApp:
|
||||
if wantRangeTestPackets {
|
||||
textMessageAppPacket(packet: decodedInfo.packet, connectedNode: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!)
|
||||
textMessageAppPacket(packet: decodedInfo.packet, wantRangeTestPackets: true, connectedNode: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!)
|
||||
}
|
||||
else {
|
||||
MeshLogger.log("🕸️ MESH PACKET received for Range Test App Range testing is disabled.")
|
||||
|
|
@ -653,7 +653,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
|
|||
var hopNodes: [TraceRouteHopEntity] = []
|
||||
for node in routingMessage.route {
|
||||
var hopNode = getNodeInfo(id: Int64(node), context: context!)
|
||||
if hopNode == nil {
|
||||
if hopNode == nil && hopNode?.num ?? 0 > 0 {
|
||||
hopNode = createNodeInfo(num: Int64(node), context: context!)
|
||||
}
|
||||
let traceRouteHop = TraceRouteHopEntity(context: context!)
|
||||
|
|
@ -2590,10 +2590,10 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
|
|||
MeshLogger.log("📮 Store and Forward \(storeAndForwardMessage.rr) message received from \(packet.from)")
|
||||
case .routerTextDirect:
|
||||
MeshLogger.log("💬 Store and Forward \(storeAndForwardMessage.rr) message received from \(packet.from)")
|
||||
textMessageAppPacket(packet: packet, connectedNode: connectedNodeNum, storeForward: true, context: context)
|
||||
textMessageAppPacket(packet: packet, wantRangeTestPackets: false, connectedNode: connectedNodeNum, storeForward: true, context: context)
|
||||
case .routerTextBroadcast:
|
||||
MeshLogger.log("✉️ Store and Forward \(storeAndForwardMessage.rr) message received from \(packet.from)")
|
||||
textMessageAppPacket(packet: packet, connectedNode: connectedNodeNum, storeForward: true, context: context)
|
||||
textMessageAppPacket(packet: packet, wantRangeTestPackets: false, connectedNode: connectedNodeNum, storeForward: true, context: context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -217,8 +217,10 @@ func deviceMetadataPacket (metadata: DeviceMetadata, fromNum: Int64, context: NS
|
|||
fetchedNode[0].metadata = newMetadata
|
||||
} else {
|
||||
|
||||
let newNode = createNodeInfo(num: Int64(fromNum), context: context)
|
||||
newNode.metadata = newMetadata
|
||||
if fromNum > 0 {
|
||||
let newNode = createNodeInfo(num: Int64(fromNum), context: context)
|
||||
newNode.metadata = newMetadata
|
||||
}
|
||||
}
|
||||
do {
|
||||
try context.save()
|
||||
|
|
@ -770,9 +772,12 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage
|
|||
}
|
||||
}
|
||||
|
||||
func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, storeForward: Bool = false, context: NSManagedObjectContext) {
|
||||
func textMessageAppPacket(packet: MeshPacket, wantRangeTestPackets: Bool, connectedNode: Int64, storeForward: Bool = false, context: NSManagedObjectContext) {
|
||||
|
||||
var messageText = String(bytes: packet.decoded.payload, encoding: .utf8)
|
||||
if !wantRangeTestPackets && ((messageText?.starts(with: "seq ")) != nil) {
|
||||
return
|
||||
}
|
||||
var storeForwardBroadcast = false
|
||||
if storeForward {
|
||||
if let storeAndForwardMessage = try? StoreAndForward(serializedData: packet.decoded.payload) {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,31 @@
|
|||
|
||||
import CoreData
|
||||
|
||||
public func clearPax(destNum: Int64, context: NSManagedObjectContext) -> Bool {
|
||||
|
||||
let fetchNodeInfoRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "NodeInfoEntity")
|
||||
fetchNodeInfoRequest.predicate = NSPredicate(format: "num == %lld", Int64(destNum))
|
||||
|
||||
do {
|
||||
guard let fetchedNode = try context.fetch(fetchNodeInfoRequest) as? [NodeInfoEntity] else {
|
||||
return false
|
||||
}
|
||||
let newPax = [PaxCounterLog]()
|
||||
fetchedNode[0].pax? = NSOrderedSet(array: newPax)
|
||||
do {
|
||||
try context.save()
|
||||
return true
|
||||
|
||||
} catch {
|
||||
context.rollback()
|
||||
return false
|
||||
}
|
||||
} catch {
|
||||
print("💥 Fetch NodeInfoEntity Error")
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
public func clearPositions(destNum: Int64, context: NSManagedObjectContext) -> Bool {
|
||||
|
||||
let fetchNodeInfoRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "NodeInfoEntity")
|
||||
|
|
|
|||
|
|
@ -75,8 +75,8 @@ struct PaxCounterLog: View {
|
|||
.chartXAxis(.automatic)
|
||||
.chartYScale(domain: 0...maxValue)
|
||||
.chartForegroundStyleScale([
|
||||
"BLE": .blue,
|
||||
"WiFi": .orange,
|
||||
"paxcounter.ble": .blue,
|
||||
"paxcounter.wifi": .orange,
|
||||
"paxcounter.total".localized: .green
|
||||
])
|
||||
.chartLegend(position: .automatic, alignment: .bottom)
|
||||
|
|
@ -174,7 +174,7 @@ struct PaxCounterLog: View {
|
|||
titleVisibility: .visible
|
||||
) {
|
||||
Button("paxcounter.delete", role: .destructive) {
|
||||
if clearTelemetry(destNum: node.num, metricsType: 0, context: context) {
|
||||
if clearPax(destNum: node.num, context: context) {
|
||||
print("Cleared Pax Counter for \(node.num)")
|
||||
} else {
|
||||
print("Clear Pax Counter Log Failed")
|
||||
|
|
|
|||
|
|
@ -401,6 +401,10 @@ struct Channels: View {
|
|||
guard let channelEntity = node!.myInfo!.channels?[Int(channelIndex)] as? ChannelEntity else {
|
||||
return
|
||||
}
|
||||
let objects = channelEntity.allPrivateMessages
|
||||
for object in objects {
|
||||
context.delete(object)
|
||||
}
|
||||
context.delete(channelEntity)
|
||||
do {
|
||||
try context.save()
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ struct StoreForwardConfig: View {
|
|||
var body: some View {
|
||||
VStack {
|
||||
Form {
|
||||
ConfigHeader(title: "Store and forward", config: \.storeForwardConfig, node: node, onAppear: setStoreAndForwardValues)
|
||||
ConfigHeader(title: "storeforward", config: \.storeForwardConfig, node: node, onAppear: setStoreAndForwardValues)
|
||||
|
||||
Section(header: Text("options")) {
|
||||
|
||||
|
|
|
|||
|
|
@ -177,6 +177,7 @@
|
|||
"mesh.log.myinfo %@"="MyInfo received: %@";
|
||||
"mesh.log.network.config %@"="Netzwerk onfiguration empfangen: %@";
|
||||
"mesh.log.nodeinfo.received %@"="Node info empfangen für: %@";
|
||||
"mesh.log.paxcounter %@"="PAX Counter message received for: %@";
|
||||
"mesh.log.position.config %@"="Positions Konfiguration empfangen: %@";
|
||||
"mesh.log.position.received %@"="Positionspaket empfangen von Node: %@";
|
||||
"mesh.log.rangetest.config %@"="Range Test Modul konfiguration empfangen: %@";
|
||||
|
|
|
|||
|
|
@ -206,6 +206,7 @@
|
|||
"mesh.log.myinfo %@"="MyInfo received: %@";
|
||||
"mesh.log.network.config %@"="Network config received: %@";
|
||||
"mesh.log.nodeinfo.received %@"="Node info received for: %@";
|
||||
"mesh.log.paxcounter %@"="PAX Counter message received from: %@";
|
||||
"mesh.log.position.config %@"="Positon config received: %@";
|
||||
"mesh.log.position.received %@"="Position Packet received from node: %@";
|
||||
"mesh.log.power.config %@"="Power config received: %@";
|
||||
|
|
|
|||
|
|
@ -184,6 +184,7 @@
|
|||
"mesh.log.myinfo %@"="MyInfo התקבל: %@";
|
||||
"mesh.log.network.config %@"="הגדרות רשת התקבלו: %@";
|
||||
"mesh.log.nodeinfo.received %@"="מידע אודות מכשיר התקבל: %@";
|
||||
"mesh.log.paxcounter %@"="PAX Counter packet received for: %@";
|
||||
"mesh.log.position.config %@"="הגדרות מיקום התקבלו: %@";
|
||||
"mesh.log.position.received %@"="הודעת מיקום התקבלו מ-%@";
|
||||
"mesh.log.rangetest.config %@"="הגדרות מודולת בדיקת טווח התקבלו: %@";
|
||||
|
|
|
|||
|
|
@ -179,6 +179,7 @@
|
|||
"mesh.log.myinfo %@"="Otrzymano Moje Informacje: %@";
|
||||
"mesh.log.network.config %@"="Odebrano konfigurację sieci: %@";
|
||||
"mesh.log.nodeinfo.received %@"="Odebrano informacje o węźle dla: %@";
|
||||
"mesh.log.paxcounter %@"="PAX Counter packet received for: %@";
|
||||
"mesh.log.position.config %@"="Odebrano konfigurację pozycji: %@";
|
||||
"mesh.log.position.received %@"="Odebrano pakiet pozycji od węzła: %@";
|
||||
"mesh.log.rangetest.config %@"="Odebrano konfigurację modułu testu zasięgu: %@";
|
||||
|
|
|
|||
|
|
@ -177,6 +177,7 @@
|
|||
"mesh.log.myinfo %@"="MyInfo received: %@";
|
||||
"mesh.log.network.config %@"="Network config received: %@";
|
||||
"mesh.log.nodeinfo.received %@"="Node info received for: %@";
|
||||
"mesh.log.paxcounter %@"="PAX Counter message received for: %@";
|
||||
"mesh.log.position.config %@"="Positon config received: %@";
|
||||
"mesh.log.position.received %@"="Position Packet received from node: %@";
|
||||
"mesh.log.rangetest.config %@"="Range Test module config received: %@";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue