From 177d5d4dc171f2badcf4f51cd9a30d4a44d3051b Mon Sep 17 00:00:00 2001 From: Candas1 Date: Sun, 3 Jan 2021 02:12:33 +0100 Subject: [PATCH] Fix --- Inc/util.h | 4 +++- Src/util.c | 23 ++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Inc/util.h b/Inc/util.h index b1f096d..9e9e2ff 100644 --- a/Inc/util.h +++ b/Inc/util.h @@ -149,7 +149,9 @@ uint8_t initValue(uint8_t index); uint32_t getValue(uint8_t index); uint8_t incrValue(uint8_t index); uint8_t saveValue(uint8_t index); -void dumpValues(); +void saveAllParams(); +void dumpParamValues(); +void dumpParameters(); typedef struct parameter_entry_struct parameter_entry; struct parameter_entry_struct { diff --git a/Src/util.c b/Src/util.c index 07374c5..6cf2220 100644 --- a/Src/util.c +++ b/Src/util.c @@ -262,7 +262,7 @@ parameter_entry params[] = { uint8_t setParam(uint8_t index, int32_t newValue) { // Only Parameters can be set - if (params[index].parameter_type == VARIABLE) return 1; + if (params[index].parameter_type == VARIABLE) return 0; int32_t value = newValue; // check mean and max before conversion to internal values @@ -310,6 +310,8 @@ uint8_t setParam(uint8_t index, int32_t newValue) { } uint8_t initParam(uint8_t index) { + // Only Parameters can be initialized + if (params[index].parameter_type == VARIABLE) return 0; return setParam(index,(int32_t) params[index].init); } @@ -362,6 +364,9 @@ void dumpParameters(){ } uint8_t incrParam(uint8_t index) { + // Only Parameters can be set + if (params[index].parameter_type == VARIABLE) return 0; + uint32_t value = getParam(index); if (value < params[index].max){ return setParam(index,value + 1); @@ -371,16 +376,28 @@ uint8_t incrParam(uint8_t index) { } uint8_t saveParam(uint8_t index) { - uint32_t value = getValue(index); + // Only Parameters can be saved to EEPROM + if (params[index].parameter_type == VARIABLE) return 0; + if (params[index].addr){ HAL_FLASH_Unlock(); - EE_WriteVariable(VirtAddVarTab[params[index].addr] , (uint16_t)value); + EE_WriteVariable(VirtAddVarTab[params[index].addr] , (uint16_t)getValue(index)); HAL_FLASH_Lock(); return 1; } return 0; } +void saveAllParams() { + HAL_FLASH_Unlock(); + for(int index=0;index