Block the range test

This commit is contained in:
Garth Vander Houwen 2023-08-29 10:40:39 -07:00
parent 058e5e2452
commit b304b81d5f
8 changed files with 41 additions and 14 deletions

View file

@ -9,6 +9,7 @@ import Foundation
extension UserDefaults {
enum Keys: String, CaseIterable {
case enableRangeTest
case meshtasticUsername
case preferredPeripheralId
case provideLocation
@ -25,6 +26,13 @@ extension UserDefaults {
func reset() {
Keys.allCases.forEach { removeObject(forKey: $0.rawValue) }
}
static var blockRangeTest: Bool {
get {
UserDefaults.standard.bool(forKey: "blockRangeTest")
} set {
UserDefaults.standard.set(newValue, forKey: "blockRangeTest")
}
}
static var meshtasticUsername: String {
get {
UserDefaults.standard.string(forKey: "meshtasticUsername") ?? ""

View file

@ -531,7 +531,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
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, blockRangeTest: UserDefaults.blockRangeTest, 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:
@ -553,8 +553,8 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
case .storeForwardApp:
storeAndForwardPacket(packet: decodedInfo.packet, connectedNodeNum: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!)
case .rangeTestApp:
if wantRangeTestPackets {
textMessageAppPacket(packet: decodedInfo.packet, connectedNode: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!)
if wantRangeTestPackets && !UserDefaults.blockRangeTest {
textMessageAppPacket(packet: decodedInfo.packet, blockRangeTest: false, connectedNode: (self.connectedPeripheral != nil ? connectedPeripheral.num : 0), context: context!)
}
else {
MeshLogger.log("🕸️ MESH PACKET received for Range Test App UNHANDLED \((try? decodedInfo.packet.jsonString()) ?? "JSON Decode Failure")")

View file

@ -711,9 +711,13 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage
}
}
func textMessageAppPacket(packet: MeshPacket, connectedNode: Int64, context: NSManagedObjectContext) {
func textMessageAppPacket(packet: MeshPacket, blockRangeTest: Bool, connectedNode: Int64, context: NSManagedObjectContext) {
if let messageText = String(bytes: packet.decoded.payload, encoding: .utf8) {
if blockRangeTest && messageText.starts(with: "seq ") {
return
}
MeshLogger.log("💬 \("mesh.log.textmessage.received".localized)")

View file

@ -12,6 +12,7 @@ struct AppSettings: View {
@StateObject var locationHelper = LocationHelper()
@State var meshtasticUsername: String = UserDefaults.meshtasticUsername
@State var provideLocation: Bool = UserDefaults.provideLocation
@State var blockRangeTest: Bool = UserDefaults.blockRangeTest
@State var provideLocationInterval: Int = UserDefaults.provideLocationInterval
@State private var isPresentingCoreDataResetConfirm = false
@State private var isPresentingDeleteMapTilesConfirm = false
@ -28,6 +29,13 @@ struct AppSettings: View {
.disableAutocorrection(true)
.listRowSeparator(.visible)
}
Section(header: Text("options")) {
Toggle(isOn: $blockRangeTest) {
Label("range.test.blocked", systemImage: "x.circle")
}
.toggleStyle(SwitchToggleStyle(tint: .accentColor))
}
Section(header: Text("phone.gps")) {
let accuracy = Measurement(value: locationHelper.locationManager.location?.horizontalAccuracy ?? 300, unit: UnitLength.meters)
let altitiude = Measurement(value: locationHelper.locationManager.location?.altitude ?? 0, unit: UnitLength.meters)
@ -115,16 +123,16 @@ struct AppSettings: View {
print("delete all tiles")
}
}
ForEach(MapTileServer.allCases, id: \.self) { tsl in
Button {
tileManager.remove(for: tsl)
totalDownloadedTileSize = tileManager.getAllDownloadedSize()
} label: {
Label("Delete \(tsl.description) Tiles", systemImage: "trash")
.foregroundColor(.red)
.font(.footnote)
}
}
// ForEach(MapTileServer.allCases, id: \.self) { tsl in
// Button {
// tileManager.remove(for: tsl)
// totalDownloadedTileSize = tileManager.getAllDownloadedSize()
// } label: {
// Label("Delete \(tsl.description) Tiles", systemImage: "trash")
// .foregroundColor(.red)
// .font(.footnote)
// }
// }
}
}
}
@ -140,6 +148,9 @@ struct AppSettings: View {
.onAppear {
self.bleManager.context = context
}
.onChange(of: blockRangeTest) { newBlockRangeTest in
UserDefaults.blockRangeTest = newBlockRangeTest
}
.onChange(of: (meshtasticUsername)) { newMeshtasticUsername in
UserDefaults.meshtasticUsername = newMeshtasticUsername
}

View file

@ -214,6 +214,7 @@
"provide.location"="Standort im Mesh veröffentlichen";
"radio.configuration"="Geräteeinstellungen";
"range.test"="Entfernungstest";
"range.test.blocked"="Block Range Test";
"range.test.config"="Entfernungstest Konfiguration";
"reboot"="Reboot";
"reboot.node"="Node neustarten?";

View file

@ -217,6 +217,7 @@
"provide.location"="Share location";
"radio.configuration"="Radio Configuration";
"range.test"="Range Test";
"range.test.blocked"="Block Range Test";
"range.test.config"="Range Test Config";
"reply"="Reply";
"reboot"="Reboot";

View file

@ -215,6 +215,7 @@
"provide.location"="Udostępnij lokalizację";
"radio.configuration"="Konfiguracja radia";
"range.test"="Test zasięgu";
"range.test.blocked"="Block Range Test";
"range.test.config"="Konfiguracja testu zasięgu";
"reply"="Odpowiedz";
"reboot"="Uruchom ponownie";

View file

@ -214,6 +214,7 @@
"provide.location"="提供定位到 Mesh 网络";
"radio.configuration"="电台配置";
"range.test"="拉距测试";
"range.test.blocked"="Block Range Test";
"range.test.config"="拉距测试配置";
"reply"="回复";
"reboot"="重启";