Files
ModbusThermometer/Config.cpp
2014-11-17 19:47:28 +01:00

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;
}