UVControl/src/state.cpp

71 lines
1.1 KiB
C++

#include "state.h"
#include "config.h"
#include <EEPROM.h>
uint32_t ExposureTime = DefaultExposureTime;
uint8_t ExposureIntensity = DefaultExposureIntensity;
uint32_t ExposureTimerStart = 0;
uint32_t GetExposureTime()
{
return ExposureTime;
}
void SetExposureTime(uint32_t value)
{
ExposureTime = value;
}
uint8_t GetExposureIntensity()
{
return ExposureIntensity;
}
void SetExposureIntensity(uint8_t value)
{
ExposureIntensity = (value <= 100) ? value : 100;
}
void LoadSettings()
{
uint16_t offset = 0;
EEPROM.get(offset, ExposureTime);
offset += sizeof(ExposureTime);
EEPROM.get(offset, ExposureIntensity);
}
void SaveSettings()
{
uint16_t offset = 0;
EEPROM.put(offset, ExposureTime);
offset += sizeof(ExposureTime);
EEPROM.put(offset, ExposureIntensity);
}
void StartExposureTimer(unsigned long currentTime)
{
SaveSettings();
ExposureTimerStart = currentTime;
}
void ResetExposureTimer()
{
ExposureTimerStart = 0;
}
uint32_t GetExposureTimeRemaining(unsigned long currentTime)
{
uint32_t elapsed = (currentTime - ExposureTimerStart);
return elapsed <= ExposureTime ? ExposureTime - elapsed : 0;
}