diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index decabcfc..d1908a5d 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1091,13 +1091,10 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph toRadio.packet = meshPacket let binaryData: Data = try! toRadio.serializedData() if connectedPeripheral!.peripheral.state == CBPeripheralState.connected { - - //let timer1 = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: false) { timer in self.connectedPeripheral.peripheral.writeValue(binaryData, for: self.TORADIO_characteristic, type: .withResponse) MeshLogger.log("💾 Saved a Channel for: \(String(self.connectedPeripheral.num))") //} - } print(chan) } @@ -1124,7 +1121,6 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph toRadio.packet = meshPacket let binaryData: Data = try! toRadio.serializedData() if connectedPeripheral!.peripheral.state == CBPeripheralState.connected { - // let timer1 = Timer.scheduledTimer(withTimeInterval: 2, repeats: false) { timer in self.connectedPeripheral.peripheral.writeValue(binaryData, for: self.TORADIO_characteristic, type: .withResponse) MeshLogger.log("💾 Saved a LoRaConfig for: \(String(self.connectedPeripheral.num))") diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 584e325d..87f53ad3 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -122,6 +122,7 @@ func localConfig (config: Config, context:NSManagedObjectContext, nodeNum: Int64 newDisplayConfig.screenOnSeconds = Int32(config.display.screenOnSecs) newDisplayConfig.screenCarouselInterval = Int32(config.display.autoScreenCarouselSecs) newDisplayConfig.compassNorthTop = config.display.compassNorthTop + newDisplayConfig.flipScreen = config.display.flipScreen fetchedNode[0].displayConfig = newDisplayConfig } else { @@ -130,6 +131,7 @@ func localConfig (config: Config, context:NSManagedObjectContext, nodeNum: Int64 fetchedNode[0].displayConfig?.screenOnSeconds = Int32(config.display.screenOnSecs) fetchedNode[0].displayConfig?.screenCarouselInterval = Int32(config.display.autoScreenCarouselSecs) fetchedNode[0].displayConfig?.compassNorthTop = config.display.compassNorthTop + fetchedNode[0].displayConfig?.flipScreen = config.display.flipScreen } do { diff --git a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModel.xcdatamodel/contents b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModel.xcdatamodel/contents index 71ff5a04..335db518 100644 --- a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModel.xcdatamodel/contents +++ b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModel.xcdatamodel/contents @@ -42,6 +42,7 @@ + diff --git a/Meshtastic/Views/Settings/Config/DisplayConfig.swift b/Meshtastic/Views/Settings/Config/DisplayConfig.swift index edea736f..49c77a31 100644 --- a/Meshtastic/Views/Settings/Config/DisplayConfig.swift +++ b/Meshtastic/Views/Settings/Config/DisplayConfig.swift @@ -21,6 +21,7 @@ struct DisplayConfig: View { @State var screenCarouselInterval = 0 @State var gpsFormat = 0 @State var compassNorthTop = false + @State var flipScreen = false var body: some View { @@ -45,7 +46,6 @@ struct DisplayConfig: View { } } .pickerStyle(DefaultPickerStyle()) - Text("Automatically toggles to the next page on the screen like a carousel, based the specified interval.") .font(.caption) @@ -57,6 +57,14 @@ struct DisplayConfig: View { Text("The compass heading on the screen outside of the circle will always point north.") .font(.caption) + Toggle(isOn: $flipScreen) { + + Label("Flip Screen", systemImage: "pip.swap") + } + .toggleStyle(SwitchToggleStyle(tint: .accentColor)) + Text("Flip screen vertically") + .font(.caption) + } Section(header: Text("Format")) { Picker("GPS Format", selection: $gpsFormat ) { @@ -98,6 +106,7 @@ struct DisplayConfig: View { dc.screenOnSecs = UInt32(screenOnSeconds) dc.autoScreenCarouselSecs = UInt32(screenCarouselInterval) dc.compassNorthTop = compassNorthTop + dc.flipScreen = flipScreen let adminMessageId = bleManager.saveDisplayConfig(config: dc, fromUser: node!.user!, toUser: node!.user!) @@ -124,6 +133,7 @@ struct DisplayConfig: View { self.screenOnSeconds = Int(node?.displayConfig?.screenOnSeconds ?? 0) self.screenCarouselInterval = Int(node?.displayConfig?.screenCarouselInterval ?? 0) self.compassNorthTop = node?.displayConfig?.compassNorthTop ?? false + self.flipScreen = node?.displayConfig?.flipScreen ?? false self.hasChanges = false } .onChange(of: screenOnSeconds) { newScreenSecs in @@ -146,6 +156,11 @@ struct DisplayConfig: View { if newGpsFormat != node!.displayConfig!.gpsFormat { hasChanges = true } } } + .onChange(of: flipScreen) { newFlipScreen in + if node != nil && node!.displayConfig != nil { + if newFlipScreen != node!.displayConfig!.flipScreen { hasChanges = true } + } + } .navigationViewStyle(StackNavigationViewStyle()) } }