diff --git a/src/hal/src/storage.c b/src/hal/src/storage.c index 222594d6e2..3ff3a571dc 100644 --- a/src/hal/src/storage.c +++ b/src/hal/src/storage.c @@ -54,6 +54,14 @@ #define KVE_PARTITION_START (1024) #define KVE_PARTITION_LENGTH (7*1024) +#define DEFAULT_DEFRAG_ON_STARTUP true + +#ifdef CONFIG_DEFRAG_STORAGE_ON_STARTUP +#define DEFRAG_ON_STARTUP CONFIG_DEFRAG_STORAGE_ON_STARTUP +#else +#define DEFRAG_ON_STARTUP DEFAULT_DEFRAG_ON_STARTUP +#endif + static SemaphoreHandle_t storageMutex; static size_t readEeprom(size_t address, void* data, size_t length) @@ -127,6 +135,9 @@ void storageInit() storageMutex = xSemaphoreCreateMutex(); isInit = true; + if (DEFRAG_ON_STARTUP) { + kveDefrag(&kve); + } } bool storageTest() diff --git a/src/modules/src/Kconfig b/src/modules/src/Kconfig index 13e039e9ee..bd3aecaa93 100644 --- a/src/modules/src/Kconfig +++ b/src/modules/src/Kconfig @@ -239,4 +239,12 @@ config PARAM_SILENT_UPDATES about parameter updates, so this option should be enabled if you know what you are doing. +config DEFRAG_STORAGE_ON_STARTUP + bool "Defrag_on_startup" + default y + help + This enables defragmentation of parameter storage memory everytime the + CPU is started. It increases startup time, depending on + fragmentation level. + endmenu