22 void onLoadConfig()
override;
25 void fillChannelConfig(
void *config,
27 uint8_t configType)
override;
28 void purgeConfig()
override;
29 bool supportsConfigType(uint8_t configType)
const override;
33 virtual const char *getDeviceLabel()
const = 0;
34 virtual const char *getScheduleStorageTag(
bool alt)
const = 0;
35 virtual bool validateSchedule(
39 virtual bool supportsAltSchedule()
const {
42 virtual bool hasAltScheduleStorage()
const {
45 virtual bool hasPersistentDefaultSchedule(
bool alt)
const {
49 virtual void onNativeScheduleLoaded() {
51 virtual void onNativeScheduleLoadFailed(
bool alt) {
54 virtual void onNativeScheduleApplied(
bool alt,
bool local,
bool changed) {
59 virtual void onNativeScheduleSaved(
bool alt,
bool notify) {
63 virtual void onNativeSchedulePurged() {
66 bool isConfigured()
const;
67 bool isConfigured(
bool alt)
const;
68 bool isPersisted(
bool alt)
const;
71 bool loadIfMissing =
true);
73 bool alt,
bool loadIfMissing =
true)
const;
75 bool ensureScheduleForUse(
bool alt);
76 bool updateSchedule(
bool alt,
78 bool saveSchedule(
bool alt,
bool notify =
false);
79 void clearSchedule(
bool alt);
80 void clearSchedules();
81 void unloadSchedule(
bool alt);
83 int calculateIndex(
enum DayOfWeek dayOfWeek,
int hour,
int quarter)
const;
93 int getCurrentQuarter()
const;
94 bool resolveCurrentProgram(
bool alt,
97 bool resolveCurrentProgram(
bool alt,
99 int *programId)
const;
100 bool resolveCurrentProgram(
bool alt,
107 int *programId)
override;
109 bool alt,
int programId, int32_t *occurrence,
110 uint32_t *elapsedSeconds)
override;
112 void touchCache(
bool active, uint32_t nowMs);
113 bool processCache(
bool active, uint32_t nowMs);
117 bool loadSchedule(
bool alt);
118 void eraseSchedule(
bool alt);
119 bool configTypeToAlt(uint8_t configType,
bool *alt)
const;
120 const char *getScheduleLabel(
bool alt)
const;
124 bool configured_[2] = {
false,
false};
125 bool persisted_[2] = {
false,
false};
126 bool loadAttempted_[2] = {
false,
false};
133 bool canActivate()
const override;
134 bool isActive()
const override;
135 bool switchToWeeklySchedule()
override;
136 void switchToManualMode()
override;
137 void restoreWeeklyScheduleMode(
bool enabled)
override;
138 bool processWeeklySchedule()
override;
139 bool isWeeklyScheduleConfigured()
const;
142 virtual void syncWeeklyScheduleMode(uint8_t mode) = 0;
143 virtual void scheduleWeeklyScheduleStateSave() = 0;
144 virtual bool applyWeeklyScheduleMode(uint8_t mode,
bool programChanged);
146 void onNativeScheduleLoaded()
override;
147 void onNativeScheduleLoadFailed(
bool alt)
override;
148 void onNativeScheduleApplied(
bool alt,
150 bool changed)
override;
151 void onNativeScheduleSaved(
bool alt,
bool notify)
override;
152 void onNativeSchedulePurged()
override;
153 bool applyResolvedWeeklyScheduleProgram(
156 bool programChanged)
override;
159 bool enabled_ =
false;