From fdb0f6310e094df7f9250a8883dc22d42c62609f Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sun, 2 Oct 2022 09:19:03 -0700 Subject: [PATCH] Add reset nodedb to device config --- Meshtastic/Helpers/BLEManager.swift | 50 +++++++ Meshtastic/Views/Nodes/NodeDetail.swift | 122 +++++++++--------- .../Views/Settings/Config/DeviceConfig.swift | 71 ++++++---- 3 files changed, 160 insertions(+), 83 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index c8d6206a..425a9822 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -1155,6 +1155,56 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph return false } + public func sendNodeDBReset(destNum: Int64) -> Bool { + + var adminPacket = AdminMessage() + adminPacket.nodedbReset = 1 + + var meshPacket: MeshPacket = MeshPacket() + meshPacket.to = 0//UInt32(connectedPeripheral.num) + meshPacket.from = 0 //UInt32(connectedPeripheral.num) + meshPacket.id = UInt32.random(in: UInt32(UInt8.max).. Int64 { var adminPacket = AdminMessage() diff --git a/Meshtastic/Views/Nodes/NodeDetail.swift b/Meshtastic/Views/Nodes/NodeDetail.swift index 1e1951b7..43d9eb7e 100644 --- a/Meshtastic/Views/Nodes/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/NodeDetail.swift @@ -79,67 +79,6 @@ struct NodeDetail: View { } ScrollView { - - if self.bleManager.connectedPeripheral != nil && self.bleManager.connectedPeripheral.num == node.num && self.bleManager.connectedPeripheral.num == node.num { - - HStack { - - if hwModelString == "TBEAM" || hwModelString == "TECHO" || hwModelString.contains("4631") { - - Button(action: { - - showingShutdownConfirm = true - }) { - - Label("Power Off", systemImage: "power") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding() - .confirmationDialog( - "Are you sure?", - isPresented: $showingShutdownConfirm - ) { - Button("Shutdown Node?", role: .destructive) { - - if !bleManager.sendShutdown(destNum: node.num) { - - print("Shutdown Failed") - } - } - } - } - - Button(action: { - - showingRebootConfirm = true - - }) { - - Label("Reboot", systemImage: "arrow.triangle.2.circlepath") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding() - .confirmationDialog( - - "Are you sure?", - isPresented: $showingRebootConfirm - ) { - - Button("Reboot Node?", role: .destructive) { - - if !bleManager.sendReboot(destNum: node.num) { - - print("Reboot Failed") - } - } - } - } - .padding(5) - } Divider() @@ -432,6 +371,67 @@ struct NodeDetail: View { Divider() } } + + if self.bleManager.connectedPeripheral != nil && self.bleManager.connectedPeripheral.num == node.num && self.bleManager.connectedPeripheral.num == node.num { + + HStack { + + if hwModelString == "TBEAM" || hwModelString == "TECHO" || hwModelString.contains("4631") { + + Button(action: { + + showingShutdownConfirm = true + }) { + + Label("Power Off", systemImage: "power") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding() + .confirmationDialog( + "Are you sure?", + isPresented: $showingShutdownConfirm + ) { + Button("Shutdown Node?", role: .destructive) { + + if !bleManager.sendShutdown(destNum: node.num) { + + print("Shutdown Failed") + } + } + } + } + + Button(action: { + + showingRebootConfirm = true + + }) { + + Label("Reboot", systemImage: "arrow.triangle.2.circlepath") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding() + .confirmationDialog( + + "Are you sure?", + isPresented: $showingRebootConfirm + ) { + + Button("Reboot Node?", role: .destructive) { + + if !bleManager.sendReboot(destNum: node.num) { + + print("Reboot Failed") + } + } + } + } + .padding(5) + } } .offset( y:-40) .padding(.bottom, -40) diff --git a/Meshtastic/Views/Settings/Config/DeviceConfig.swift b/Meshtastic/Views/Settings/Config/DeviceConfig.swift index 2ac06bac..86911931 100644 --- a/Meshtastic/Views/Settings/Config/DeviceConfig.swift +++ b/Meshtastic/Views/Settings/Config/DeviceConfig.swift @@ -54,9 +54,58 @@ struct DeviceConfig: View { } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) } + } .disabled(bleManager.connectedPeripheral == nil) + HStack { + + Button("Reset NodeDB", role: .destructive) { + + isPresentingFactoryResetConfirm = true + } + .disabled(bleManager.connectedPeripheral == nil) + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding() + .confirmationDialog( + "Are you sure?", + isPresented: $isPresentingFactoryResetConfirm, + titleVisibility: .visible + ) { + Button("Erase the NodeDB from node and app?", role: .destructive) { + + if !bleManager.sendNodeDBReset(destNum: bleManager.connectedPeripheral.num) { + + print("NodeDB Reset Failed") + } + } + } + Button("Factory Reset", role: .destructive) { + + isPresentingFactoryResetConfirm = true + } + .disabled(bleManager.connectedPeripheral == nil) + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding() + .confirmationDialog( + "Are you sure?", + isPresented: $isPresentingFactoryResetConfirm, + titleVisibility: .visible + ) { + Button("Erase all device settings?", role: .destructive) { + + if !bleManager.sendFactoryReset(destNum: bleManager.connectedPeripheral.num) { + + print("Factory Reset Failed") + } + } + } + } + HStack { Button { @@ -102,28 +151,6 @@ struct DeviceConfig: View { Text("After device config saves the node will reboot.") } - - Button("Factory Reset", role: .destructive) { - - isPresentingFactoryResetConfirm = true - } - .disabled(bleManager.connectedPeripheral == nil) - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding() - .confirmationDialog( - "Are you sure?", - isPresented: $isPresentingFactoryResetConfirm - ) { - Button("Erase all device settings?", role: .destructive) { - - if !bleManager.sendFactoryReset(destNum: bleManager.connectedPeripheral.num) { - - print("Factory Reset Failed") - } - } - } } Spacer() }