Files
ThermometerPro/Config.cpp
2014-03-04 19:08:19 +01:00

95 lines
1.7 KiB
C++

/*
* Config.cpp
*
* Created on: 04.03.2014
* Author: wn
*/
#include <EEPROM.h>
#include "Config.h"
String ConfigInvalidateCmd::exec(String params) {
Config::setUInt(Config::MAGIC, 0);
return "done";
}
bool Config::getBool(int pos) {
u_bool u;
for (unsigned int i = 0; i < sizeof(bool); i++) {
u.e[i] = EEPROM.read(pos + i);
}
return u.b;
}
void Config::setBool(int pos, bool value) {
u_bool u;
u.b = value;
for (unsigned int i = 0; i < sizeof(bool); i++) {
EEPROM.write(pos + i, u.e[i]);
}
}
float Config::getFloat(int pos) {
u_float u;
for (unsigned int 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 (unsigned int i = 0; i < sizeof(float); i++) {
EEPROM.write(pos + i, u.e[i]);
}
}
unsigned int Config::getUInt(int pos) {
u_uint u;
for (unsigned int i = 0; i < sizeof(unsigned int); i++) {
u.e[i] = EEPROM.read(pos + i);
}
return u.i;
}
void Config::setUInt(int pos, unsigned int value) {
u_uint u;
u.i = value;
for (unsigned int i = 0; i < sizeof(unsigned int); i++) {
EEPROM.write(pos + i, u.e[i]);
}
}
unsigned long Config::getULong(int pos) {
u_ulong u;
for (unsigned int i = 0; i < sizeof(unsigned long); i++) {
u.e[i] = EEPROM.read(pos + i);
}
return u.l;
}
void Config::setULong(int pos, unsigned long value) {
u_ulong u;
u.l = value;
for (unsigned int i = 0; i < sizeof(unsigned long); i++) {
EEPROM.write(pos + i, u.e[i]);
}
}
bool Config::isInitialized() {
unsigned int magic = getUInt(MAGIC);
return magic == MAGIC_TOKEN;
}
void Config::setMagic() {
setUInt(MAGIC, MAGIC_TOKEN);
}