54 lines
979 B
C++
54 lines
979 B
C++
#include <EEPROM.h>
|
|
#include "Config.h"
|
|
|
|
|
|
float Config::getFloat(int pos) {
|
|
u_float u;
|
|
for (uint8_t i = 0; i < sizeof(float); i++) {
|
|
u.e[i] = EEPROM.read(pos + i);
|
|
}
|
|
return u.f;
|
|
}
|
|
|
|
void Config::setFloat(int pos, float value) {
|
|
u_float u;
|
|
u.f = value;
|
|
for (uint8_t i = 0; i < sizeof(float); i++) {
|
|
EEPROM.write(pos + i, u.e[i]);
|
|
}
|
|
}
|
|
|
|
uint32_t Config::getUInt32(int pos) {
|
|
u_uint32 u;
|
|
for (uint8_t i = 0; i < sizeof(uint32_t); i++) {
|
|
u.e[i] = EEPROM.read(pos + i);
|
|
}
|
|
return u.i;
|
|
}
|
|
|
|
void Config::setUInt32(int pos, uint32_t value) {
|
|
u_uint32 u;
|
|
u.i = value;
|
|
for (uint8_t i = 0; i < sizeof(uint32_t); i++) {
|
|
EEPROM.write(pos + i, u.e[i]);
|
|
}
|
|
}
|
|
|
|
bool Config::isInitialized() {
|
|
uint32_t magic = getUInt32(MAGIC);
|
|
return magic == MAGIC_TOKEN;
|
|
}
|
|
|
|
void Config::setMagic() {
|
|
setUInt32(MAGIC, MAGIC_TOKEN);
|
|
}
|
|
|
|
bool Config::initialize() {
|
|
bool res = false;
|
|
if (! isInitialized()) {
|
|
res = true;
|
|
setMagic();
|
|
}
|
|
return res;
|
|
}
|