Merge pull request #1073 from mc-hamster/BLE

Erase NVS as part of factory reset & new triple click behavior
pull/1073/head
Jm Casler 2022-01-08 13:45:51 -08:00 zatwierdzone przez GitHub
commit bd3688d21d
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
5 zmienionych plików z 36 dodań i 4 usunięć

Wyświetl plik

@ -43,8 +43,8 @@ void esp32Setup()
nvs_stats_t nvs_stats;
auto res = nvs_get_stats(NULL, &nvs_stats);
assert(res == ESP_OK);
DEBUG_MSG("NVS: UsedEntries %d, FreeEntries %d, AllEntries %d\n", nvs_stats.used_entries, nvs_stats.free_entries,
nvs_stats.total_entries);
DEBUG_MSG("NVS: UsedEntries %d, FreeEntries %d, AllEntries %d, NameSpaces %d\n", nvs_stats.used_entries, nvs_stats.free_entries,
nvs_stats.total_entries, nvs_stats.namespace_count);
DEBUG_MSG("Setup Preferences in Flash Storage\n");

Wyświetl plik

@ -208,6 +208,7 @@ class ButtonThread : public OSThread
userButton.attachClick(userButtonPressed);
userButton.attachDuringLongPress(userButtonPressedLong);
userButton.attachDoubleClick(userButtonDoublePressed);
userButton.attachMultiClick(userButtonMultiPressed);
userButton.attachLongPressStart(userButtonPressedLongStart);
userButton.attachLongPressStop(userButtonPressedLongStop);
wakeOnIrq(BUTTON_PIN, FALLING);
@ -336,6 +337,14 @@ class ButtonThread : public OSThread
#endif
}
static void userButtonMultiPressed()
{
#ifndef NO_ESP32
clearNVS();
#endif
}
static void userButtonPressedLongStart()
{
DEBUG_MSG("Long press start!\n");

Wyświetl plik

@ -23,6 +23,7 @@
#include "mesh/http/WiFiAPClient.h"
#include "plugins/esp32/StoreForwardPlugin.h"
#include <Preferences.h>
#include <nvs_flash.h>
#endif
NodeDB nodeDB;
@ -86,6 +87,10 @@ bool NodeDB::resetRadioConfig()
if (radioConfig.preferences.factory_reset) {
DEBUG_MSG("Performing factory reset!\n");
installDefaultDeviceState();
#ifndef NO_ESP32
// This will erase what's in NVS including ssl keys, persistant variables and ble pairing
nvs_flash_erase();
#endif
didFactoryReset = true;
}

Wyświetl plik

@ -15,6 +15,7 @@
#ifndef NO_ESP32
#include "mesh/http/WiFiAPClient.h"
#include <nvs_flash.h>
#endif
static bool pinShowing;
@ -484,7 +485,24 @@ void disablePin()
doublepressed = millis();
}
// This should go somewhere else.
void clearNVS()
{
#ifndef NO_ESP32
// As soon as the LED flashing from double click is done, immediately do a tripple click to
// erase nvs memory.
if (doublepressed > (millis() - 2000)) {
DEBUG_MSG("Clearing NVS memory\n");
// This will erase ble pairings, ssl key and persistent preferences.
nvs_flash_erase();
DEBUG_MSG("Restarting...\n");
ESP.restart();
}
#endif
}
// This routine is called multiple times, once each time we come back from sleep
void reinitBluetooth()
@ -556,8 +574,7 @@ void setBluetoothEnable(bool on)
bluetoothOn = on;
if (on) {
if (! isWifiAvailable() )
{
if (!isWifiAvailable()) {
Serial.printf("Pre BT: %u heap size\n", ESP.getFreeHeap());
// ESP_ERROR_CHECK( heap_trace_start(HEAP_TRACE_LEAKS) );
reinitBluetooth();

Wyświetl plik

@ -15,6 +15,7 @@ void deinitBLE();
void loopBLE();
void reinitBluetooth();
void disablePin();
void clearNVS();
/**
* A helper function that implements simple read and write handling for a uint32_t