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