From 538de5ea99c30868274e76bc2a50a328d6979271 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Tue, 8 Nov 2022 18:41:31 +0100 Subject: [PATCH] Increased range of multipliers --- src/AmsConfiguration.cpp | 25 +++++++++++++++++++++++++ src/AmsConfiguration.h | 20 +++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/AmsConfiguration.cpp b/src/AmsConfiguration.cpp index 13690168..07a14b63 100644 --- a/src/AmsConfiguration.cpp +++ b/src/AmsConfiguration.cpp @@ -675,6 +675,14 @@ bool AmsConfiguration::hasConfig() { configVersion = 0; return false; } + case 95: + configVersion = -1; // Prevent loop + if(relocateConfig95()) { + configVersion = 96; + } else { + configVersion = 0; + return false; + } case EEPROM_CHECK_SUM: return true; default: @@ -852,6 +860,23 @@ bool AmsConfiguration::relocateConfig94() { return ret; } +bool AmsConfiguration::relocateConfig95() { + MeterConfig meter; + MeterConfig95 meter95; + EEPROM.begin(EEPROM_SIZE); + EEPROM.get(CONFIG_METER_START, meter); + EEPROM.get(CONFIG_METER_START, meter95); + meter.wattageMultiplier = meter95.wattageMultiplier; + meter.voltageMultiplier = meter95.voltageMultiplier; + meter.amperageMultiplier = meter95.amperageMultiplier; + meter.accumulatedMultiplier = meter95.accumulatedMultiplier; + EEPROM.put(CONFIG_METER_START, meter); + EEPROM.put(EEPROM_CONFIG_ADDRESS, 96); + bool ret = EEPROM.commit(); + EEPROM.end(); + return ret; +} + bool AmsConfiguration::save() { EEPROM.begin(EEPROM_SIZE); EEPROM.put(EEPROM_CONFIG_ADDRESS, EEPROM_CHECK_SUM); diff --git a/src/AmsConfiguration.h b/src/AmsConfiguration.h index d5e09344..1413e45d 100644 --- a/src/AmsConfiguration.h +++ b/src/AmsConfiguration.h @@ -4,7 +4,7 @@ #include "Arduino.h" #define EEPROM_SIZE 1024*3 -#define EEPROM_CHECK_SUM 95 // Used to check if config is stored. Change if structure changes +#define EEPROM_CHECK_SUM 96 // Used to check if config is stored. Change if structure changes #define EEPROM_CONFIG_ADDRESS 0 #define EEPROM_TEMP_CONFIG_ADDRESS 2048 @@ -88,6 +88,23 @@ struct WebConfig { }; // 129 struct MeterConfig { + uint32_t baud; + uint8_t parity; + bool invert; + uint8_t distributionSystem; + uint8_t mainFuse; + uint8_t productionCapacity; + uint8_t encryptionKey[16]; + uint8_t authenticationKey[16]; + uint32_t wattageMultiplier; + uint32_t voltageMultiplier; + uint32_t amperageMultiplier; + uint32_t accumulatedMultiplier; + uint8_t source; + uint8_t parser; +}; // 50 + +struct MeterConfig95 { uint32_t baud; uint8_t parity; bool invert; @@ -270,6 +287,7 @@ class AmsConfiguration { bool relocateConfig92(); // 2.0.3 bool relocateConfig93(); // 2.1.0 bool relocateConfig94(); // 2.1.4 + bool relocateConfig95(); // 2.1.13 void saveToFs(); bool loadFromFs(uint8_t version);