Skip to content

Commit a32136f

Browse files
Allow multiple days to be specified in DaysMask parameter of SetWeekdaySchedule command (project-chip#32424)
* Allow multiple days to be specified in DaysMask parameter of SetWeekdaySchedule command Fixes project-chip#32423 * Restyled by clang-format * Update CI yaml test for Schedules to allow for multiple day bits --------- Co-authored-by: Restyled.io <commits@restyled.io>
1 parent 74b151e commit a32136f

File tree

2 files changed

+7
-35
lines changed

2 files changed

+7
-35
lines changed

src/app/clusters/door-lock-server/door-lock-server.cpp

+3-10
Original file line numberDiff line numberDiff line change
@@ -1003,17 +1003,10 @@ void DoorLockServer::setWeekDayScheduleCommandHandler(chip::app::CommandHandler
10031003
return;
10041004
}
10051005

1006-
// appclusters, 5.2.4.14 - spec does not allow setting the schedule for multiple days in the bitmask
1007-
int setBitsInDaysMask = 0;
1008-
uint8_t rawDaysMask = daysMask.Raw();
1009-
for (size_t i = 0; i < sizeof(rawDaysMask) * 8; ++i)
1010-
{
1011-
setBitsInDaysMask += rawDaysMask & 0x1;
1012-
rawDaysMask = static_cast<uint8_t>(rawDaysMask >> 1);
1013-
}
1006+
uint8_t rawDaysMask = daysMask.Raw();
10141007

1015-
// TODO: Check that bits are within range
1016-
if (setBitsInDaysMask == 0 || setBitsInDaysMask > 1)
1008+
// Check that bits are within range
1009+
if ((0 == rawDaysMask) || (rawDaysMask & 0x80))
10171010
{
10181011
ChipLogProgress(Zcl,
10191012
"[SetWeekDaySchedule] Unable to add schedule - daysMask is out of range "

src/app/tests/suites/DL_Schedules.yaml

+4-25
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ tests:
215215
response:
216216
error: INVALID_COMMAND
217217

218-
- label: "Create Week Day schedule for Sunday and Monday"
218+
- label: "Create Week Day schedule with Invalid day"
219219
command: "SetWeekDaySchedule"
220220
arguments:
221221
values:
@@ -224,28 +224,7 @@ tests:
224224
- name: "UserIndex"
225225
value: 1
226226
- name: "DaysMask"
227-
value: 0x3 # (Sunday and Monday)
228-
- name: "StartHour"
229-
value: 15
230-
- name: "StartMinute"
231-
value: 16
232-
- name: "EndHour"
233-
value: 18
234-
- name: "EndMinute"
235-
value: 00
236-
response:
237-
error: INVALID_COMMAND
238-
239-
- label: "Create Week Day schedule for Sunday Wednesday and Saturday"
240-
command: "SetWeekDaySchedule"
241-
arguments:
242-
values:
243-
- name: "WeekDayIndex"
244-
value: 1
245-
- name: "UserIndex"
246-
value: 1
247-
- name: "DaysMask"
248-
value: 0x49 # (Sunday, Wednesday and Saturday)
227+
value: 0x80 # (Not a valid day between Sunday thru Saturday)
249228
- name: "StartHour"
250229
value: 15
251230
- name: "StartMinute"
@@ -1705,7 +1684,7 @@ tests:
17051684
- name: "UserIndex"
17061685
value: 2
17071686
- name: "DaysMask"
1708-
value: 0x40
1687+
value: 0x49 # (Sunday, Wednesday and Saturday)
17091688
- name: "StartHour"
17101689
value: 23
17111690
- name: "StartMinute"
@@ -1732,7 +1711,7 @@ tests:
17321711
- name: "Status"
17331712
value: 0x0
17341713
- name: "DaysMask"
1735-
value: 0x40
1714+
value: 0x49
17361715
- name: "StartHour"
17371716
value: 23
17381717
- name: "StartMinute"

0 commit comments

Comments
 (0)