From 0787587cb455360de340ba01e88ad3374fad223e Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 5 Dec 2022 19:47:56 -0800 Subject: [PATCH] Add gpio settings to device config --- .../Views/Settings/Config/DeviceConfig.swift | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/Meshtastic/Views/Settings/Config/DeviceConfig.swift b/Meshtastic/Views/Settings/Config/DeviceConfig.swift index 49d51032..58be6096 100644 --- a/Meshtastic/Views/Settings/Config/DeviceConfig.swift +++ b/Meshtastic/Views/Settings/Config/DeviceConfig.swift @@ -19,7 +19,8 @@ struct DeviceConfig: View { @State var hasChanges = false @State var deviceRole = 0 - //@State var buzzerGPIO = 12 + @State var buzzerGPIO = 0 + @State var buttonGPIO = 0 @State var serialEnabled = true @State var debugLogEnabled = false @@ -56,6 +57,30 @@ struct DeviceConfig: View { .toggleStyle(SwitchToggleStyle(tint: .accentColor)) } + Section(header: Text("GPIO")) { + + Picker("Button GPIO", selection: $buttonGPIO) { + ForEach(0..<40) { + if $0 == 0 { + Text("Unset") + } else { + Text("Pin \($0)") + } + } + } + .pickerStyle(DefaultPickerStyle()) + Picker("Buzzer GPIO", selection: $buzzerGPIO) { + ForEach(0..<40) { + if $0 == 0 { + Text("Unset") + } else { + Text("Pin \($0)") + } + } + } + .pickerStyle(DefaultPickerStyle()) + } + } .disabled(bleManager.connectedPeripheral == nil) @@ -136,7 +161,8 @@ struct DeviceConfig: View { dc.role = DeviceRoles(rawValue: deviceRole)!.protoEnumValue() dc.serialEnabled = serialEnabled dc.debugLogEnabled = debugLogEnabled - //dc.buzzerGpio = UInt32(buzzerGPIO) + dc.buttonGpio = UInt32(buttonGPIO) + dc.buzzerGpio = UInt32(buzzerGPIO) let adminMessageId = bleManager.saveDeviceConfig(config: dc, fromUser: node!.user!, toUser: node!.user!) @@ -171,6 +197,8 @@ struct DeviceConfig: View { self.deviceRole = Int(node?.deviceConfig?.role ?? 0) self.serialEnabled = (node?.deviceConfig?.serialEnabled ?? true) self.debugLogEnabled = node?.deviceConfig?.debugLogEnabled ?? false + self.buttonGPIO = Int(node?.deviceConfig?.buttonGpio ?? 0) + self.buzzerGPIO = Int(node?.deviceConfig?.buzzerGpio ?? 0) self.hasChanges = false } .onChange(of: deviceRole) { newRole in @@ -194,5 +222,19 @@ struct DeviceConfig: View { if newDebugLog != node!.deviceConfig!.debugLogEnabled { hasChanges = true } } } + .onChange(of: buttonGPIO) { newButtonGPIO in + + if node != nil && node!.deviceConfig != nil { + + if newButtonGPIO != node!.deviceConfig!.buttonGpio { hasChanges = true } + } + } + .onChange(of: buzzerGPIO) { newBuzzerGPIO in + + if node != nil && node!.deviceConfig != nil { + + if newBuzzerGPIO != node!.deviceConfig!.buttonGpio { hasChanges = true } + } + } } }