Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5643,6 +5643,65 @@ provisional cluster BallastConfiguration = 769 {
readonly attribute int16u clusterRevision = 65533;
}

/** This cluster provides a means to activate and control dynamic lighting effects on a light. */
provisional cluster DynamicLighting = 773 {
revision 1;

enum EffectColorModeEnum : enum8 {
kLevel = 0;
kXY = 1 [spec_name = "XY"];
kXYAndLevel = 2;
kHS = 3 [spec_name = "HS"];
kHSAndLevel = 4;
kEHUE = 5 [spec_name = "EHUE"];
kEHUEAndLevel = 6;
}

enum EffectSourceEnum : enum8 {
kInternal = 0;
kSoundBased = 1;
}

struct EffectColorStruct {
nullable int8u level = 0;
nullable int16u x = 1;
nullable int16u y = 2;
nullable int8u hue = 3;
nullable int16u enhancedHue = 4;
nullable int8u saturation = 5;
}

struct EffectStruct {
int16u effectID = 0;
EffectSourceEnum source = 1;
char_string<32> label = 2;
int16u maxSpeed = 3;
int16u defaultSpeed = 4;
boolean supportsColorPalette = 5;
}

readonly attribute EffectStruct availableEffects[] = 0;
readonly attribute nullable int16u currentEffectID = 1;
attribute nullable int16u currentSpeed = 2;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute attrib_id attributeList[] = 65531;
readonly attribute bitmap32 featureMap = 65532;
readonly attribute int16u clusterRevision = 65533;

request struct StartEffectRequest {
int16u effectID = 0;
int16u speed = 1;
nullable EffectColorModeEnum colorMode = 2;
nullable EffectColorStruct colorPalette[] = 3;
}

/** This command will start the specified effect. */
command StartEffect(StartEffectRequest): DefaultSuccess = 0;
/** This command will stop the current effect. */
command StopEffect(): DefaultSuccess = 1;
}

/** Attributes and commands for configuring the measurement of illuminance, and reporting illuminance measurements. */
cluster IlluminanceMeasurement = 1024 {
revision 3;
Expand Down Expand Up @@ -8506,6 +8565,20 @@ endpoint 1 {
ram attribute clusterRevision default = 4;
}

server cluster DynamicLighting {
callback attribute availableEffects;
callback attribute currentEffectID;
callback attribute currentSpeed;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
callback attribute attributeList;
callback attribute featureMap;
callback attribute clusterRevision;

handle command StartEffect;
handle command StopEffect;
}

server cluster IlluminanceMeasurement {
callback attribute measuredValue;
ram attribute minMeasuredValue default = 0x01;
Expand Down
158 changes: 157 additions & 1 deletion examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
Original file line number Diff line number Diff line change
Expand Up @@ -16299,6 +16299,162 @@
}
]
},
{
"name": "Dynamic Lighting",
"code": 773,
"mfgCode": null,
"define": "DYNAMIC_LIGHTING_CLUSTER",
"side": "server",
"enabled": 1,
"commands": [
{
"name": "StartEffect",
"code": 0,
"mfgCode": null,
"source": "client",
"isIncoming": 1,
"isEnabled": 1
},
{
"name": "StopEffect",
"code": 1,
"mfgCode": null,
"source": "client",
"isIncoming": 1,
"isEnabled": 1
}
],
"attributes": [
{
"name": "AvailableEffects",
"code": 0,
"mfgCode": null,
"side": "server",
"type": "array",
"included": 1,
"storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": null,
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
"name": "CurrentEffectID",
"code": 1,
"mfgCode": null,
"side": "server",
"type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": null,
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
"name": "CurrentSpeed",
"code": 2,
"mfgCode": null,
"side": "server",
"type": "int16u",
"included": 1,
"storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": null,
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
},
{
"name": "GeneratedCommandList",
"code": 65528,
"mfgCode": null,
"side": "server",
"type": "array",
"included": 1,
"storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": null,
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
"name": "AcceptedCommandList",
"code": 65529,
"mfgCode": null,
"side": "server",
"type": "array",
"included": 1,
"storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": null,
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
"name": "AttributeList",
"code": 65531,
"mfgCode": null,
"side": "server",
"type": "array",
"included": 1,
"storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": null,
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
"name": "FeatureMap",
"code": 65532,
"mfgCode": null,
"side": "server",
"type": "bitmap32",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "0",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
"reportableChange": 0
},
{
"name": "ClusterRevision",
"code": 65533,
"mfgCode": null,
"side": "server",
"type": "int16u",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
"defaultValue": "1",
"reportable": 1,
"minInterval": 0,
"maxInterval": 65344,
"reportableChange": 0
}
]
},
{
"name": "Temperature Measurement",
"code": 1026,
Expand Down Expand Up @@ -24496,4 +24652,4 @@
"parentEndpointIdentifier": null
}
]
}
}
1 change: 1 addition & 0 deletions src/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ if (chip_build_tests) {
"${chip_root}/src/app/clusters/concentration-measurement-server/tests",
"${chip_root}/src/app/clusters/descriptor/tests",
"${chip_root}/src/app/clusters/device-energy-management-server/tests",
"${chip_root}/src/app/clusters/dynamic-lighting-server/tests",
"${chip_root}/src/app/clusters/electrical-energy-measurement-server/tests",
"${chip_root}/src/app/clusters/electrical-power-measurement-server/tests",
"${chip_root}/src/app/clusters/ethernet-network-diagnostics-server/tests",
Expand Down
1 change: 1 addition & 0 deletions src/app/clusters/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ source_set("clusters") {
"concentration-measurement-server",
"descriptor",
"device-energy-management-server",
"dynamic-lighting-server",
"fan-control-server",
"flow-measurement-server",
"general-commissioning-server",
Expand Down
30 changes: 30 additions & 0 deletions src/app/clusters/dynamic-lighting-server/BUILD.gn
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright (c) 2026 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("//build_overrides/build.gni")
import("//build_overrides/chip.gni")

source_set("dynamic-lighting-server") {
sources = [
"DynamicLightingCluster.cpp",
"DynamicLightingCluster.h",
]

public_deps = [
"${chip_root}/src/app/data-model-provider",
"${chip_root}/src/app/server",
"${chip_root}/src/app/server-cluster",
"${chip_root}/zzz_generated/app-common/clusters/DynamicLighting",
]
}
Loading
Loading