#include "Storage.h" #include #include template int EEPROM_writeAnything(int ee, const T& value) { const byte* p = (const byte*)(const void*)&value; unsigned int i; for (i = 0; i < sizeof(value); i++) EEPROM.write(ee++, *p++); return i; } template int EEPROM_readAnything(int ee, T& value) { byte* p = (byte*)(void*)&value; unsigned int i; for (i = 0; i < sizeof(value); i++) *p++ = EEPROM.read(ee++); return i; } void Storage::load(AppCoreState& data) { uint8_t version; uint32_t index = 0; index += EEPROM_readAnything(index, version); if (version == 1) { index += EEPROM_readAnything(index, data.appState.water.setting); index += EEPROM_readAnything(index, data.appState.heater.setting); index += EEPROM_readAnything(index, data.appState.tempTrigger); } } void Storage::save(const AppCoreState& data) { uint32_t index = 0; index += EEPROM_writeAnything(index, (uint8_t)1); index += EEPROM_writeAnything(index, data.appState.water.setting); index += EEPROM_writeAnything(index, data.appState.heater.setting); index += EEPROM_writeAnything(index, data.appState.tempTrigger); }