diff --git a/data_src/index.html b/data_src/index.html index ad4562189f3b4ac5bc3c74b5c4577c5b83cef04f..c787ff29bb255683b4fffb3f883eb744f5479bd7 100644 --- a/data_src/index.html +++ b/data_src/index.html @@ -184,7 +184,7 @@ </div> <div class="col-6 text-end"> <button type="button" class="btn btn-sm btn-danger btnConfirm" data-action="reset" - data-title="Factory Reset" data-text="erase all highscores and settings? (ToDo)" disabled>Factory + data-title="Factory Reset" data-text="erase all highscores and settings?" disabled>Factory Reset</button> </div> </div> diff --git a/src/network.cpp b/src/network.cpp index cc9e0ce30e21b0542a4400d839f0855661a4de12..af216d8f3562cb76c5fb88f2e371a25fd4aaa8be 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -174,11 +174,16 @@ void onTelnetInput(String str) telnet.println("> disconnecting..."); telnet.disconnectClient(); } - else if (str == "reboot" || str == "reset") + else if (str == "reboot") { telnet.println("> rebooting..."); ESP.restart(); } + else if (str == "factory-reset") + { + telnet.println("> clearing settings and rebooting..."); + ESP.restart(); + } } void onEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len) @@ -259,6 +264,10 @@ void handleJson(uint8_t *data) { ESP.restart(); } + else if (doc["action"] == "reset") + { + clearSettings(); + } } } diff --git a/src/settings.cpp b/src/settings.cpp index 27b0f6eff99a0ad0a9b97299df4410895cba8dcf..8faba919c3fcd118a1c960637c118905cec60510 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -27,7 +27,17 @@ void saveSettings() { preferences.putUInt("color_r", colorR); preferences.putUInt("color_g", colorG); preferences.putUInt("color_b", colorB); - preferences.end(); + preferences.end(); +} + +void clearSettings() { + preferences.begin("settings", false); + preferences.clear(); + preferences.end(); + preferences.begin("highscores", false); + preferences.clear(); + preferences.end(); + ESP.restart(); } bool updateHighscores(int games, int ticks, int cells) { diff --git a/src/settings.h b/src/settings.h index b70038f8a8cdbf235c51012bf4d2f61187e83f0a..2190a76bba6fb4721d31edc8622db67b9f8783ff 100644 --- a/src/settings.h +++ b/src/settings.h @@ -19,6 +19,7 @@ typedef struct { void loadSettings(); void saveSettings(); +void clearSettings(); bool updateHighscores(int games, int ticks, int cells); Highscores getHighscores();