#include <stdint.h>
#include <stdbool.h>

#include <config.h>
#include <eeprom.h>
#include <logger.h>



t_configBlock defaultConfigBlock = {
    .configMagic = CONFIG_MAGIC,
    .deviceName = "MainsCnt",
    .macAddress = { 0x00, 0xA0, 0x57, 0x05, 0x3E, 0x0F },
    .filler = { 0 }
};



t_configBlock mainConfigBlock;



t_configBlock* getConfig() {
    return &mainConfigBlock;
}


void configInit() {
    coloredMsg(LOG_BLUE, "cfg ci Reading configuration block from eeprom");
    eepromReadConfigBlock(&mainConfigBlock);

    if (mainConfigBlock.configMagic != CONFIG_MAGIC) {
        coloredMsg(LOG_BLUE, "cfg ci Invalid configuration block read from eeprom");

        eepromWriteConfigBlock(&defaultConfigBlock);
        coloredMsg(LOG_BLUE, "cfg ci Default configuration block written to eeprom");

        coloredMsg(LOG_BLUE, "cfg ci Reading configuration block from eeprom again");
        eepromReadConfigBlock(&mainConfigBlock);
    }
    coloredMsg(LOG_BLUE, "cfg ci configMagic:         %lx", mainConfigBlock.configMagic);
    coloredMsg(LOG_BLUE, "cfg ci deviceName:          %s", mainConfigBlock.deviceName);
    coloredMsg(LOG_BLUE, "cfg ci MAC address:         %02x:%02x:%02x:%02x:%02x:%02x", mainConfigBlock.macAddress[0], 
                                                                                      mainConfigBlock.macAddress[1], 
                                                                                      mainConfigBlock.macAddress[2], 
                                                                                      mainConfigBlock.macAddress[3], 
                                                                                      mainConfigBlock.macAddress[4], 
                                                                                      mainConfigBlock.macAddress[5]);

}