@@ -102,17 +102,20 @@ typedef struct ScheduleWeeklyMask {
102
102
ScheduleState day[7 ];
103
103
}ScheduleWeeklyMask;
104
104
105
+ typedef unsigned int ScheduleTimeType;
106
+ typedef unsigned int ScheduleConfigurationType;
107
+
105
108
/* *****************************************************************************
106
109
CLASS DECLARATION
107
110
******************************************************************************/
108
111
class Schedule {
109
112
public:
110
- unsigned int frm, to, len, msk;
111
- Schedule (unsigned int s, unsigned int e, unsigned int d, unsigned int m): frm(s), to(e), len(d), msk(m) {}
113
+ ScheduleTimeType frm, to, len, msk;
114
+ Schedule (ScheduleTimeType s, ScheduleTimeType e, ScheduleTimeType d, ScheduleConfigurationType m): frm(s), to(e), len(d), msk(m) {}
112
115
113
116
bool isActive () {
114
117
115
- unsigned int now = _schedule_time_service->getLocalTime ();
118
+ ScheduleTimeType now = _schedule_time_service->getLocalTime ();
116
119
117
120
if (checkTimeValid (now)) {
118
121
/* We have to wait RTC configuration and Timezone setting from the cloud */
@@ -121,9 +124,9 @@ class Schedule {
121
124
/* We are in the schedule range */
122
125
123
126
if (checkScheduleMask (now, msk)) {
124
-
127
+
125
128
/* We can assume now that the schedule is always repeating with fixed delta */
126
- unsigned int delta = getScheduleDelta (msk);
129
+ ScheduleTimeType delta = getScheduleDelta (msk);
127
130
if ( ( (std::max (now , frm) - std::min (now , frm)) % delta ) <= len ) {
128
131
return true ;
129
132
}
@@ -133,11 +136,11 @@ class Schedule {
133
136
return false ;
134
137
}
135
138
136
- static unsigned int createOneShotScheduleConfiguration () {
139
+ static ScheduleConfigurationType createOneShotScheduleConfiguration () {
137
140
return 0 ;
138
141
}
139
142
140
- static unsigned int createFixedDeltaScheduleConfiguration (ScheduleUnit unit, unsigned int delta) {
143
+ static ScheduleConfigurationType createFixedDeltaScheduleConfiguration (ScheduleUnit unit, unsigned int delta) {
141
144
int temp_unit = static_cast <int >(unit);
142
145
int temp_type = static_cast <int >(ScheduleType::FixedDelta);
143
146
unsigned int temp_delta = delta;
@@ -148,7 +151,7 @@ class Schedule {
148
151
return (temp_unit << SCHEDULE_UNIT_SHIFT) | (temp_type << SCHEDULE_TYPE_SHIFT) | temp_delta;
149
152
}
150
153
151
- static unsigned int createWeeklyScheduleConfiguration (ScheduleWeeklyMask weekMask) {
154
+ static ScheduleConfigurationType createWeeklyScheduleConfiguration (ScheduleWeeklyMask weekMask) {
152
155
unsigned int temp_week = 0 ;
153
156
int temp_type = static_cast <int >(ScheduleType::Weekly);
154
157
@@ -160,7 +163,7 @@ class Schedule {
160
163
return (temp_type << SCHEDULE_TYPE_SHIFT) | temp_week;
161
164
}
162
165
163
- static unsigned int createMonthlyScheduleConfiguration (int dayOfTheMonth) {
166
+ static ScheduleConfigurationType createMonthlyScheduleConfiguration (int dayOfTheMonth) {
164
167
int temp_day = dayOfTheMonth;
165
168
int temp_type = static_cast <int >(ScheduleType::Monthly);
166
169
@@ -174,7 +177,7 @@ class Schedule {
174
177
return (temp_type << SCHEDULE_TYPE_SHIFT) | temp_day;
175
178
}
176
179
177
- static unsigned int createYearlyScheduleConfiguration (ScheduleMonth month, int dayOfTheMonth) {
180
+ static ScheduleConfigurationType createYearlyScheduleConfiguration (ScheduleMonth month, int dayOfTheMonth) {
178
181
unsigned int temp_day = createMonthlyScheduleConfiguration (dayOfTheMonth);
179
182
int temp_month = static_cast <int >(month);
180
183
int temp_type = static_cast <int >(ScheduleType::Yearly);
@@ -200,75 +203,75 @@ class Schedule {
200
203
private:
201
204
TimeService * _schedule_time_service = ArduinoIoTCloudTimeService();
202
205
203
- ScheduleUnit getScheduleUnit (unsigned int msk) {
206
+ ScheduleUnit getScheduleUnit (ScheduleConfigurationType msk) {
204
207
return static_cast <ScheduleUnit>((msk & SCHEDULE_UNIT_MASK) >> SCHEDULE_UNIT_SHIFT);
205
208
}
206
209
207
- ScheduleType getScheduleType (unsigned int msk) {
210
+ ScheduleType getScheduleType (ScheduleConfigurationType msk) {
208
211
return static_cast <ScheduleType>((msk & SCHEDULE_TYPE_MASK) >> SCHEDULE_TYPE_SHIFT);
209
212
}
210
213
211
- unsigned int getScheduleRepetition (unsigned int msk) {
214
+ unsigned int getScheduleRepetition (ScheduleConfigurationType msk) {
212
215
return (msk & SCHEDULE_REP_MASK);
213
216
}
214
217
215
- unsigned int getScheduleWeekMask (unsigned int msk) {
218
+ unsigned int getScheduleWeekMask (ScheduleConfigurationType msk) {
216
219
return (msk & SCHEDULE_WEEK_MASK);
217
220
}
218
221
219
- unsigned int getScheduleDay (unsigned int msk) {
222
+ unsigned int getScheduleDay (ScheduleConfigurationType msk) {
220
223
return (msk & SCHEDULE_DAY_MASK);
221
224
}
222
225
223
- unsigned int getScheduleMonth (unsigned int msk) {
226
+ unsigned int getScheduleMonth (ScheduleConfigurationType msk) {
224
227
return ((msk & SCHEDULE_MONTH_MASK) >> SCHEDULE_MONTH_SHIFT);
225
228
}
226
229
227
- bool isScheduleOneShot (unsigned int msk) {
230
+ bool isScheduleOneShot (ScheduleConfigurationType msk) {
228
231
return (getScheduleType (msk) == ScheduleType::OneShot) ? true : false ;
229
232
}
230
233
231
- bool isScheduleFixed (unsigned int msk) {
234
+ bool isScheduleFixed (ScheduleConfigurationType msk) {
232
235
return (getScheduleType (msk) == ScheduleType::FixedDelta) ? true : false ;
233
236
}
234
237
235
- bool isScheduleWeekly (unsigned int msk) {
238
+ bool isScheduleWeekly (ScheduleConfigurationType msk) {
236
239
return (getScheduleType (msk) == ScheduleType::Weekly) ? true : false ;
237
240
}
238
241
239
- bool isScheduleMonthly (unsigned int msk) {
242
+ bool isScheduleMonthly (ScheduleConfigurationType msk) {
240
243
return (getScheduleType (msk) == ScheduleType::Monthly) ? true : false ;
241
244
}
242
245
243
- bool isScheduleYearly (unsigned int msk) {
246
+ bool isScheduleYearly (ScheduleConfigurationType msk) {
244
247
return (getScheduleType (msk) == ScheduleType::Yearly) ? true : false ;
245
248
}
246
249
247
- bool isScheduleInSeconds (unsigned int msk) {
250
+ bool isScheduleInSeconds (ScheduleConfigurationType msk) {
248
251
if (isScheduleFixed (msk)) {
249
252
return (getScheduleUnit (msk) == ScheduleUnit::Seconds) ? true : false ;
250
253
} else {
251
254
return false ;
252
255
}
253
256
}
254
257
255
- bool isScheduleInMinutes (unsigned int msk) {
258
+ bool isScheduleInMinutes (ScheduleConfigurationType msk) {
256
259
if (isScheduleFixed (msk)) {
257
260
return (getScheduleUnit (msk) == ScheduleUnit::Minutes) ? true : false ;
258
261
} else {
259
262
return false ;
260
263
}
261
264
}
262
265
263
- bool isScheduleInHours (unsigned int msk) {
266
+ bool isScheduleInHours (ScheduleConfigurationType msk) {
264
267
if (isScheduleFixed (msk)) {
265
268
return (getScheduleUnit (msk) == ScheduleUnit::Hours) ? true : false ;
266
269
} else {
267
270
return false ;
268
271
}
269
272
}
270
273
271
- bool isScheduleInDays (unsigned int msk) {
274
+ bool isScheduleInDays (ScheduleConfigurationType msk) {
272
275
if (isScheduleFixed (msk)) {
273
276
return (getScheduleUnit (msk) == ScheduleUnit::Days) ? true : false ;
274
277
} else {
@@ -297,11 +300,11 @@ class Schedule {
297
300
return ptm->tm_mon ;
298
301
}
299
302
300
- bool checkTimeValid (unsigned int now) {
303
+ bool checkTimeValid (ScheduleTimeType now) {
301
304
return (now != 0 );
302
305
}
303
306
304
- bool checkSchedulePeriod (unsigned int now, unsigned int frm, unsigned int to) {
307
+ bool checkSchedulePeriod (ScheduleTimeType now, ScheduleTimeType frm, ScheduleTimeType to) {
305
308
/* Check if current time is inside the schedule period. If 'to' is equal to
306
309
* 0 the schedule has no end.
307
310
*/
@@ -312,7 +315,7 @@ class Schedule {
312
315
}
313
316
}
314
317
315
- bool checkScheduleMask (unsigned int now, unsigned int msk) {
318
+ bool checkScheduleMask (ScheduleTimeType now, ScheduleConfigurationType msk) {
316
319
if (isScheduleFixed (msk) || isScheduleOneShot (msk)) {
317
320
return true ;
318
321
}
@@ -349,7 +352,7 @@ class Schedule {
349
352
return false ;
350
353
}
351
354
352
- unsigned int getScheduleDelta (unsigned int msk) {
355
+ ScheduleTimeType getScheduleDelta (ScheduleConfigurationType msk) {
353
356
if (isScheduleInSeconds (msk)) {
354
357
return SECONDS * getScheduleRepetition (msk);
355
358
}
0 commit comments