#include "state.h" #include "config.h" #include 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; }