NetMeterbusMaster/config.cpp

53 lines
1.2 KiB
C++
Raw Permalink Normal View History

2015-05-11 22:36:58 +02:00
/*
* config.cpp
*
* Created on: 11.05.2015
* Author: wn
*/
#include <EEPROM.h>
#include <Streaming.h>
#include "config.h"
static bool __configIsValid = false;
2015-05-29 22:38:24 +02:00
const uint32_t CONFIG_MAGIC_TOKEN = 0xAffe0003;
2015-05-11 22:36:58 +02:00
void configInit() {
uint32_t magic;
configRead(CONFIG_MAGIC, 4, (char*)&magic);
2015-05-29 22:38:24 +02:00
__configIsValid = (magic != CONFIG_MAGIC_TOKEN);
2015-05-11 22:36:58 +02:00
if (! __configIsValid) {
Serial << "Initialize config" << endl;
2015-05-29 22:38:24 +02:00
uint32_t setMagic = CONFIG_MAGIC_TOKEN;
2015-05-11 22:36:58 +02:00
configWrite(CONFIG_MAGIC, 4, (char*)&setMagic);
} else {
Serial << "Config valid" << endl;
}
}
bool configIsValid() {
return __configIsValid;
}
void configReset() {
Serial << "Reset config" << endl;
uint32_t setMagic = 0xa5a5a5a5;
configWrite(CONFIG_MAGIC, 4, (char*)&setMagic);
}
2015-06-10 21:07:58 +02:00
void configRead(int addr, uint16_t len, char *buffer) {
for (uint16_t i = 0; i < len; i++) {
2015-05-11 22:36:58 +02:00
*(buffer + i) = EEPROM.read(addr + i);
//Serial << "Read " << *(buffer + i) << " from " << addr + i << endl;
}
}
2015-06-10 21:07:58 +02:00
void configWrite(int addr, uint16_t len, char *buffer) {
for (uint16_t i = 0; i < len; i++) {
2015-05-11 22:36:58 +02:00
//Serial << "Write " << _HEX(*(buffer + i)) << " to " << addr + i << endl;
EEPROM.write(addr + i, *(buffer + i));
}
}