Skip to content

Commit 1d54cba

Browse files
authored
fix: Fix command responses in the scenes cluster (#1241)
* Add missing parameter conditions to conditional response fields * Add missing parameters to enhancedAddRsp * Update tests for conditional and new parameters * Fix formatting issue
1 parent b54d1e8 commit 1d54cba

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

src/zspec/zcl/definition/cluster.ts

+25-9
Original file line numberDiff line numberDiff line change
@@ -331,9 +331,13 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
331331
{name: 'status', type: DataType.UINT8},
332332
{name: 'groupid', type: DataType.UINT16},
333333
{name: 'sceneid', type: DataType.UINT8},
334-
{name: 'transtime', type: DataType.UINT16},
335-
{name: 'scenename', type: DataType.CHAR_STR},
336-
{name: 'extensionfieldsets', type: BuffaloZclDataType.EXTENSION_FIELD_SETS},
334+
{name: 'transtime', type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
335+
{name: 'scenename', type: DataType.CHAR_STR, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
336+
{
337+
name: 'extensionfieldsets',
338+
type: BuffaloZclDataType.EXTENSION_FIELD_SETS,
339+
conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
340+
},
337341
],
338342
},
339343
removeRsp: {
@@ -365,23 +369,35 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
365369
{name: 'status', type: DataType.UINT8},
366370
{name: 'capacity', type: DataType.UINT8},
367371
{name: 'groupid', type: DataType.UINT16},
368-
{name: 'scenecount', type: DataType.UINT8},
369-
{name: 'scenelist', type: BuffaloZclDataType.LIST_UINT8},
372+
{name: 'scenecount', type: DataType.UINT8, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
373+
{
374+
name: 'scenelist',
375+
type: BuffaloZclDataType.LIST_UINT8,
376+
conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
377+
},
370378
],
371379
},
372380
enhancedAddRsp: {
373381
ID: 64,
374-
parameters: [],
382+
parameters: [
383+
{name: 'status', type: DataType.UINT8},
384+
{name: 'groupId', type: DataType.UINT16},
385+
{name: 'sceneId', type: DataType.UINT8},
386+
],
375387
},
376388
enhancedViewRsp: {
377389
ID: 65,
378390
parameters: [
379391
{name: 'status', type: DataType.UINT8},
380392
{name: 'groupid', type: DataType.UINT16},
381393
{name: 'sceneid', type: DataType.UINT8},
382-
{name: 'transtime', type: DataType.UINT16},
383-
{name: 'scenename', type: DataType.CHAR_STR},
384-
{name: 'extensionfieldsets', type: BuffaloZclDataType.EXTENSION_FIELD_SETS},
394+
{name: 'transtime', type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
395+
{name: 'scenename', type: DataType.CHAR_STR, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
396+
{
397+
name: 'extensionfieldsets',
398+
type: BuffaloZclDataType.EXTENSION_FIELD_SETS,
399+
conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
400+
},
385401
],
386402
},
387403
copyRsp: {

test/controller.test.ts

+17-9
Original file line numberDiff line numberDiff line change
@@ -3472,9 +3472,9 @@ describe('Controller', () => {
34723472
{name: 'status', type: 32},
34733473
{name: 'groupid', type: 33},
34743474
{name: 'sceneid', type: 32},
3475-
{name: 'transtime', type: 33},
3476-
{name: 'scenename', type: 66},
3477-
{name: 'extensionfieldsets', type: 1006},
3475+
{name: 'transtime', type: 33, conditions: [{type: 'statusEquals', value: 0}]},
3476+
{name: 'scenename', type: 66, conditions: [{type: 'statusEquals', value: 0}]},
3477+
{name: 'extensionfieldsets', type: 1006, conditions: [{type: 'statusEquals', value: 0}]},
34783478
],
34793479
name: 'viewRsp',
34803480
},
@@ -3510,21 +3510,29 @@ describe('Controller', () => {
35103510
{name: 'status', type: 32},
35113511
{name: 'capacity', type: 32},
35123512
{name: 'groupid', type: 33},
3513-
{name: 'scenecount', type: 32},
3514-
{name: 'scenelist', type: 1001},
3513+
{name: 'scenecount', type: 32, conditions: [{type: 'statusEquals', value: 0}]},
3514+
{name: 'scenelist', type: 1001, conditions: [{type: 'statusEquals', value: 0}]},
35153515
],
35163516
name: 'getSceneMembershipRsp',
35173517
},
3518-
enhancedAddRsp: {ID: 64, parameters: [], name: 'enhancedAddRsp'},
3518+
enhancedAddRsp: {
3519+
ID: 64,
3520+
parameters: [
3521+
{name: 'status', type: 32},
3522+
{name: 'groupId', type: 33},
3523+
{name: 'sceneId', type: 32},
3524+
],
3525+
name: 'enhancedAddRsp',
3526+
},
35193527
enhancedViewRsp: {
35203528
ID: 65,
35213529
parameters: [
35223530
{name: 'status', type: 32},
35233531
{name: 'groupid', type: 33},
35243532
{name: 'sceneid', type: 32},
3525-
{name: 'transtime', type: 33},
3526-
{name: 'scenename', type: 66},
3527-
{name: 'extensionfieldsets', type: 1006},
3533+
{name: 'transtime', type: 33, conditions: [{type: 'statusEquals', value: 0}]},
3534+
{name: 'scenename', type: 66, conditions: [{type: 'statusEquals', value: 0}]},
3535+
{name: 'extensionfieldsets', type: 1006, conditions: [{type: 'statusEquals', value: 0}]},
35283536
],
35293537
name: 'enhancedViewRsp',
35303538
},

0 commit comments

Comments
 (0)