Skip to content

Commit 210edd2

Browse files
committed
Use ScheduleTimeType and ScheduleConfigurationType instead of unsigned int
1 parent 67b28b5 commit 210edd2

File tree

2 files changed

+62
-59
lines changed

2 files changed

+62
-59
lines changed

examples/ArduinoIoTCloud-Schedule/ArduinoIoTCloud-Schedule.ino

+30-30
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ void setup() {
6363
*/
6464
void setupOneShotSchedule() {
6565

66-
unsigned int startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
67-
unsigned int until = startingFrom + ( DAYS * 1 );
68-
unsigned int activePeriod = MINUTES * 5;
66+
ScheduleTimeType startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
67+
ScheduleTimeType until = startingFrom + ( DAYS * 1 );
68+
ScheduleTimeType activePeriod = MINUTES * 5;
6969

7070
/* Warning: there is no cross check between until and activePeriod */
71-
unsigned int scheduleConfiguration = Schedule::createOneShotScheduleConfiguration();
71+
ScheduleConfigurationType scheduleConfiguration = Schedule::createOneShotScheduleConfiguration();
7272

7373
oneShot = Schedule(startingFrom, until, activePeriod, scheduleConfiguration);
7474
}
@@ -79,13 +79,13 @@ void setupOneShotSchedule() {
7979
*/
8080
void setupMinuteSchedule() {
8181

82-
unsigned int startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
83-
unsigned int until = startingFrom + ( DAYS * 1 );
84-
unsigned int activePeriod = SECONDS * 15;
82+
ScheduleTimeType startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
83+
ScheduleTimeType until = startingFrom + ( DAYS * 1 );
84+
ScheduleTimeType activePeriod = SECONDS * 15;
8585
unsigned int repetitionPeriod = 1;
8686

8787
/* Warning: there is no cross check between repetitionPeriod and activePeriod */
88-
unsigned int scheduleConfiguration = Schedule::createFixedDeltaScheduleConfiguration(ScheduleUnit::Minutes, repetitionPeriod);
88+
ScheduleConfigurationType scheduleConfiguration = Schedule::createFixedDeltaScheduleConfiguration(ScheduleUnit::Minutes, repetitionPeriod);
8989

9090
minute = Schedule(startingFrom, until, activePeriod, scheduleConfiguration);
9191
}
@@ -96,13 +96,13 @@ void setupMinuteSchedule() {
9696
*/
9797
void setupHourlySchedule() {
9898

99-
unsigned int startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
100-
unsigned int until = TimeService::getTimeFromString("2021 Nov 15 13:00:00");
101-
unsigned int activePeriod = MINUTES * 20;
99+
ScheduleTimeType startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
100+
ScheduleTimeType until = TimeService::getTimeFromString("2021 Nov 15 13:00:00");
101+
ScheduleTimeType activePeriod = MINUTES * 20;
102102
unsigned int repetitionPeriod = 1;
103103

104104
/* Warning: there is no cross check between repetitionPeriod and activePeriod */
105-
unsigned int scheduleConfiguration = Schedule::createFixedDeltaScheduleConfiguration(ScheduleUnit::Hours, repetitionPeriod);
105+
ScheduleConfigurationType scheduleConfiguration = Schedule::createFixedDeltaScheduleConfiguration(ScheduleUnit::Hours, repetitionPeriod);
106106

107107
hourly = Schedule(startingFrom, until, activePeriod, scheduleConfiguration);
108108
}
@@ -113,13 +113,13 @@ void setupHourlySchedule() {
113113
*/
114114
void setupDailySchedule() {
115115

116-
unsigned int startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
117-
unsigned int until = TimeService::getTimeFromString("2021 Nov 15 13:00:00");
118-
unsigned int activePeriod = HOURS * 2;
116+
ScheduleTimeType startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
117+
ScheduleTimeType until = TimeService::getTimeFromString("2021 Nov 15 13:00:00");
118+
ScheduleTimeType activePeriod = HOURS * 2;
119119
unsigned int repetitionPeriod = 1;
120120

121121
/* Warning: there is no cross check between repetitionPeriod and activePeriod */
122-
unsigned int scheduleConfiguration = Schedule::createFixedDeltaScheduleConfiguration(ScheduleUnit::Days, repetitionPeriod);
122+
ScheduleConfigurationType scheduleConfiguration = Schedule::createFixedDeltaScheduleConfiguration(ScheduleUnit::Days, repetitionPeriod);
123123

124124
daily = Schedule(startingFrom, until, activePeriod, scheduleConfiguration);
125125
}
@@ -137,9 +137,9 @@ void setupDailySchedule() {
137137
* Saturday -> Inactive
138138
*/
139139
void setupWeeklySchedule() {
140-
unsigned int startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
141-
unsigned int until = startingFrom + ( DAYS * 30 );
142-
unsigned int executionPeriod = MINUTES * 3;
140+
ScheduleTimeType startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
141+
ScheduleTimeType until = startingFrom + ( DAYS * 30 );
142+
ScheduleTimeType executionPeriod = MINUTES * 3;
143143

144144
ScheduleWeeklyMask WeeklyMask = {
145145
ScheduleState::Inactive, /* Sunday */
@@ -151,7 +151,7 @@ void setupWeeklySchedule() {
151151
ScheduleState::Inactive, /* Saturday */
152152
};
153153

154-
unsigned int scheduleConfiguration = Schedule::createWeeklyScheduleConfiguration(WeeklyMask);
154+
ScheduleConfigurationType scheduleConfiguration = Schedule::createWeeklyScheduleConfiguration(WeeklyMask);
155155

156156
weekly = Schedule(startingFrom, until, executionPeriod, scheduleConfiguration);
157157
}
@@ -162,12 +162,12 @@ void setupWeeklySchedule() {
162162
*/
163163
void setupMonthlySchedule() {
164164

165-
unsigned int startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
166-
unsigned int until = TimeService::getTimeFromString("2021 Nov 15 13:00:00");
167-
unsigned int activePeriod = DAYS * 1;
168-
unsigned int dayOfMonth = 3;
165+
ScheduleTimeType startingFrom = TimeService::getTimeFromString("2021 Nov 01 17:00:00");
166+
ScheduleTimeType until = TimeService::getTimeFromString("2021 Nov 15 13:00:00");
167+
ScheduleTimeType activePeriod = DAYS * 1;
168+
int dayOfMonth = 3;
169169

170-
unsigned int scheduleConfiguration = Schedule::createMonthlyScheduleConfiguration(dayOfMonth);
170+
ScheduleConfigurationType scheduleConfiguration = Schedule::createMonthlyScheduleConfiguration(dayOfMonth);
171171

172172
monthly = Schedule(startingFrom, until, activePeriod, scheduleConfiguration);
173173
}
@@ -179,12 +179,12 @@ void setupMonthlySchedule() {
179179
*/
180180
void setupYearlySchedule() {
181181

182-
unsigned int startingFrom = TimeService::getTimeFromString("2021 Nov 06 17:00:00");
183-
unsigned int until = TimeService::getTimeFromString("2041 Nov 06 13:00:00");
184-
unsigned int activePeriod = DAYS * 2;
185-
unsigned int dayOfMonth = 6;
182+
ScheduleTimeType startingFrom = TimeService::getTimeFromString("2021 Nov 06 17:00:00");
183+
ScheduleTimeType until = TimeService::getTimeFromString("2041 Nov 06 13:00:00");
184+
ScheduleTimeType activePeriod = DAYS * 2;
185+
int dayOfMonth = 6;
186186

187-
unsigned int scheduleConfiguration = Schedule::createYearlyScheduleConfiguration(ScheduleMonth::Nov, dayOfMonth);
187+
ScheduleConfigurationType scheduleConfiguration = Schedule::createYearlyScheduleConfiguration(ScheduleMonth::Nov, dayOfMonth);
188188

189189
yearly = Schedule(startingFrom, until, activePeriod, scheduleConfiguration);
190190
}

src/property/types/CloudSchedule.h

+32-29
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,20 @@ typedef struct ScheduleWeeklyMask {
102102
ScheduleState day[7];
103103
}ScheduleWeeklyMask;
104104

105+
typedef unsigned int ScheduleTimeType;
106+
typedef unsigned int ScheduleConfigurationType;
107+
105108
/******************************************************************************
106109
CLASS DECLARATION
107110
******************************************************************************/
108111
class Schedule {
109112
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) {}
112115

113116
bool isActive() {
114117

115-
unsigned int now = _schedule_time_service->getLocalTime();
118+
ScheduleTimeType now = _schedule_time_service->getLocalTime();
116119

117120
if(checkTimeValid(now)) {
118121
/* We have to wait RTC configuration and Timezone setting from the cloud */
@@ -121,9 +124,9 @@ class Schedule {
121124
/* We are in the schedule range */
122125

123126
if(checkScheduleMask(now, msk)) {
124-
127+
125128
/* We can assume now that the schedule is always repeating with fixed delta */
126-
unsigned int delta = getScheduleDelta(msk);
129+
ScheduleTimeType delta = getScheduleDelta(msk);
127130
if ( ( (std::max(now , frm) - std::min(now , frm)) % delta ) <= len ) {
128131
return true;
129132
}
@@ -133,11 +136,11 @@ class Schedule {
133136
return false;
134137
}
135138

136-
static unsigned int createOneShotScheduleConfiguration() {
139+
static ScheduleConfigurationType createOneShotScheduleConfiguration() {
137140
return 0;
138141
}
139142

140-
static unsigned int createFixedDeltaScheduleConfiguration(ScheduleUnit unit, unsigned int delta) {
143+
static ScheduleConfigurationType createFixedDeltaScheduleConfiguration(ScheduleUnit unit, unsigned int delta) {
141144
int temp_unit = static_cast<int>(unit);
142145
int temp_type = static_cast<int>(ScheduleType::FixedDelta);
143146
unsigned int temp_delta = delta;
@@ -148,7 +151,7 @@ class Schedule {
148151
return (temp_unit << SCHEDULE_UNIT_SHIFT) | (temp_type << SCHEDULE_TYPE_SHIFT) | temp_delta;
149152
}
150153

151-
static unsigned int createWeeklyScheduleConfiguration(ScheduleWeeklyMask weekMask) {
154+
static ScheduleConfigurationType createWeeklyScheduleConfiguration(ScheduleWeeklyMask weekMask) {
152155
unsigned int temp_week = 0;
153156
int temp_type = static_cast<int>(ScheduleType::Weekly);
154157

@@ -160,7 +163,7 @@ class Schedule {
160163
return (temp_type << SCHEDULE_TYPE_SHIFT) | temp_week;
161164
}
162165

163-
static unsigned int createMonthlyScheduleConfiguration(int dayOfTheMonth) {
166+
static ScheduleConfigurationType createMonthlyScheduleConfiguration(int dayOfTheMonth) {
164167
int temp_day = dayOfTheMonth;
165168
int temp_type = static_cast<int>(ScheduleType::Monthly);
166169

@@ -174,7 +177,7 @@ class Schedule {
174177
return (temp_type << SCHEDULE_TYPE_SHIFT) | temp_day;
175178
}
176179

177-
static unsigned int createYearlyScheduleConfiguration(ScheduleMonth month, int dayOfTheMonth) {
180+
static ScheduleConfigurationType createYearlyScheduleConfiguration(ScheduleMonth month, int dayOfTheMonth) {
178181
unsigned int temp_day = createMonthlyScheduleConfiguration(dayOfTheMonth);
179182
int temp_month = static_cast<int>(month);
180183
int temp_type = static_cast<int>(ScheduleType::Yearly);
@@ -200,75 +203,75 @@ class Schedule {
200203
private:
201204
TimeService * _schedule_time_service = ArduinoIoTCloudTimeService();
202205

203-
ScheduleUnit getScheduleUnit(unsigned int msk) {
206+
ScheduleUnit getScheduleUnit(ScheduleConfigurationType msk) {
204207
return static_cast<ScheduleUnit>((msk & SCHEDULE_UNIT_MASK) >> SCHEDULE_UNIT_SHIFT);
205208
}
206209

207-
ScheduleType getScheduleType(unsigned int msk) {
210+
ScheduleType getScheduleType(ScheduleConfigurationType msk) {
208211
return static_cast<ScheduleType>((msk & SCHEDULE_TYPE_MASK) >> SCHEDULE_TYPE_SHIFT);
209212
}
210213

211-
unsigned int getScheduleRepetition(unsigned int msk) {
214+
unsigned int getScheduleRepetition(ScheduleConfigurationType msk) {
212215
return (msk & SCHEDULE_REP_MASK);
213216
}
214217

215-
unsigned int getScheduleWeekMask(unsigned int msk) {
218+
unsigned int getScheduleWeekMask(ScheduleConfigurationType msk) {
216219
return (msk & SCHEDULE_WEEK_MASK);
217220
}
218221

219-
unsigned int getScheduleDay(unsigned int msk) {
222+
unsigned int getScheduleDay(ScheduleConfigurationType msk) {
220223
return (msk & SCHEDULE_DAY_MASK);
221224
}
222225

223-
unsigned int getScheduleMonth(unsigned int msk) {
226+
unsigned int getScheduleMonth(ScheduleConfigurationType msk) {
224227
return ((msk & SCHEDULE_MONTH_MASK) >> SCHEDULE_MONTH_SHIFT);
225228
}
226229

227-
bool isScheduleOneShot(unsigned int msk) {
230+
bool isScheduleOneShot(ScheduleConfigurationType msk) {
228231
return (getScheduleType(msk) == ScheduleType::OneShot) ? true : false ;
229232
}
230233

231-
bool isScheduleFixed(unsigned int msk) {
234+
bool isScheduleFixed(ScheduleConfigurationType msk) {
232235
return (getScheduleType(msk) == ScheduleType::FixedDelta) ? true : false ;
233236
}
234237

235-
bool isScheduleWeekly(unsigned int msk) {
238+
bool isScheduleWeekly(ScheduleConfigurationType msk) {
236239
return (getScheduleType(msk) == ScheduleType::Weekly) ? true : false ;
237240
}
238241

239-
bool isScheduleMonthly(unsigned int msk) {
242+
bool isScheduleMonthly(ScheduleConfigurationType msk) {
240243
return (getScheduleType(msk) == ScheduleType::Monthly) ? true : false ;
241244
}
242245

243-
bool isScheduleYearly(unsigned int msk) {
246+
bool isScheduleYearly(ScheduleConfigurationType msk) {
244247
return (getScheduleType(msk) == ScheduleType::Yearly) ? true : false ;
245248
}
246249

247-
bool isScheduleInSeconds(unsigned int msk) {
250+
bool isScheduleInSeconds(ScheduleConfigurationType msk) {
248251
if(isScheduleFixed(msk)) {
249252
return (getScheduleUnit(msk) == ScheduleUnit::Seconds) ? true : false ;
250253
} else {
251254
return false;
252255
}
253256
}
254257

255-
bool isScheduleInMinutes(unsigned int msk) {
258+
bool isScheduleInMinutes(ScheduleConfigurationType msk) {
256259
if(isScheduleFixed(msk)) {
257260
return (getScheduleUnit(msk) == ScheduleUnit::Minutes) ? true : false ;
258261
} else {
259262
return false;
260263
}
261264
}
262265

263-
bool isScheduleInHours(unsigned int msk) {
266+
bool isScheduleInHours(ScheduleConfigurationType msk) {
264267
if(isScheduleFixed(msk)) {
265268
return (getScheduleUnit(msk) == ScheduleUnit::Hours) ? true : false ;
266269
} else {
267270
return false;
268271
}
269272
}
270273

271-
bool isScheduleInDays(unsigned int msk) {
274+
bool isScheduleInDays(ScheduleConfigurationType msk) {
272275
if(isScheduleFixed(msk)) {
273276
return (getScheduleUnit(msk) == ScheduleUnit::Days) ? true : false ;
274277
} else {
@@ -297,11 +300,11 @@ class Schedule {
297300
return ptm->tm_mon;
298301
}
299302

300-
bool checkTimeValid(unsigned int now) {
303+
bool checkTimeValid(ScheduleTimeType now) {
301304
return (now != 0);
302305
}
303306

304-
bool checkSchedulePeriod(unsigned int now, unsigned int frm, unsigned int to) {
307+
bool checkSchedulePeriod(ScheduleTimeType now, ScheduleTimeType frm, ScheduleTimeType to) {
305308
/* Check if current time is inside the schedule period. If 'to' is equal to
306309
* 0 the schedule has no end.
307310
*/
@@ -312,7 +315,7 @@ class Schedule {
312315
}
313316
}
314317

315-
bool checkScheduleMask(unsigned int now, unsigned int msk) {
318+
bool checkScheduleMask(ScheduleTimeType now, ScheduleConfigurationType msk) {
316319
if(isScheduleFixed(msk) || isScheduleOneShot(msk)) {
317320
return true;
318321
}
@@ -349,7 +352,7 @@ class Schedule {
349352
return false;
350353
}
351354

352-
unsigned int getScheduleDelta(unsigned int msk) {
355+
ScheduleTimeType getScheduleDelta(ScheduleConfigurationType msk) {
353356
if(isScheduleInSeconds(msk)) {
354357
return SECONDS * getScheduleRepetition(msk);
355358
}

0 commit comments

Comments
 (0)