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