Gbox 4.20
Grow box automation and monitoring - <a href='https://sites.google.com/site/growboxguy/'>https://sites.google.com/site/growboxguy/</a>
 
Loading...
Searching...
No Matches
Settings.cpp
Go to the documentation of this file.
1#include "Arduino.h"
2#include "Settings.h"
3#include "SerialLog.h"
4
9void saveSettings(Settings *ToSave)
10{
11 eeprom_update_block((const void *)ToSave, (void *)0, sizeof(Settings)); // update_block only writes the bytes that changed
12}
13
19Settings *loadSettings(bool ResetEEPROM)
20{
21 Settings *DefaultSettings = new Settings(); // This is where settings are stored, first it takes the sketch default settings defined in Settings.h
22 Settings EEPROMSettings; // temporary storage with "Settings" type
23 eeprom_read_block((void *)&EEPROMSettings, (void *)0, sizeof(Settings)); // Load EEPROM stored settings into EEPROMSettings
24 if (DefaultSettings->CompatibilityVersion != EEPROMSettings.CompatibilityVersion || ResetEEPROM)
25 { // Making sure the EEPROM loaded settings are compatible with the sketch
26 logToSerials(F("Updating EEPROM"), false, 0);
27 saveSettings(DefaultSettings); // overwrites EEPROM stored settings with defaults from this sketch
28 }
29 else
30 {
31 logToSerials(F("Loading EEPROM"), false, 0);
32 // DefaultSettings = EEPROMSettings; // overwrite sketch defaults with loaded settings
33 memcpy(DefaultSettings, &EEPROMSettings, sizeof(Settings));
34 }
35 logToSerials(F("Version"), false, 3);
36 logToSerials(DefaultSettings->CompatibilityVersion, true, 1);
37 return DefaultSettings;
38}
39
45{
46 loadSettings(true);
47 __asm__ __volatile__("jmp 0x0000"); //Restart sketch
48}
void logToSerials(const __FlashStringHelper *ToPrint, bool BreakLine, uint8_t Indent)
< Logging
Definition SerialLog.cpp:5
void restoreDefaults()
Load sketch default settings into EEPROM.
Definition Settings.cpp:45
void saveSettings(Settings *ToSave)
Store settings in EEPROM - Only updates changed bits.
Definition Settings.cpp:10
Settings * loadSettings(bool ResetEEPROM)
Load settings from EEPROM.
Definition Settings.cpp:20
uint8_t CompatibilityVersion
Should always be the last value stored.
Definition Settings.h:197