diff --git a/src/Kaleidoscope/EEPROM-Settings-Focus.cpp b/src/Kaleidoscope/EEPROM-Settings-Focus.cpp index d87943e7..40d201e2 100644 --- a/src/Kaleidoscope/EEPROM-Settings-Focus.cpp +++ b/src/Kaleidoscope/EEPROM-Settings-Focus.cpp @@ -60,6 +60,7 @@ namespace FocusHooks { bool eeprom (const char *command) { enum { + FREE, DUMP, UPLOAD, } subCommand; @@ -68,6 +69,8 @@ namespace FocusHooks { subCommand = DUMP; else if (strcmp_P (command, PSTR ("eeprom.upload")) == 0) subCommand = UPLOAD; + else if (strcmp_P (command, PSTR ("eeprom.free")) == 0) + subCommand = FREE; else return false; @@ -87,6 +90,9 @@ namespace FocusHooks { EEPROM.update (i, d); } break; + case FREE: + Serial.println (EEPROM.length () - EEPROMSettings.used ()); + break; } return true; diff --git a/src/Kaleidoscope/EEPROM-Settings-Focus.h b/src/Kaleidoscope/EEPROM-Settings-Focus.h index 54fc0f12..3e084e8b 100644 --- a/src/Kaleidoscope/EEPROM-Settings-Focus.h +++ b/src/Kaleidoscope/EEPROM-Settings-Focus.h @@ -31,5 +31,6 @@ namespace FocusHooks { "settings.crc") #define FOCUS_HOOK_EEPROM FOCUS_HOOK(FocusHooks::eeprom, \ + "eeprom.free\n" \ "eeprom.dump\n" \ "eeprom.upload") diff --git a/src/Kaleidoscope/EEPROM-Settings.cpp b/src/Kaleidoscope/EEPROM-Settings.cpp index 1c384596..5ef289f9 100644 --- a/src/Kaleidoscope/EEPROM-Settings.cpp +++ b/src/Kaleidoscope/EEPROM-Settings.cpp @@ -82,6 +82,11 @@ namespace KaleidoscopePlugins { _isValid = false; } + uint16_t + EEPROMSettings::used (void) { + return nextStart; + } + void EEPROMSettings::update (void) { settings.crc = CRC.crc; diff --git a/src/Kaleidoscope/EEPROM-Settings.h b/src/Kaleidoscope/EEPROM-Settings.h index 02cc7d54..3cd95e82 100644 --- a/src/Kaleidoscope/EEPROM-Settings.h +++ b/src/Kaleidoscope/EEPROM-Settings.h @@ -37,6 +37,7 @@ namespace KaleidoscopePlugins { static uint16_t requestSlice (uint16_t size); static void seal (void); static uint16_t crc (void); + static uint16_t used (void); private: static uint16_t nextStart;