12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #include "Storage.h"
- #include <EEPROM.h>
- #include <Arduino.h>
-
- template <class T> 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 <class T> 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);
- }
|