@@ -95,7 +95,11 @@ CHIP_ERROR CalendarProviderInstance::LoadJson(Json::Value & root)
95
95
DataModel::Nullable<uint32_t > calendarID;
96
96
DataModel::Nullable<uint32_t > providerID;
97
97
DataModel::Nullable<uint32_t > eventID;
98
+ DataModel::Nullable<uint32_t > startDate;
98
99
Structs::PeakPeriodStruct::Type peak;
100
+ DataModel::Nullable<Structs::PeakPeriodStruct::Type> currentPeak;
101
+ DataModel::Nullable<Structs::PeakPeriodStruct::Type> nextPeak;
102
+
99
103
100
104
if (root.isMember (" Features" ))
101
105
{
@@ -155,11 +159,11 @@ CHIP_ERROR CalendarProviderInstance::LoadJson(Json::Value & root)
155
159
value = root.get (" StartDate" , Json::Value ());
156
160
if (value.isUInt () && value.asUInt () < static_cast <uint32_t >(-1 ))
157
161
{
158
- mStartDate .SetNonNull (value.asUInt ());
162
+ startDate .SetNonNull (value.asUInt ());
159
163
}
160
164
else
161
165
{
162
- mStartDate .SetNull ();
166
+ startDate .SetNull ();
163
167
}
164
168
}
165
169
@@ -172,7 +176,7 @@ CHIP_ERROR CalendarProviderInstance::LoadJson(Json::Value & root)
172
176
JsonToCalendarPeriodStructList (value, mCalendarPeriods );
173
177
}
174
178
}
175
- SetCalendarPeriod (mStartDate , mCalendarPeriods );
179
+ SetCalendarPeriod (startDate , mCalendarPeriods );
176
180
}
177
181
178
182
if (root.isMember (" SpecialDays" ))
@@ -194,11 +198,11 @@ CHIP_ERROR CalendarProviderInstance::LoadJson(Json::Value & root)
194
198
if (!value.empty ())
195
199
{
196
200
JsonToPeakPeriodStruct (value, peak);
197
- mCurrentPeak .SetNonNull (peak);
201
+ currentPeak .SetNonNull (peak);
198
202
}
199
203
else
200
204
{
201
- mCurrentPeak .SetNull ();
205
+ currentPeak .SetNull ();
202
206
}
203
207
}
204
208
@@ -208,15 +212,15 @@ CHIP_ERROR CalendarProviderInstance::LoadJson(Json::Value & root)
208
212
if (!value.empty ())
209
213
{
210
214
JsonToPeakPeriodStruct (value, peak);
211
- mNextPeak .SetNonNull (peak);
215
+ nextPeak .SetNonNull (peak);
212
216
}
213
217
else
214
218
{
215
- mNextPeak .SetNull ();
219
+ nextPeak .SetNull ();
216
220
}
217
221
}
218
222
219
- SetPeakPeriods (mCurrentPeak , mNextPeak );
223
+ SetPeakPeriods (currentPeak, nextPeak );
220
224
}
221
225
222
226
if (root.isMember (" EventID" ))
@@ -256,26 +260,27 @@ DataModel::Nullable<Structs::DayStruct::Type> CalendarProviderInstance::GetDay(u
256
260
257
261
ParceDay (date, year, month, dayOfMonth, dayOfWeek);
258
262
259
- for (auto & day : mSpecialDays )
263
+ for (auto & day : GetSpecialDays () )
260
264
{
261
265
if (day.date .HasValue ())
262
266
{
263
- dt = static_cast <uint32_t >(day.date .Value ( ) - (day.date .Value ( ) % kSecInOneDay ));
267
+ dt = static_cast <uint32_t >(day.date .ValueOr ( 0 ) - (day.date .ValueOr ( 0 ) % kSecInOneDay ));
264
268
if (dt == date)
265
269
{
266
270
return day;
267
271
}
268
272
}
269
273
}
270
274
271
- if (mStartDate .ValueOr (0 ) > date)
275
+ if (GetStartDate () .ValueOr (0 ) > date)
272
276
{
273
277
return result;
274
278
}
275
279
276
- for (auto & period : mCalendarPeriods )
280
+ for (auto & period : GetCalendarPeriods () )
277
281
{
278
- if (period.startDate .ValueOr (0 ) > date)
282
+ dt = static_cast <uint32_t >(period.startDate .ValueOr (0 ) - (period.startDate .ValueOr (0 ) % kSecInOneDay ));
283
+ if (dt > date)
279
284
{
280
285
break ;
281
286
}
@@ -294,7 +299,7 @@ DataModel::Nullable<Structs::DayStruct::Type> CalendarProviderInstance::GetDay(u
294
299
}
295
300
else // loop calendar
296
301
{
297
- uint32_t index = static_cast <uint32_t >((date - period. startDate . ValueOr ( 0 ) ) / kSecondsPerDay % period.days .size ());
302
+ uint32_t index = static_cast <uint32_t >((date - dt ) / kSecondsPerDay % period.days .size ());
298
303
result = period.days [index ];
299
304
}
300
305
}
@@ -356,7 +361,7 @@ void CalendarProviderInstance::JsonToPeakPeriodStruct(Json::Value & root, Struct
356
361
}
357
362
358
363
t = root.get (" PeakPeriod" , Json::Value ());
359
- if (!t.empty () && t.isUInt () && t.asUInt () < static_cast <uint16_t >(-1 ))
364
+ if (!t.empty () && t.isUInt () && t.asUInt () <= static_cast <uint16_t >(-1 ))
360
365
{
361
366
value.peakPeriod = static_cast <uint16_t >(t.asUInt ());
362
367
}
@@ -416,7 +421,7 @@ void CalendarProviderInstance::JsonToTransitionStructList(Json::Value & root,
416
421
Json::Value v = root[i];
417
422
418
423
Json::Value t = v.get (" TransitionTime" , Json::Value ());
419
- if (!t.empty () && t.isUInt () && t.asUInt () < static_cast <uint16_t >(-1 ))
424
+ if (!t.empty () && t.isUInt () && t.asUInt () <= static_cast <uint16_t >(-1 ))
420
425
{
421
426
value[i].transitionTime = static_cast <uint16_t >(t.asUInt ());
422
427
}
0 commit comments