diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 7267df84..33ef4b6e 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1304,7 +1304,9 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph } - public func saveSerialModuleConfig(config: ModuleConfig.SerialConfig, destNum: Int64, wantResponse: Bool) -> Bool { + public func saveSerialModuleConfig(config: ModuleConfig.SerialConfig, fromUser: UserEntity, toUser: UserEntity, wantResponse: Bool) -> Int64 { + + var newMessageId: Int64 = 0 var adminPacket = AdminMessage() adminPacket.setModuleConfig.serial = config @@ -1330,12 +1332,93 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph let binaryData: Data = try! toRadio.serializedData() if connectedPeripheral!.peripheral.state == CBPeripheralState.connected { + + let newMessage = MessageEntity(context: context!) + newMessage.messageId = Int64(UInt32.random(in: UInt32(UInt8.max).. Int64 { + + var newMessageId: Int64 = 0 + + var adminPacket = AdminMessage() + adminPacket.setModuleConfig.telemetry = config + + var meshPacket: MeshPacket = MeshPacket() + meshPacket.to = UInt32(toUser.num) + meshPacket.from = 0 //UInt32(fromUser.num) + meshPacket.id = UInt32.random(in: UInt32(UInt8.max).. 0 { // Should show a saved successfully alert once I know that to be true // for now just disable the button after a successful save diff --git a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift index 90cea043..991bd0ff 100644 --- a/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/TelemetryConfig.swift @@ -332,7 +332,54 @@ struct TelemetryConfig: View { }) .onAppear { - self.bleManager.context = context + if self.initialLoad{ + + self.bleManager.context = context + + self.deviceUpdateInterval = Int(node.telemetryConfig?.deviceUpdateInterval ?? 0) + self.environmentUpdateInterval = Int(node.telemetryConfig?.environmentUpdateInterval ?? 0) + self.environmentMeasurementEnabled = node.telemetryConfig?.environmentMeasurementEnabled ?? false + self.environmentSensorType = Int(node.telemetryConfig?.environmentSensorType ?? 0) + self.environmentScreenEnabled = node.telemetryConfig?.environmentScreenEnabled ?? false + self.environmentDisplayFahrenheit = node.telemetryConfig?.environmentDisplayFahrenheit ?? false + self.environmentRecoveryInterval = Int(node.telemetryConfig?.environmentRecoveryInterval ?? 0) + self.environmentReadErrorCountThreshold = Int(node.telemetryConfig?.environmentReadErrorCountThreshold ?? 0) + + self.hasChanges = false + self.initialLoad = false + } + } + .onChange(of: deviceUpdateInterval) { newDeviceInterval in + + if newDeviceInterval != node.telemetryConfig!.deviceUpdateInterval { hasChanges = true } + } + .onChange(of: environmentUpdateInterval) { newEnvInterval in + + if newEnvInterval != node.telemetryConfig!.environmentUpdateInterval { hasChanges = true } + } + .onChange(of: environmentMeasurementEnabled) { newEnvEnabled in + + if newEnvEnabled != node.telemetryConfig!.environmentMeasurementEnabled { hasChanges = true } + } + .onChange(of: environmentSensorType) { newEnvSensorType in + + if newEnvSensorType != node.telemetryConfig!.environmentSensorType { hasChanges = true } + } + .onChange(of: environmentScreenEnabled) { newEnvScreenEnabled in + + if newEnvScreenEnabled != node.telemetryConfig!.environmentScreenEnabled { hasChanges = true } + } + .onChange(of: environmentDisplayFahrenheit) { newEnvDisplayF in + + if newEnvDisplayF != node.telemetryConfig!.environmentDisplayFahrenheit { hasChanges = true } + } + .onChange(of: environmentRecoveryInterval) { newEnvRecoveryInterval in + + if newEnvRecoveryInterval != node.telemetryConfig!.environmentRecoveryInterval { hasChanges = true } + } + .onChange(of: environmentReadErrorCountThreshold) { newEnvReadErrorCountThreshold in + + if newEnvReadErrorCountThreshold != node.telemetryConfig!.environmentReadErrorCountThreshold { hasChanges = true } } .navigationViewStyle(StackNavigationViewStyle()) }