2014-03-04 18:48:45 +01:00
|
|
|
/*
|
|
|
|
* Config.cpp
|
|
|
|
*
|
|
|
|
* Created on: 04.03.2014
|
|
|
|
* Author: wn
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include <EEPROM.h>
|
|
|
|
#include "Config.h"
|
2014-03-08 13:23:09 +01:00
|
|
|
#include "Resources.h"
|
2014-03-04 18:48:45 +01:00
|
|
|
|
|
|
|
|
2014-03-05 18:57:08 +01:00
|
|
|
|
2014-03-04 19:08:19 +01:00
|
|
|
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]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-04 18:48:45 +01:00
|
|
|
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]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-08 13:23:09 +01:00
|
|
|
unsigned char Config::getUChar(int pos) {
|
|
|
|
u_uchar u;
|
|
|
|
for (unsigned int i = 0; i < sizeof(unsigned char); i++) {
|
|
|
|
u.e[i] = EEPROM.read(pos + i);
|
|
|
|
}
|
|
|
|
return u.c;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Config::setUChar(int pos, unsigned char value) {
|
|
|
|
u_uchar u;
|
|
|
|
u.c = value;
|
|
|
|
for (unsigned int i = 0; i < sizeof(unsigned char); i++) {
|
|
|
|
EEPROM.write(pos + i, u.e[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Config::initialize() {
|
2014-03-08 20:57:17 +01:00
|
|
|
if (! isInitialized()) {
|
2014-03-08 13:23:09 +01:00
|
|
|
Serial.println(getResource(CONFIG_INIT_KEY));
|
2014-03-08 20:57:17 +01:00
|
|
|
setFloat(THERMOMETER_ALPHA, 1.0);
|
|
|
|
setULong(THERMOMETER_PERIOD, 1000);
|
2014-03-08 13:23:09 +01:00
|
|
|
for (int i = 0; i < 4; i++) {
|
2014-03-08 20:57:17 +01:00
|
|
|
setFloat(THERMOMETER_CAL[i], 1.0);
|
2014-03-08 13:23:09 +01:00
|
|
|
}
|
2014-03-08 20:57:17 +01:00
|
|
|
setBool(THERMOMETER_DEBUG, false);
|
|
|
|
setBool(THERMOMETER_INFO, false);
|
2014-03-08 13:23:09 +01:00
|
|
|
|
|
|
|
|
2014-03-08 20:57:17 +01:00
|
|
|
setUChar(METERBUSCLIENT_ADDRESS, 0);
|
2014-03-09 00:25:48 +01:00
|
|
|
setBool(METERBUSCLIENT_DEBUG, false);
|
|
|
|
setBool(METERBUSCLIENT_INFO, false);
|
2014-03-08 13:23:09 +01:00
|
|
|
|
2014-03-08 20:57:17 +01:00
|
|
|
setMagic();
|
2014-03-08 13:23:09 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-03-04 18:48:45 +01:00
|
|
|
bool Config::isInitialized() {
|
|
|
|
unsigned int magic = getUInt(MAGIC);
|
|
|
|
return magic == MAGIC_TOKEN;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Config::setMagic() {
|
|
|
|
setUInt(MAGIC, MAGIC_TOKEN);
|
|
|
|
}
|
|
|
|
|
|
|
|
|