diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 687024fb..e284ac42 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -18945,9 +18945,6 @@ }, "Select a Trace Route" : { - }, - "Select something to view" : { - }, "select.contact" : { "extractionState" : "manual", diff --git a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 45.xcdatamodel/contents b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 45.xcdatamodel/contents index 2a5e4a56..687237cb 100644 --- a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 45.xcdatamodel/contents +++ b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 45.xcdatamodel/contents @@ -69,6 +69,7 @@ + diff --git a/Meshtastic/Persistence/UpdateCoreData.swift b/Meshtastic/Persistence/UpdateCoreData.swift index faa8e606..fc8eac8e 100644 --- a/Meshtastic/Persistence/UpdateCoreData.swift +++ b/Meshtastic/Persistence/UpdateCoreData.swift @@ -462,24 +462,24 @@ func upsertDeviceConfigPacket(config: Config.DeviceConfig, nodeNum: Int64, sessi if fetchedNode[0].deviceConfig == nil { let newDeviceConfig = DeviceConfigEntity(context: context) newDeviceConfig.role = Int32(config.role.rawValue) - newDeviceConfig.serialEnabled = config.serialEnabled newDeviceConfig.buttonGpio = Int32(config.buttonGpio) newDeviceConfig.buzzerGpio = Int32(config.buzzerGpio) newDeviceConfig.rebroadcastMode = Int32(config.rebroadcastMode.rawValue) newDeviceConfig.nodeInfoBroadcastSecs = Int32(truncating: config.nodeInfoBroadcastSecs as NSNumber) newDeviceConfig.doubleTapAsButtonPress = config.doubleTapAsButtonPress + newDeviceConfig.tripleClickAsAdHocPing = !config.disableTripleClick newDeviceConfig.ledHeartbeatEnabled = !config.ledHeartbeatDisabled newDeviceConfig.isManaged = config.isManaged newDeviceConfig.tzdef = config.tzdef fetchedNode[0].deviceConfig = newDeviceConfig } else { fetchedNode[0].deviceConfig?.role = Int32(config.role.rawValue) - fetchedNode[0].deviceConfig?.serialEnabled = config.serialEnabled fetchedNode[0].deviceConfig?.buttonGpio = Int32(config.buttonGpio) fetchedNode[0].deviceConfig?.buzzerGpio = Int32(config.buzzerGpio) fetchedNode[0].deviceConfig?.rebroadcastMode = Int32(config.rebroadcastMode.rawValue) fetchedNode[0].deviceConfig?.nodeInfoBroadcastSecs = Int32(truncating: config.nodeInfoBroadcastSecs as NSNumber) fetchedNode[0].deviceConfig?.doubleTapAsButtonPress = config.doubleTapAsButtonPress + fetchedNode[0].deviceConfig?.tripleClickAsAdHocPing = !config.disableTripleClick fetchedNode[0].deviceConfig?.ledHeartbeatEnabled = !config.ledHeartbeatDisabled fetchedNode[0].deviceConfig?.isManaged = config.isManaged fetchedNode[0].deviceConfig?.tzdef = config.tzdef diff --git a/Meshtastic/Views/Settings/Config/DeviceConfig.swift b/Meshtastic/Views/Settings/Config/DeviceConfig.swift index fd637659..117c0683 100644 --- a/Meshtastic/Views/Settings/Config/DeviceConfig.swift +++ b/Meshtastic/Views/Settings/Config/DeviceConfig.swift @@ -23,7 +23,6 @@ struct DeviceConfig: View { @State var deviceRole = 0 @State var buzzerGPIO = 0 @State var buttonGPIO = 0 - @State var serialEnabled = true @State var rebroadcastMode = 0 @State var nodeInfoBroadcastSecs = 10800 @State var doubleTapAsButtonPress = false @@ -77,7 +76,7 @@ struct DeviceConfig: View { Text("Treat double tap on supported accelerometers as a user button press.") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) - + Toggle(isOn: $tripleClickAsAdHocPing) { Label("Triple Click Ad Hoc Ping", systemImage: "map.pin") Text("Send a position on the primary channel when the user button is triple clicked.") @@ -91,10 +90,6 @@ struct DeviceConfig: View { .toggleStyle(SwitchToggleStyle(tint: .accentColor)) } Section(header: Text("Debug")) { - Toggle(isOn: $serialEnabled) { - Label("Serial Console", systemImage: "terminal") - } - .toggleStyle(SwitchToggleStyle(tint: .accentColor)) VStack(alignment: .leading) { HStack { Label("Time Zone", systemImage: "clock.badge.exclamationmark") @@ -114,7 +109,7 @@ struct DeviceConfig: View { .disableAutocorrection(true) Text("Time zone for dates on the device screen and log.") .foregroundColor(.gray) - .font(.callout) + .font(.callout) } } Section(header: Text("GPIO")) { @@ -201,12 +196,12 @@ struct DeviceConfig: View { if connectedNode != nil { var dc = Config.DeviceConfig() dc.role = DeviceRoles(rawValue: deviceRole)!.protoEnumValue() - dc.serialEnabled = serialEnabled dc.buttonGpio = UInt32(buttonGPIO) dc.buzzerGpio = UInt32(buzzerGPIO) dc.rebroadcastMode = RebroadcastModes(rawValue: rebroadcastMode)?.protoEnumValue() ?? RebroadcastModes.all.protoEnumValue() dc.nodeInfoBroadcastSecs = UInt32(nodeInfoBroadcastSecs) dc.doubleTapAsButtonPress = doubleTapAsButtonPress + dc.disableTripleClick = !tripleClickAsAdHocPing dc.tzdef = tzdef dc.ledHeartbeatDisabled = !ledHeartbeatEnabled let adminMessageId = bleManager.saveDeviceConfig(config: dc, fromUser: connectedNode!.user!, toUser: node!.user!, adminIndex: connectedNode?.myInfo?.adminIndex ?? 0) @@ -254,20 +249,17 @@ struct DeviceConfig: View { } } } - .onChange(of: deviceRole) { - if $0 != node?.deviceConfig?.role ?? -1 { hasChanges = true } + .onChange(of: deviceRole) { oldRole, newRole in + if oldRole != newRole && newRole != node?.deviceConfig?.role ?? -1 { hasChanges = true } } - .onChange(of: serialEnabled) { - if $0 != node?.deviceConfig?.serialEnabled { hasChanges = true } + .onChange(of: buttonGPIO) { oldButtonGPIO, newButtonGPIO in + if oldButtonGPIO != newButtonGPIO && newButtonGPIO != node?.deviceConfig?.buttonGpio ?? -1 { hasChanges = true } } - .onChange(of: buttonGPIO) { newButtonGPIO in - if newButtonGPIO != node?.deviceConfig?.buttonGpio ?? -1 { hasChanges = true } + .onChange(of: buzzerGPIO) { oldBuzzerGPIO, newBuzzerGPIO in + if oldBuzzerGPIO != newBuzzerGPIO && newBuzzerGPIO != node?.deviceConfig?.buzzerGpio ?? -1 { hasChanges = true } } - .onChange(of: buzzerGPIO) { newBuzzerGPIO in - if newBuzzerGPIO != node?.deviceConfig?.buttonGpio ?? -1 { hasChanges = true } - } - .onChange(of: rebroadcastMode) { newRebroadcastMode in - if newRebroadcastMode != node?.deviceConfig?.rebroadcastMode ?? -1 { hasChanges = true } + .onChange(of: rebroadcastMode) { oldRebroadcastMode, newRebroadcastMode in + if oldRebroadcastMode != newRebroadcastMode && newRebroadcastMode != node?.deviceConfig?.rebroadcastMode ?? -1 { hasChanges = true } } .onChange(of: nodeInfoBroadcastSecs) { newNodeInfoBroadcastSecs in if newNodeInfoBroadcastSecs != node?.deviceConfig?.nodeInfoBroadcastSecs ?? -1 { hasChanges = true } @@ -276,7 +268,7 @@ struct DeviceConfig: View { if $0 != node?.deviceConfig?.doubleTapAsButtonPress { hasChanges = true } } .onChange(of: tripleClickAsAdHocPing) { - // if $0 != node?.deviceConfig?.tripleClickAsAdHocPing { hasChanges = true } + if $0 != node?.deviceConfig?.tripleClickAsAdHocPing { hasChanges = true } } .onChange(of: tzdef) { newTzdef in if newTzdef != node?.deviceConfig?.tzdef { hasChanges = true } @@ -289,7 +281,6 @@ struct DeviceConfig: View { } func setDeviceValues() { self.deviceRole = Int(node?.deviceConfig?.role ?? 0) - self.serialEnabled = (node?.deviceConfig?.serialEnabled ?? true) self.buttonGPIO = Int(node?.deviceConfig?.buttonGpio ?? 0) self.buzzerGPIO = Int(node?.deviceConfig?.buzzerGpio ?? 0) self.rebroadcastMode = Int(node?.deviceConfig?.rebroadcastMode ?? 0) @@ -298,6 +289,7 @@ struct DeviceConfig: View { nodeInfoBroadcastSecs = 3600 } self.doubleTapAsButtonPress = node?.deviceConfig?.doubleTapAsButtonPress ?? false + self.tripleClickAsAdHocPing = node?.deviceConfig?.tripleClickAsAdHocPing ?? false self.ledHeartbeatEnabled = node?.deviceConfig?.ledHeartbeatEnabled ?? true self.tzdef = node?.deviceConfig?.tzdef ?? "" if self.tzdef.isEmpty {