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
11{
12 eeprom_update_block((const void *)ToSave, (void *)0, sizeof(Settings)); // update_block only writes the bytes that changed
13}
14
20Settings *loadSettings(bool ResetEEPROM)
21{
22 Settings *DefaultSettings = new Settings(); // This is where settings are stored, first it takes the sketch default settings defined in Settings.h
23 Settings EEPROMSettings; // temporary storage with "Settings" type
24 eeprom_read_block((void *)&EEPROMSettings, (void *)0, sizeof(Settings)); // Load EEPROM stored settings into EEPROMSettings
25 if (DefaultSettings->CompatibilityVersion != EEPROMSettings.CompatibilityVersion || ResetEEPROM)
26 { // Making sure the EEPROM loaded settings are compatible with the sketch
27 logToSerials(F("Updating EEPROM"), false, 1);
28 saveSettings(DefaultSettings); // overwrites EEPROM stored settings with defaults from this sketch
29 }
30 else
31 {
32 logToSerials(F("Applying EEPROM settings"), false, 1);
33 // DefaultSettings = EEPROMSettings; // overwrite sketch defaults with loaded settings
34 memcpy(DefaultSettings, &EEPROMSettings, sizeof(Settings));
35 }
36 logToSerials(F("Version"), false, 3);
37 logToSerials(DefaultSettings->CompatibilityVersion, true, 1);
38 return DefaultSettings;
39}
40
46{
47 logToSerials(F("Forcing settings update at next restart"), true, 0);
48 loadSettings(true);
49 logToSerials(F("Reseting the sketch"), true, 1);
50 __asm__ __volatile__("jmp 0x0000");
51}
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