-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstorage.cpp
66 lines (53 loc) · 1.51 KB
/
storage.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "storage.h"
#include <EEPROM.h>
struct EEPROMSettings loadSettings() {
EEPROMSettings settings;
EEPROM.begin(sizeof(EEPROMSettings));
EEPROM.get(CONFIG_START, settings);
if (strcmp(settings.version, CONFIG_VERSION) == 0) {
if (settings.debug) {
CONSOLE.println(" > loaded settings data: ");
printSettingRaw(settings);
CONSOLE.println();
}
EEPROM.end();
return settings;
}
// settings not found, so try to write the defaults
EEPROMSettings newSettings;
CONSOLE.println(" > not found");
CONSOLE.println(" > writing default data");
storeSettings(newSettings); // defaults are defined in the structure definition
return newSettings;
}
void storeSettings(struct EEPROMSettings settingsIn) {
noInterrupts();
struct EEPROMSettings settings = settingsIn;
interrupts();
EEPROM.begin(sizeof(EEPROMSettings));
EEPROM.put(CONFIG_START, settings);
EEPROM.end();
if (settings.debug) {
CONSOLE.println(" > stored settings data: ");
printSettingRaw(settings);
CONSOLE.println();
}
}
void printSettingRaw(struct EEPROMSettings settings) {
for (unsigned int t = 0; t < sizeof(EEPROMSettings); t++) {
if ((char)(*((char*)&settings + t)) < 10) CONSOLE.print("0");
CONSOLE.print((char)(*((char*)&settings + t)), HEX);
if (t % 16 == 15) {
CONSOLE.println();
}
else {
CONSOLE.print(" ");
}
}
}
struct NVRAMState loadState() {
struct NVRAMState state;
return state;
}
void storeState(struct NVRAMState state) {
}