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:
Garth Vander Houwen 2024-02-27 11:26:26 -08:00
parent 505e1128ed
commit d3d16e206e
11 changed files with 51 additions and 12 deletions

View file

@ -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)
}
}
}

View file

@ -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) {

View file

@ -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")

View file

@ -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")

View file

@ -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()

View file

@ -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")) {

View file

@ -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: %@";

View file

@ -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: %@";

View file

@ -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 %@"="הגדרות מודולת בדיקת טווח התקבלו: %@";

View file

@ -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: %@";

View file

@ -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: %@";