58 lines
1.1 KiB
C++
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);
|
|
} |