Files
NetMeterbusMaster/config.cpp
2015-05-11 22:36:58 +02:00

51 lines
1.1 KiB
C++

/*
* config.cpp
*
* Created on: 11.05.2015
* Author: wn
*/
#include <EEPROM.h>
#include <Streaming.h>
#include "config.h"
static bool __configIsValid = false;
void configInit() {
uint32_t magic;
configRead(CONFIG_MAGIC, 4, (char*)&magic);
__configIsValid = (magic != 0xdeadbeef);
if (! __configIsValid) {
Serial << "Initialize config" << endl;
uint32_t setMagic = 0xdeadbeef;
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);
}
void configRead(int addr, uint8_t len, char *buffer) {
for (uint8_t i = 0; i < len; i++) {
*(buffer + i) = EEPROM.read(addr + i);
//Serial << "Read " << *(buffer + i) << " from " << addr + i << endl;
}
}
void configWrite(int addr, uint8_t len, char *buffer) {
for (uint8_t i = 0; i < len; i++) {
//Serial << "Write " << _HEX(*(buffer + i)) << " to " << addr + i << endl;
EEPROM.write(addr + i, *(buffer + i));
}
}