From 8440f09fc8ddb54afdf76de8ae1613dd0975f1b0 Mon Sep 17 00:00:00 2001 From: fabik111 Date: Thu, 7 Aug 2025 16:57:19 +0200 Subject: [PATCH 1/2] add example for wiping out the network configuration --- .github/workflows/compile-examples.yml | 1 + .../DeleteConfiguration.ino | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 examples/utility/DeleteConfiguration/DeleteConfiguration.ino diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index e467e73..a3c40c7 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -35,6 +35,7 @@ jobs: - name: Arduino_KVStore SKETCH_PATHS: | - examples/NetworkConfiguratorDemo + - examples/utility/DeleteConfiguration SKETCHES_REPORTS_PATH: sketches-reports strategy: fail-fast: false diff --git a/examples/utility/DeleteConfiguration/DeleteConfiguration.ino b/examples/utility/DeleteConfiguration/DeleteConfiguration.ino new file mode 100644 index 0000000..3efc697 --- /dev/null +++ b/examples/utility/DeleteConfiguration/DeleteConfiguration.ino @@ -0,0 +1,54 @@ +/* + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. +*/ + +/* + * This sketch wipes out the stored network configuration + * using the NetworkConfigurator library. + * This sketch doesn't use the reconfiguration procedure. +*/ + +#include +#include +#include +#include +#include +#include + +KVStore kvstore; +BLEAgentClass BLEAgent; +SerialAgentClass SerialAgent; +GenericConnectionHandler conMan; +NetworkConfiguratorClass NetworkConfigurator(conMan); + +void setup() { + /* Initialize serial debug port and wait up to 5 seconds for port to open */ + Serial.begin(9600); + for(unsigned long const serialBeginTime = millis(); !Serial && (millis() - serialBeginTime <= 5000); ) { } + + /* Set the debug message level: + * - DBG_ERROR: Only show error messages + * - DBG_WARNING: Show warning and error messages + * - DBG_INFO: Show info, warning, and error messages + * - DBG_DEBUG: Show debug, info, warning, and error messages + * - DBG_VERBOSE: Show all messages + */ + setDebugMessageLevel(DBG_INFO); + + /* Set the KVStore */ + NetworkConfigurator.setStorage(kvstore); + /* Wipe out the network configuration */ + if (NetworkConfigurator.resetStoredConfiguration()) { + Serial.println("Network configuration reset successfully."); + } else { + Serial.println("Failed to reset network configuration."); + } + +} + +void loop() { +} From 300a38ef70523815a0f21bac0ae74bb97a0c5c66 Mon Sep 17 00:00:00 2001 From: fabik111 Date: Wed, 13 Aug 2025 10:53:14 +0200 Subject: [PATCH 2/2] add user confirmation --- .../DeleteConfiguration.ino | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/examples/utility/DeleteConfiguration/DeleteConfiguration.ino b/examples/utility/DeleteConfiguration/DeleteConfiguration.ino index 3efc697..8c1ac2d 100644 --- a/examples/utility/DeleteConfiguration/DeleteConfiguration.ino +++ b/examples/utility/DeleteConfiguration/DeleteConfiguration.ino @@ -25,10 +25,34 @@ SerialAgentClass SerialAgent; GenericConnectionHandler conMan; NetworkConfiguratorClass NetworkConfigurator(conMan); +bool waitResponse() { + bool confirmation = false; + bool proceed = false; + while (confirmation == false) { + if (Serial.available()) { + char choice = Serial.read(); + switch (choice) { + case 'y': + case 'Y': + confirmation = true; + proceed = true; + break; + case 'n': + case 'N': + confirmation = true; + proceed = false; + break; + default: + continue; + } + } + } + return proceed; +} + void setup() { /* Initialize serial debug port and wait up to 5 seconds for port to open */ Serial.begin(9600); - for(unsigned long const serialBeginTime = millis(); !Serial && (millis() - serialBeginTime <= 5000); ) { } /* Set the debug message level: * - DBG_ERROR: Only show error messages @@ -39,15 +63,24 @@ void setup() { */ setDebugMessageLevel(DBG_INFO); + while (!Serial); + /* Set the KVStore */ NetworkConfigurator.setStorage(kvstore); - /* Wipe out the network configuration */ - if (NetworkConfigurator.resetStoredConfiguration()) { - Serial.println("Network configuration reset successfully."); + + Serial.println("\nWARNING! Running the sketch the stored network configuration will be erased."); + Serial.println("Do you want to proceed? Y/[n]"); + + if (true == waitResponse()) { + /* Wipe out the network configuration */ + if (NetworkConfigurator.resetStoredConfiguration()) { + Serial.println("Network configuration reset successfully."); + } else { + Serial.println("Failed to reset network configuration."); + } } else { - Serial.println("Failed to reset network configuration."); + Serial.println("Aborted."); } - } void loop() {