105 lines
1.8 KiB
C++
105 lines
1.8 KiB
C++
#include "state.h"
|
|
#include "config.h"
|
|
#include <EEPROM.h>
|
|
|
|
uint16_t ExposureTime = DefaultExposureTime;
|
|
uint8_t ExposureIntensity = DefaultExposureIntensity;
|
|
uint32_t ExposureTimerStart = 0;
|
|
BuzzerSetting Buzzer = BuzzerSetting::CompletedButtonStartup;
|
|
|
|
|
|
uint16_t GetExposureTime()
|
|
{
|
|
return ExposureTime;
|
|
}
|
|
|
|
|
|
void SetExposureTime(uint16_t value)
|
|
{
|
|
if (value < SmallStep)
|
|
ExposureTime = SmallStep;
|
|
else
|
|
ExposureTime = value;
|
|
}
|
|
|
|
|
|
uint8_t GetExposureIntensity()
|
|
{
|
|
return ExposureIntensity;
|
|
}
|
|
|
|
|
|
void SetExposureIntensity(uint8_t value)
|
|
{
|
|
if (value > 100)
|
|
ExposureIntensity = 100;
|
|
else if (value < IntensityStep)
|
|
ExposureIntensity = IntensityStep;
|
|
else
|
|
ExposureIntensity = value;
|
|
}
|
|
|
|
|
|
BuzzerSetting GetBuzzer()
|
|
{
|
|
return Buzzer;
|
|
}
|
|
|
|
|
|
void SetBuzzer(BuzzerSetting value)
|
|
{
|
|
Buzzer = value;
|
|
}
|
|
|
|
|
|
void LoadSettings()
|
|
{
|
|
uint16_t offset = 0;
|
|
EEPROM.get(offset, ExposureTime);
|
|
SetExposureTime(ExposureTime);
|
|
|
|
offset += sizeof(ExposureTime);
|
|
|
|
EEPROM.get(offset, ExposureIntensity);
|
|
SetExposureIntensity(ExposureIntensity);
|
|
|
|
offset += sizeof(ExposureIntensity);
|
|
|
|
EEPROM.get(offset, Buzzer);
|
|
if (Buzzer < BuzzerSetting::First || Buzzer > BuzzerSetting::Last)
|
|
Buzzer = BuzzerSetting::CompletedButtonStartup;
|
|
}
|
|
|
|
|
|
void SaveSettings()
|
|
{
|
|
uint16_t offset = 0;
|
|
EEPROM.put(offset, ExposureTime);
|
|
offset += sizeof(ExposureTime);
|
|
|
|
EEPROM.put(offset, ExposureIntensity);
|
|
offset += sizeof(ExposureIntensity);
|
|
|
|
EEPROM.put(offset, (uint8_t)Buzzer);
|
|
}
|
|
|
|
|
|
void StartExposureTimer(uint32_t currentTime)
|
|
{
|
|
ExposureTimerStart = currentTime;
|
|
}
|
|
|
|
|
|
void ResetExposureTimer()
|
|
{
|
|
ExposureTimerStart = 0;
|
|
}
|
|
|
|
|
|
uint16_t GetExposureTimeRemaining(uint32_t currentTime)
|
|
{
|
|
uint32_t elapsed = (currentTime - ExposureTimerStart);
|
|
uint32_t exposureTimeMs = ExposureTime * 1000;
|
|
|
|
return elapsed <= exposureTimeMs ? exposureTimeMs - elapsed : 0;
|
|
} |