Stairs/src/settings/steps.cpp

65 lines
1.1 KiB
C++

/*
* Stairs
* Copyright 2017 (c) Mark van Renswoude
*
* https://git.x2software.net/pub/Stairs
*/
#include "steps.h"
#include <FS.h>
#include "../debug.h"
struct Header
{
uint8_t version;
uint8_t stepCount;
bool useCurve;
};
StepsSettings::StepsSettings()
{
for (uint8_t i = 0; i < MaxStepCount; i++)
mCurveShift[i] = 0;
}
void StepsSettings::read()
{
_dln("StepsSettings :: Loading step settings");
File f = SPIFFS.open(StepSettingsFile, "r");
if (!f)
return;
if (!f.available())
return;
Header header;
f.readBytes((char*)&header, sizeof(Header));
if (header.version != 1)
return;
mUseCurve = (header.useCurve == 1);
f.readBytes((char*)&mCurveShift, header.stepCount * sizeof(uint16_t));
f.close();
}
void StepsSettings::write()
{
_dln("StepsSettings :: Saving step settings");
File f = SPIFFS.open(StepSettingsFile, "w");
if (!f)
return;
Header header;
header.version = 1;
header.useCurve = mUseCurve;
header.stepCount = mCount;
f.write((uint8_t*)&header, sizeof(Header));
f.write((uint8_t*)&mCurveShift, header.stepCount * sizeof(uint16_t));
f.close();
}