/* * TimerManager.cpp * * Created on: 12.07.2026 * Author: FSmilari */ #include "TimerManager.h" #include "ConfigManager.h" TimerManager::TimerManager(ConfigManager &configManager) : configManager(configManager) { } TimerManager::~TimerManager() { } void TimerManager::onTimerIntervalChange(String timerIntervalName, const char *timerInterval) { TimeInterval interval; parseTimeInterval(timerInterval, interval); saveTimerInterval(timerIntervalName, interval.start, interval.end); } void TimerManager::saveTimerInterval(String timerIntervalName, uint32_t start, uint32_t end) { Config cfg = configManager.getConfig(); if (timerIntervalName.equals("timeInterval1")) { cfg.timeInterval1.start = start; cfg.timeInterval1.end = end; } else if (timerIntervalName.equals("timeInterval2")) { cfg.timeInterval2.start = start; cfg.timeInterval2.end = end; } configManager.saveConfig(cfg); } uint32_t TimerManager::timeToSeconds(uint8_t hour, uint8_t minute, uint8_t second) { return (uint32_t) hour * 3600UL + (uint32_t) minute * 60UL + second; } bool TimerManager::parseTimeInterval(const char *str, TimeInterval &interval) { unsigned int sh, sm, ss; unsigned int eh, em, es; if (sscanf(str, "%u:%u:%u - %u:%u:%u", &sh, &sm, &ss, &eh, &em, &es) != 6) { return false; } // Bereich prüfen if (sh > 23 || eh > 23 || sm > 59 || em > 59 || ss > 59 || es > 59) { return false; } interval.start = timeToSeconds(sh, sm, ss); interval.end = timeToSeconds(eh, em, es); return true; }