Stairs/module/src/settings.cpp

58 lines
1.1 KiB
C++

/*
* Stairs lighting
* Copyright 2017 (c) Mark van Renswoude
*
* https://git.x2software.net/pub/Stairs
*/
#include "settings.h"
#include <EEPROM.h>
// First byte is 0xAA to recognize uninitialised EEPROM
const uint8_t EEPROMHeader = 0xAA;
const uint8_t EEPROMCurrentVersion = 1;
const uint8_t EEPROMAddressHeader = 0;
const uint8_t EEPROMAddressVersion = 1;
const uint8_t EEPROMAddressModuleIndex = 2;
void Settings::init()
{
if (EEPROM.read(EEPROMAddressHeader) != EEPROMHeader)
{
EEPROM.put(EEPROMAddressHeader, EEPROMHeader);
EEPROM.put(EEPROMAddressVersion, EEPROMCurrentVersion);
EEPROM.put(EEPROMAddressModuleIndex, mModuleIndex);
}
else
{
uint8_t version = EEPROM.read(EEPROMAddressVersion);
if (version >= 1)
{
mModuleIndex = EEPROM.read(EEPROMAddressModuleIndex);
}
}
}
bool Settings::hasModuleIndex()
{
return mModuleIndex != ModuleIndexUndefined;
}
uint8_t Settings::getModuleIndex(void)
{
return mModuleIndex;
}
void Settings::setModuleIndex(uint8_t index)
{
if (index == mModuleIndex)
return;
mModuleIndex = index;
EEPROM.put(EEPROMAddressModuleIndex, mModuleIndex);
}