From 6c590c6a9ccf882573187b0e44bfeefe24315fd1 Mon Sep 17 00:00:00 2001 From: Junior Martinez <67972863+jmartinez-silabs@users.noreply.github.com> Date: Fri, 19 Jul 2024 19:35:36 -0400 Subject: [PATCH] [ColorControl]Add checks for rate and step size parameters in commands handling (#33251) * Return invalid comamnd on MoveColor command with RateX and RateY both at 0. Add a test step to TC_CC_5.2 to validate the expected failure * Add checks for stepSize and bump Color control cluster revision in its xml * Update CC cluster revision from 6 to 7 in relevant zap files (with update_cluster_revisions.py) and regen * Restyled by prettier-yaml * update changes based on latest spec pr changes * Revert added test in TC_CC_5_2. spec pr change MoveColor with RateX and Y = 0 is valid * Add yaml certification test step for the added CC check * Restyled by whitespace * Restyled by prettier-yaml --------- Co-authored-by: Restyled.io --- .../all-clusters-app.matter | 4 +- .../all-clusters-common/all-clusters-app.zap | 2 +- .../all-clusters-minimal-app.matter | 4 +- .../all-clusters-minimal-app.zap | 2 +- ...de_colortemperaturelight_hbUnzYVeyn.matter | 4 +- ...tnode_colortemperaturelight_hbUnzYVeyn.zap | 2 +- ...tnode_extendedcolorlight_8lcaaYJVAa.matter | 4 +- ...rootnode_extendedcolorlight_8lcaaYJVAa.zap | 2 +- .../light-switch-app.matter | 2 +- .../light-switch-common/light-switch-app.zap | 2 +- .../light-switch-app/qpg/zap/switch.matter | 2 +- examples/light-switch-app/qpg/zap/switch.zap | 2 +- .../data_model/lighting-app-ethernet.matter | 4 +- .../data_model/lighting-app-ethernet.zap | 2 +- .../data_model/lighting-app-thread.matter | 4 +- .../data_model/lighting-app-thread.zap | 2 +- .../data_model/lighting-app-wifi.matter | 4 +- .../data_model/lighting-app-wifi.zap | 2 +- .../lighting-common/lighting-app.matter | 4 +- .../lighting-common/lighting-app.zap | 2 +- examples/lighting-app/qpg/zap/light.matter | 4 +- examples/lighting-app/qpg/zap/light.zap | 2 +- .../data_model/lighting-thread-app.matter | 4 +- .../silabs/data_model/lighting-thread-app.zap | 2 +- .../data_model/lighting-wifi-app.matter | 4 +- .../silabs/data_model/lighting-wifi-app.zap | 2 +- .../placeholder/linux/apps/app1/config.matter | 6 +- .../placeholder/linux/apps/app1/config.zap | 4 +- .../placeholder/linux/apps/app2/config.matter | 6 +- .../placeholder/linux/apps/app2/config.zap | 4 +- .../virtual-device-app.matter | 4 +- .../virtual-device-app.zap | 2 +- .../zap/tests/inputs/all-clusters-app.zap | 2 +- .../tools/zap/tests/inputs/lighting-app.zap | 2 +- .../app-templates/endpoint_config.h | 2 +- .../app-templates/endpoint_config.h | 2 +- .../color-control-server.cpp | 50 ++++++++++--- .../suites/certification/Test_TC_CC_3_2.yaml | 52 +++++++++++++ .../suites/certification/Test_TC_CC_3_3.yaml | 40 ++++++++++ .../suites/certification/Test_TC_CC_4_2.yaml | 36 +++++++++ .../suites/certification/Test_TC_CC_4_3.yaml | 40 ++++++++++ .../suites/certification/Test_TC_CC_5_2.yaml | 15 ++++ .../suites/certification/Test_TC_CC_5_3.yaml | 19 +++++ .../suites/certification/Test_TC_CC_6_2.yaml | 73 ++++++++++++++++++- .../suites/certification/Test_TC_CC_6_3.yaml | 56 +++++++++++++- .../suites/certification/Test_TC_CC_7_2.yaml | 52 +++++++++++++ .../suites/certification/Test_TC_CC_7_3.yaml | 40 ++++++++++ .../data-model/chip/color-control-cluster.xml | 2 +- .../data_model/controller-clusters.matter | 2 +- .../data_model/controller-clusters.zap | 2 +- 50 files changed, 510 insertions(+), 77 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 7fb6f3293e9813..982267365e0461 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -5441,7 +5441,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -8702,7 +8702,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; persist attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 6542e3db599cd9..a167e6967e006f 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -17871,7 +17871,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter index f7b4645e04f3a8..3fb137436de927 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter @@ -3986,7 +3986,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -6550,7 +6550,7 @@ endpoint 1 { ram attribute enhancedColorMode default = 0x01; ram attribute colorCapabilities default = 0x1F; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; } server cluster BallastConfiguration { diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap index a5e9bdd3164ee2..9d3f37c0ddfac7 100644 --- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap +++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap @@ -7303,7 +7303,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter index 66aa1eabaab2c8..e3adce52e61a9b 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter @@ -1404,7 +1404,7 @@ cluster GroupKeyManagement = 63 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2047,7 +2047,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x0010; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap index f3a2c9649d7356..9ba23a631ce0ea 100644 --- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap +++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap @@ -3925,7 +3925,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter index 4f81dc1f1a4580..b71ae1e3702d95 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter @@ -1505,7 +1505,7 @@ cluster FixedLabel = 64 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2159,7 +2159,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x1f; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap index b72d455419f8a7..33b0a66c990551 100644 --- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap +++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap @@ -4029,7 +4029,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index a0d6dfe2d3a781..99e5a0605bacae 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -2189,7 +2189,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap index c181f1ffae1120..7d427ce4aff612 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.zap +++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap @@ -5412,7 +5412,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/light-switch-app/qpg/zap/switch.matter b/examples/light-switch-app/qpg/zap/switch.matter index 677a40b0f5485a..6fcd23e645a36d 100644 --- a/examples/light-switch-app/qpg/zap/switch.matter +++ b/examples/light-switch-app/qpg/zap/switch.matter @@ -1986,7 +1986,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; diff --git a/examples/light-switch-app/qpg/zap/switch.zap b/examples/light-switch-app/qpg/zap/switch.zap index 362ef409bebaa6..fb58765d886eb6 100644 --- a/examples/light-switch-app/qpg/zap/switch.zap +++ b/examples/light-switch-app/qpg/zap/switch.zap @@ -5617,7 +5617,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter index e9fbd295547920..eed039c0d1438d 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter @@ -1544,7 +1544,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2223,7 +2223,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap index 23465bb5f517aa..1d2a7b4eb6e217 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.zap @@ -4300,7 +4300,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter index 312e1d244992eb..4689d097a1754d 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter @@ -1668,7 +1668,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2409,7 +2409,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap index a90a3218a93c5e..3d1047d5670f20 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.zap @@ -5276,7 +5276,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter index bd6285c06f472e..e2f807c4d67fc7 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter @@ -1579,7 +1579,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2272,7 +2272,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap index dea7862fc7ce5c..50c8f466811fd8 100644 --- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap +++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.zap @@ -4483,7 +4483,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index f0bfd80d7ddaed..1d9f7032cdbc8e 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -1999,7 +1999,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2857,7 +2857,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; persist attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap index 6489a395b38c7e..8e2e07da75bf3b 100644 --- a/examples/lighting-app/lighting-common/lighting-app.zap +++ b/examples/lighting-app/lighting-common/lighting-app.zap @@ -5813,7 +5813,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/qpg/zap/light.matter b/examples/lighting-app/qpg/zap/light.matter index f0624ae0a83f48..4427f28ef68dec 100644 --- a/examples/lighting-app/qpg/zap/light.matter +++ b/examples/lighting-app/qpg/zap/light.matter @@ -1607,7 +1607,7 @@ cluster UserLabel = 65 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2389,7 +2389,7 @@ endpoint 1 { callback attribute acceptedCommandList; callback attribute attributeList; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/qpg/zap/light.zap b/examples/lighting-app/qpg/zap/light.zap index 62d6453e7abf03..5c5de64deb413e 100644 --- a/examples/lighting-app/qpg/zap/light.zap +++ b/examples/lighting-app/qpg/zap/light.zap @@ -6002,7 +6002,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter index 6754f806b1a6b2..ceb1b06ae193aa 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter @@ -1703,7 +1703,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2440,7 +2440,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap index e759d83b2f2276..cd5526e56f98b2 100644 --- a/examples/lighting-app/silabs/data_model/lighting-thread-app.zap +++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.zap @@ -5316,7 +5316,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter index 37415d0d79f5cc..fd0cece2880604 100644 --- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter +++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter @@ -1994,7 +1994,7 @@ provisional cluster ScenesManagement = 98 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -2729,7 +2729,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; persist attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0x1F; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap b/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap index 84dd93b4bc6533..65e952e2081e9b 100644 --- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap +++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.zap @@ -5027,7 +5027,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index aa2f299a5c6093..7aa957149f2817 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -5555,7 +5555,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -5875,7 +5875,7 @@ cluster ColorControl = 768 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -9238,7 +9238,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap index 0f7dff994bd646..fce9740d66cb4a 100644 --- a/examples/placeholder/linux/apps/app1/config.zap +++ b/examples/placeholder/linux/apps/app1/config.zap @@ -13838,7 +13838,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -14866,7 +14866,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index 82c062fbef2dd3..17bafa22d19dc4 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -5512,7 +5512,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -5832,7 +5832,7 @@ cluster ColorControl = 768 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -9177,7 +9177,7 @@ endpoint 1 { ram attribute coupleColorTempToLevelMinMireds; ram attribute startUpColorTemperatureMireds; ram attribute featureMap default = 0; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveHue; diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap index 786ccbbea4ee8d..fda5713a01aaea 100644 --- a/examples/placeholder/linux/apps/app2/config.zap +++ b/examples/placeholder/linux/apps/app2/config.zap @@ -13598,7 +13598,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -14626,7 +14626,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter index 5fe6dd615c6d46..21e19e2640fbcb 100644 --- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter +++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter @@ -2850,7 +2850,7 @@ cluster WindowCovering = 258 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; @@ -3721,7 +3721,7 @@ endpoint 1 { callback attribute eventList; callback attribute attributeList; ram attribute featureMap default = 1; - ram attribute clusterRevision default = 6; + ram attribute clusterRevision default = 7; handle command MoveToHue; handle command MoveToSaturation; diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap b/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap index 93728b6f5fed7e..5fdeb3f38b60a8 100644 --- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap +++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.zap @@ -6581,7 +6581,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/scripts/tools/zap/tests/inputs/all-clusters-app.zap b/scripts/tools/zap/tests/inputs/all-clusters-app.zap index 825cf1cd6242c0..54ff4c19128539 100644 --- a/scripts/tools/zap/tests/inputs/all-clusters-app.zap +++ b/scripts/tools/zap/tests/inputs/all-clusters-app.zap @@ -17807,7 +17807,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/scripts/tools/zap/tests/inputs/lighting-app.zap b/scripts/tools/zap/tests/inputs/lighting-app.zap index 53b5cb008a201b..09022a1242b6eb 100644 --- a/scripts/tools/zap/tests/inputs/lighting-app.zap +++ b/scripts/tools/zap/tests/inputs/lighting-app.zap @@ -5813,7 +5813,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344, diff --git a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h index 69486db49cfb77..022fd6bbcdeea1 100644 --- a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h +++ b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h @@ -1505,7 +1505,7 @@ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* StartUpColorTemperatureMireds */ \ { ZAP_SIMPLE_DEFAULT(0x1F), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + { ZAP_SIMPLE_DEFAULT(7), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Ballast Configuration (server) */ \ { ZAP_SIMPLE_DEFAULT(0x01), 0x00000000, 1, ZAP_TYPE(INT8U), 0 }, /* PhysicalMinLevel */ \ diff --git a/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h b/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h index 3f42a085adb376..cb40fe69b2656a 100644 --- a/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h +++ b/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h @@ -532,7 +532,7 @@ ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | \ ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* StartUpColorTemperatureMireds */ \ { ZAP_SIMPLE_DEFAULT(0x1F), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \ - { ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ + { ZAP_SIMPLE_DEFAULT(7), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ { ZAP_EMPTY_DEFAULT(), 0x00000000, 1, ZAP_TYPE(BITMAP8), 0 }, /* Occupancy */ \ diff --git a/src/app/clusters/color-control-server/color-control-server.cpp b/src/app/clusters/color-control-server/color-control-server.cpp index 6c2dcb2353331c..55c8cd9e7a77de 100644 --- a/src/app/clusters/color-control-server/color-control-server.cpp +++ b/src/app/clusters/color-control-server/color-control-server.cpp @@ -491,7 +491,19 @@ bool ColorControlServer::stopMoveStepCommand(app::CommandHandler * commandObj, c EndpointId endpoint = commandPath.mEndpointId; Status status = Status::Success; - if (shouldExecuteIfOff(endpoint, optionsMask, optionsOverride)) + // StopMoveStep command has no effect on an active color loop. + // Fetch if it is supported and active. + uint8_t isColorLoopActive = 0; + if (ColorControlServer::Instance().HasFeature(endpoint, ColorControlServer::Feature::kColorLoop)) + { + // In case of get failure, isColorLoopActive will remain at the init value 0 (not active) + if (Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive) != Status::Success) + { + ChipLogError(Zcl, "Failed to retrieve ColorLoopActive value"); + } + } + + if (shouldExecuteIfOff(endpoint, optionsMask, optionsOverride) && !isColorLoopActive) { status = stopAllColorTransitions(endpoint); @@ -1165,7 +1177,7 @@ bool ColorControlServer::computeNewHueValue(ColorControlServer::ColorHueTransiti return true; } - // Check if we are in a color loop. If not, we are in a moveHue + // Check if we are in a color loop. If not, we are in a moveHue uint8_t isColorLoop = 0; Attributes::ColorLoopActive::Get(p->endpoint, &isColorLoop); @@ -1387,7 +1399,8 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // check moveMode before any operation is done on the transition states + // check moveMode and rate before any operation is done on the transition states + // rate value is ignored if the MoveMode is stop if (moveMode == HueMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != HueMoveMode::kStop)) { commandObj->AddStatus(commandPath, Status::InvalidCommand); @@ -1669,8 +1682,8 @@ bool ColorControlServer::stepHueCommand(app::CommandHandler * commandObj, const ColorHueTransitionState * colorHueTransitionState = getColorHueTransitionState(endpoint); VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // Confirm validity of the step mode received - if (stepMode == HueStepMode::kUnknownEnumValue) + // Confirm validity of the step mode and step size received + if (stepMode == HueStepMode::kUnknownEnumValue || stepSize == 0) { commandObj->AddStatus(commandPath, Status::InvalidCommand); return true; @@ -1756,7 +1769,8 @@ bool ColorControlServer::moveSaturationCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorSaturationTransitionState = getSaturationTransitionState(endpoint); VerifyOrExit(colorSaturationTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // check moveMode before any operation is done on the transition states + // check moveMode and rate before any operation is done on the transition states + // rate value is ignored if the MoveMode is stop if (moveMode == SaturationMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != SaturationMoveMode::kStop)) { commandObj->AddStatus(commandPath, Status::InvalidCommand); @@ -1867,8 +1881,8 @@ bool ColorControlServer::stepSaturationCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorSaturationTransitionState = getSaturationTransitionState(endpoint); VerifyOrExit(colorSaturationTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // Confirm validity of the step mode received - if (stepMode == SaturationStepMode::kUnknownEnumValue) + // Confirm validity of the step mode and step size received + if (stepMode == SaturationStepMode::kUnknownEnumValue || stepSize == 0) { commandObj->AddStatus(commandPath, Status::InvalidCommand); return true; @@ -1947,7 +1961,11 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons return true; } - Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive); + // In case of get failure, isColorLoopActive will remain at the init value 0 (not active) + if (Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive) != Status::Success) + { + ChipLogError(Zcl, "Failed to retrieve ColorLoopActive value"); + } deactiveColorLoop = updateFlags.Has(ColorLoopUpdateFlags::kUpdateAction) && (action == ColorLoopAction::kDeactivate); @@ -2277,6 +2295,7 @@ bool ColorControlServer::moveColorCommand(app::CommandHandler * commandObj, cons if (rateX == 0 && rateY == 0) { + // any current transition has been stopped. We are done. commandObj->AddStatus(commandPath, Status::Success); return true; } @@ -2364,6 +2383,12 @@ bool ColorControlServer::stepColorCommand(app::CommandHandler * commandObj, cons VerifyOrExit(colorXTransitionState != nullptr, status = Status::UnsupportedEndpoint); VerifyOrExit(colorYTransitionState != nullptr, status = Status::UnsupportedEndpoint); + if (stepX == 0 && stepY == 0) + { + commandObj->AddStatus(commandPath, Status::InvalidCommand); + return true; + } + if (!shouldExecuteIfOff(endpoint, optionsMask, optionsOverride)) { commandObj->AddStatus(commandPath, Status::Success); @@ -2693,7 +2718,8 @@ bool ColorControlServer::moveColorTempCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorTempTransitionState = getTempTransitionState(endpoint); VerifyOrExit(colorTempTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // check moveMode before any operation is done on the transition states + // check moveMode and rate before any operation is done on the transition states + // rate value is ignored if the MoveMode is stop if (moveMode == HueMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != HueMoveMode::kStop)) { commandObj->AddStatus(commandPath, Status::InvalidCommand); @@ -2815,8 +2841,8 @@ bool ColorControlServer::stepColorTempCommand(app::CommandHandler * commandObj, Color16uTransitionState * colorTempTransitionState = getTempTransitionState(endpoint); VerifyOrExit(colorTempTransitionState != nullptr, status = Status::UnsupportedEndpoint); - // Confirm validity of the step mode received - if (stepMode == HueStepMode::kUnknownEnumValue) + // Confirm validity of the step mode and step size received + if (stepMode == HueStepMode::kUnknownEnumValue || stepSize == 0) { commandObj->AddStatus(commandPath, Status::InvalidCommand); return true; diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml index 0c21f1a6ffcfb1..398ec48f36f4d2 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_2.yaml @@ -346,6 +346,58 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends MoveHue command to DUT with MoveMode=0x01 (up) and + Rate=0 (units/s)" + PICS: CC.S.F00 && CC.S.C01.Rsp + command: "MoveHue" + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends MoveHue command to DUT with MoveMode=0x03 (down) + and Rate=0 (units/s)" + PICS: CC.S.F00 && CC.S.C01.Rsp + command: "MoveHue" + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5c: TH sends MoveHue command to DUT with MoveMode=0x00 (stop) + and Rate=0 (units/s)" + PICS: CC.S.F00 && CC.S.C01.Rsp + command: "MoveHue" + arguments: + values: + - name: "MoveMode" + value: 0 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml index 53175d974716ea..91cdcbffe7d255 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_3_3.yaml @@ -287,6 +287,46 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends StepHue command to DUT with StepMode=0x01 (up), + StepSize=0" + PICS: CC.S.F00 && CC.S.C02.Rsp + command: "StepHue" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends StepHue command to DUT with StepMode=0x03 (down), + StepSize=0" + PICS: CC.S.F00 && CC.S.C02.Rsp + command: "StepHue" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml index 4b6630f18d4b92..0438a6e376f0ee 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_2.yaml @@ -357,6 +357,42 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 6a: TH sends MoveSaturation command to DUT with MoveMode=0x01 + (up) and Rate=0 (units/s)" + command: "MoveSaturation" + PICS: CC.S.F00 && CC.S.C04.Rsp + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6b: TH sends MoveSaturation command to DUT with MoveMode=0x03 + (down) and Rate=0 (units/s)" + command: "MoveSaturation" + PICS: CC.S.F00 && CC.S.C04.Rsp + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml index 8a6a953fb25af8..02826ab6bfef76 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_4_3.yaml @@ -327,6 +327,46 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends StepSaturation command to DUT with StepMode=0x01 + (up), StepSize=0" + PICS: CC.S.F00 && CC.S.C05.Rsp + command: "StepSaturation" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends StepSaturation command to DUT with StepMode=0x03 + (down), StepSize=0" + PICS: CC.S.F00 && CC.S.C05.Rsp + command: "StepSaturation" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml index 17da61ef9ccb57..0c88fdaa0cb906 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_2.yaml @@ -217,6 +217,21 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends MoveColor command to DUT with RateX=0 and RateY=0" + command: "MoveColor" + PICS: CC.S.F03 && CC.S.C08.Rsp + arguments: + values: + - name: "RateX" + value: 0 + - name: "RateY" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml index 4e8eba6ced993f..1f949647cefe4f 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_5_3.yaml @@ -189,6 +189,25 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends StepColor command to DUT with StepX = 0, StepY = 0" + command: "StepColor" + PICS: CC.S.F03 && CC.S.C09.Rsp + arguments: + values: + - name: "StepX" + value: 0 + - name: "StepY" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml index f5259372823048..2283df1214e72e 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_2.yaml @@ -364,8 +364,73 @@ tests: constraints: minValue: 0 maxValue: 3 + - label: - "Step 6a: TH sends MoveColorTemperature command to DUT with MoveMode = + "Step 6a: TH sends _MoveColorTemperature command_ to DUT with + MoveMode=0x01 (up) and Rate=0 (units/s)" + PICS: CC.S.F04 && CC.S.C4b.Rsp + command: MoveColorTemperature + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6b: TH sends _MoveColorTemperature command_ to DUT with + MoveMode=0x03 (down) and Rate=0 (units/s)" + PICS: CC.S.F04 && CC.S.C4b.Rsp + command: MoveColorTemperature + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6c: TH sends _MoveColorTemperature command_ to DUT with + MoveMode=0x00 (stop) and Rate=0 (units/s)" + PICS: CC.S.F04 && CC.S.C4b.Rsp + command: MoveColorTemperature + arguments: + values: + - name: "MoveMode" + value: 0 + - name: "Rate" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + + - label: + "Step 7a: TH sends MoveColorTemperature command to DUT with MoveMode = 0x03(down), Rate = 65535 (max value) with ColorTemperatureMinimumMireds of 0" PICS: CC.S.F04 && CC.S.C4b.Rsp @@ -394,7 +459,7 @@ tests: - name: "ms" value: 1000 - - label: "Step 6b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 7b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4b.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" @@ -405,7 +470,7 @@ tests: maxValue: ColorTempPhysicalMaxMiredsValue - label: - "Step 7a: TH sends MoveColorTemperature command to DUT with MoveMode = + "Step 8a: TH sends MoveColorTemperature command to DUT with MoveMode = 0x01(up), Rate = 65535 (max value) with ColorTemperatureMaximumMireds of 0" PICS: CC.S.F04 && CC.S.C4b.Rsp @@ -434,7 +499,7 @@ tests: - name: "ms" value: 1000 - - label: "Step 7b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 8b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4b.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml index 437ef78af33f27..5222aec2aa198c 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_6_3.yaml @@ -288,7 +288,55 @@ tests: maxValue: 3 - label: - "Step 5a: TH sends StepColorTemperature command to DUT with StepMode = + "Step 5a: TH sends StepColorTemperature command to DUT with + StepMode=0x01 (up), StepSize=0" + PICS: CC.S.F04 && CC.S.C4c.Rsp + command: "StepColorTemperature" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5ab TH sends StepColorTemperature command to DUT with + StepMode=0x03 (down), StepSize=0" + PICS: CC.S.F04 && CC.S.C4c.Rsp + command: "StepColorTemperature" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "ColorTemperatureMinimumMireds" + value: 0 + - name: "ColorTemperatureMaximumMireds" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 6a: TH sends StepColorTemperature command to DUT with StepMode = 0x01 (up), StepSize = ColorTempPhysicalMaxMireds and TransitionTime = 0 (instant)." PICS: CC.S.F04 && CC.S.C4c.Rsp @@ -319,7 +367,7 @@ tests: - name: "ms" value: 100 - - label: "Step 5b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 6b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4c.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" @@ -330,7 +378,7 @@ tests: maxValue: ColorTempPhysicalMaxMiredsValue - label: - "Step 6a: TH sends StepColorTemperature command to DUT with StepMode = + "Step 7a: TH sends StepColorTemperature command to DUT with StepMode = 0x03 (down), StepSize = ColorTempPhysicalMaxMireds and TransitionTime = 0 (instant)." PICS: CC.S.F04 && CC.S.C4c.Rsp @@ -361,7 +409,7 @@ tests: - name: "ms" value: 100 - - label: "Step 6b: TH reads ColorTemperatureMireds attribute from DUT." + - label: "Step 7b: TH reads ColorTemperatureMireds attribute from DUT." PICS: CC.S.F04 && CC.S.A0007 && CC.S.C4c.Rsp command: "readAttribute" attribute: "ColorTemperatureMireds" diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml index b9ded89a132a6f..18f1113d4928b6 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_2.yaml @@ -329,6 +329,58 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 5a: TH sends EnhancedMoveHue command to DUT with MoveMode=0x01 + (up) and Rate=0 (units/s)" + PICS: CC.S.F01 && CC.S.C41.Rsp" + command: "EnhancedMoveHue" + arguments: + values: + - name: "MoveMode" + value: 1 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5b: TH sends EnhancedMoveHue command to DUT with MoveMode=0x03 + (down) and Rate=0 (units/s)" + PICS: CC.S.F01 && CC.S.C41.Rsp + command: "EnhancedMoveHue" + arguments: + values: + - name: "MoveMode" + value: 3 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 5c: TH sends EnhancedMoveHue command to DUT with MoveMode=0x00 + (stop) and Rate=0 (units/s)" + PICS: CC.S.F01 && CC.S.C41.Rsp + command: "EnhancedMoveHue" + arguments: + values: + - name: "MoveMode" + value: 0 + - name: "Rate" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + - label: "Turn Off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml index 53bf4ba4883f3c..bfdfd26ed3ca1a 100644 --- a/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml +++ b/src/app/tests/suites/certification/Test_TC_CC_7_3.yaml @@ -299,6 +299,46 @@ tests: minValue: 0 maxValue: 3 + - label: + "Step 7a: TH sends EnhancedStepHue command to DUT with StepMode=0x01 + (up), StepSize=0" + PICS: CC.S.F01 && CC.S.C42.Rsp + command: "EnhancedStepHue" + arguments: + values: + - name: "StepMode" + value: 1 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + + - label: + "Step 7b: TH sends EnhancedStepHue command to DUT with StepMode=0x03 + (down), StepSize=0" + PICS: CC.S.F01 && CC.S.C42.Rsp + command: "EnhancedStepHue" + arguments: + values: + - name: "StepMode" + value: 3 + - name: "StepSize" + value: 0 + - name: "TransitionTime" + value: 0 + - name: "OptionsMask" + value: 0 + - name: "OptionsOverride" + value: 0 + response: + error: INVALID_COMMAND + - label: "Turn Off light that we turned on" PICS: OO.S.C00.Rsp cluster: "On/Off" diff --git a/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml index 749731069494f5..c97d4a59baa00b 100644 --- a/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml @@ -98,7 +98,7 @@ limitations under the License. true true - + diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index 48e39baf07f5dc..83e27d5aa82f02 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -7022,7 +7022,7 @@ cluster ThermostatUserInterfaceConfiguration = 516 { /** Attributes and commands for controlling the color properties of a color-capable light. */ cluster ColorControl = 768 { - revision 6; + revision 7; enum ColorLoopAction : enum8 { kDeactivate = 0; diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index ec4af6eeec7e0a..fc195b45a824b6 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -4120,7 +4120,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "6", + "defaultValue": "7", "reportable": 1, "minInterval": 0, "maxInterval": 65344,