Skip to content

Commit 1c3aabe

Browse files
[Code Driven Cluster] illuminance measurement cluster (project-chip#42884)
* Decouple illuminance measurement cluster * Restyled by clang-format * Restyled by gn * Code update * Address review comment * Address review comments * Addressing review comments * Restyled by clang-format * Add README.md and address review comment * Restyled by prettier-markdown * Update unit tests --------- Co-authored-by: Restyled.io <commits@restyled.io>
1 parent c98d430 commit 1c3aabe

29 files changed

Lines changed: 715 additions & 243 deletions

examples/all-clusters-app/all-clusters-common/all-clusters-app.matter

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8318,13 +8318,13 @@ endpoint 1 {
83188318
}
83198319

83208320
server cluster IlluminanceMeasurement {
8321-
ram attribute measuredValue default = 0x0000;
8321+
callback attribute measuredValue;
83228322
ram attribute minMeasuredValue default = 0x01;
83238323
ram attribute maxMeasuredValue default = 0xFFFE;
83248324
ram attribute tolerance;
83258325
ram attribute lightSensorType default = 0xFF;
8326-
ram attribute featureMap default = 0;
8327-
ram attribute clusterRevision default = 3;
8326+
callback attribute featureMap;
8327+
callback attribute clusterRevision;
83288328
}
83298329

83308330
server cluster TemperatureMeasurement {

examples/all-clusters-app/esp32/main/DeviceWithDisplay.cpp

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
// TODO: Ideally we should not depend on the codegen integration
2626
// It would be best if we could use generic cluster API instead
2727
#include <app/clusters/boolean-state-server/CodegenIntegration.h>
28+
#include <app/clusters/illuminance-measurement-server/CodegenIntegration.h>
2829

2930
#include <string>
3031
#include <tuple>
@@ -217,8 +218,19 @@ class EditAttributeListModel : public TouchesMatterStackModel
217218
else if (name == "Illuminance")
218219
{
219220
// update the current illuminance here for hardcoded endpoint 1
220-
ESP_LOGI(TAG, "Illuminance changed to : %d", n);
221-
app::Clusters::IlluminanceMeasurement::Attributes::MeasuredValue::Set(1, static_cast<int16_t>(n));
221+
auto illuminanceMeasurement = app::Clusters::IlluminanceMeasurement::FindClusterOnEndpoint(1);
222+
if (illuminanceMeasurement != nullptr)
223+
{
224+
CHIP_ERROR err = illuminanceMeasurement->SetMeasuredValue(static_cast<int16_t>(n));
225+
if (err == CHIP_NO_ERROR)
226+
{
227+
ESP_LOGI(TAG, "Illuminance changed to : %d", n);
228+
}
229+
else
230+
{
231+
ESP_LOGE(TAG, "Failed to set illuminance: %" CHIP_ERROR_FORMAT, err.Format());
232+
}
233+
}
222234
}
223235
else if (name == "Humidity")
224236
{
@@ -710,7 +722,12 @@ void SetupPretendDevices()
710722
AddEndpoint("External");
711723
AddCluster("Illuminance Measurement");
712724
AddAttribute("Illuminance", "1000");
713-
app::Clusters::IlluminanceMeasurement::Attributes::MeasuredValue::Set(1, static_cast<int16_t>(1000));
725+
726+
auto illuminanceMeasurement = app::Clusters::IlluminanceMeasurement::FindClusterOnEndpoint(1);
727+
if (illuminanceMeasurement != nullptr)
728+
{
729+
LogErrorOnFailure(illuminanceMeasurement->SetMeasuredValue(static_cast<int16_t>(1000)));
730+
}
714731

715732
AddDevice("Color Light");
716733
AddEndpoint("1");

examples/all-clusters-app/realtek/data_model/all-clusters-app.matter

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9224,13 +9224,13 @@ endpoint 1 {
92249224
}
92259225

92269226
server cluster IlluminanceMeasurement {
9227-
ram attribute measuredValue default = 0x0000;
9227+
callback attribute measuredValue;
92289228
ram attribute minMeasuredValue default = 0x01;
92299229
ram attribute maxMeasuredValue default = 0xFFFE;
92309230
ram attribute tolerance;
92319231
ram attribute lightSensorType default = 0xFF;
9232-
ram attribute featureMap default = 0;
9233-
ram attribute clusterRevision default = 3;
9232+
callback attribute featureMap;
9233+
callback attribute clusterRevision;
92349234
}
92359235

92369236
server cluster TemperatureMeasurement {

examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7052,11 +7052,11 @@ endpoint 1 {
70527052
}
70537053

70547054
server cluster IlluminanceMeasurement {
7055-
ram attribute measuredValue default = 0x0000;
7055+
callback attribute measuredValue;
70567056
ram attribute minMeasuredValue default = 0x01;
70577057
ram attribute maxMeasuredValue default = 0xFFFE;
7058-
ram attribute featureMap default = 0;
7059-
ram attribute clusterRevision default = 3;
7058+
callback attribute featureMap;
7059+
callback attribute clusterRevision;
70607060
}
70617061

70627062
server cluster TemperatureMeasurement {

examples/all-clusters-minimal-app/esp32/main/DeviceWithDisplay.cpp

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
// TODO: Ideally we should not depend on the codegen integration
2525
// It would be best if we could use generic cluster API instead
2626
#include <app/clusters/boolean-state-server/CodegenIntegration.h>
27+
#include <app/clusters/illuminance-measurement-server/CodegenIntegration.h>
2728

2829
#include <string>
2930
#include <tuple>
@@ -182,8 +183,19 @@ class EditAttributeListModel : public TouchesMatterStackModel
182183
else if (name == "Illuminance")
183184
{
184185
// update the current illuminance here for hardcoded endpoint 1
185-
ESP_LOGI(TAG, "Illuminance changed to : %d", n);
186-
app::Clusters::IlluminanceMeasurement::Attributes::MeasuredValue::Set(1, static_cast<int16_t>(n));
186+
auto illuminanceMeasurement = app::Clusters::IlluminanceMeasurement::FindClusterOnEndpoint(1);
187+
if (illuminanceMeasurement != nullptr)
188+
{
189+
CHIP_ERROR err = illuminanceMeasurement->SetMeasuredValue(static_cast<int16_t>(n));
190+
if (err == CHIP_NO_ERROR)
191+
{
192+
ESP_LOGI(TAG, "Illuminance changed to : %d", n);
193+
}
194+
else
195+
{
196+
ESP_LOGE(TAG, "Failed to set illuminance: %" CHIP_ERROR_FORMAT, err.Format());
197+
}
198+
}
187199
}
188200
else if (name == "Humidity")
189201
{
@@ -571,7 +583,12 @@ void SetupPretendDevices()
571583
AddEndpoint("External");
572584
AddCluster("Illuminance Measurement");
573585
AddAttribute("Illuminance", "1000");
574-
app::Clusters::IlluminanceMeasurement::Attributes::MeasuredValue::Set(1, static_cast<int16_t>(1000));
586+
587+
auto illuminanceMeasurement = app::Clusters::IlluminanceMeasurement::FindClusterOnEndpoint(1);
588+
if (illuminanceMeasurement != nullptr)
589+
{
590+
LogErrorOnFailure(illuminanceMeasurement->SetMeasuredValue(static_cast<int16_t>(1000)));
591+
}
575592

576593
AddDevice("Color Light");
577594
AddEndpoint("1");

examples/chef/devices/rootnode_contactsensor_lightsensor_occupancysensor_temperaturesensor_pressuresensor_flowsensor_humiditysensor_airqualitysensor_powersource_367e7cea91.matter

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2728,15 +2728,15 @@ endpoint 2 {
27282728
}
27292729

27302730
server cluster IlluminanceMeasurement {
2731-
ram attribute measuredValue default = 0xC351;
2731+
callback attribute measuredValue;
27322732
ram attribute minMeasuredValue default = 1;
27332733
ram attribute maxMeasuredValue default = 0xfffe;
27342734
ram attribute lightSensorType default = 1;
27352735
callback attribute generatedCommandList;
27362736
callback attribute acceptedCommandList;
27372737
callback attribute attributeList;
2738-
ram attribute featureMap default = 0;
2739-
ram attribute clusterRevision default = 3;
2738+
callback attribute featureMap;
2739+
callback attribute clusterRevision;
27402740
}
27412741
}
27422742
endpoint 3 {

examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1937,15 +1937,15 @@ endpoint 1 {
19371937
}
19381938

19391939
server cluster IlluminanceMeasurement {
1940-
ram attribute measuredValue default = 0xC351;
1940+
callback attribute measuredValue;
19411941
ram attribute minMeasuredValue default = 1;
19421942
ram attribute maxMeasuredValue default = 0xfffe;
19431943
ram attribute lightSensorType default = 1;
19441944
callback attribute generatedCommandList;
19451945
callback attribute acceptedCommandList;
19461946
callback attribute attributeList;
1947-
ram attribute featureMap default = 0;
1948-
ram attribute clusterRevision default = 2;
1947+
callback attribute featureMap;
1948+
callback attribute clusterRevision;
19491949
}
19501950
}
19511951

examples/placeholder/linux/apps/app1/config.matter

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9302,13 +9302,13 @@ endpoint 0 {
93029302
}
93039303

93049304
server cluster IlluminanceMeasurement {
9305-
ram attribute measuredValue default = 0x0000;
9305+
callback attribute measuredValue;
93069306
ram attribute minMeasuredValue default = 0x01;
93079307
ram attribute maxMeasuredValue default = 0xFFFE;
93089308
ram attribute tolerance;
93099309
ram attribute lightSensorType default = 0xFF;
9310-
ram attribute featureMap default = 0;
9311-
ram attribute clusterRevision default = 3;
9310+
callback attribute featureMap;
9311+
callback attribute clusterRevision;
93129312
}
93139313

93149314
server cluster TemperatureMeasurement {

examples/placeholder/linux/apps/app2/config.matter

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9265,13 +9265,13 @@ endpoint 0 {
92659265
}
92669266

92679267
server cluster IlluminanceMeasurement {
9268-
ram attribute measuredValue default = 0x0000;
9268+
callback attribute measuredValue;
92699269
ram attribute minMeasuredValue default = 0x01;
92709270
ram attribute maxMeasuredValue default = 0xFFFE;
92719271
ram attribute tolerance;
92729272
ram attribute lightSensorType default = 0xFF;
9273-
ram attribute featureMap default = 0;
9274-
ram attribute clusterRevision default = 3;
9273+
callback attribute featureMap;
9274+
callback attribute clusterRevision;
92759275
}
92769276

92779277
server cluster TemperatureMeasurement {

scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/CodeDrivenCallback.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ void MatterPowerTopologyClusterInitCallback(chip::EndpointId endpointId);
145145

146146
void MatterPowerTopologyClusterShutdownCallback(chip::EndpointId endpointId, MatterClusterShutdownType shutdownType);
147147

148+
void MatterIlluminanceMeasurementClusterInitCallback(chip::EndpointId endpointId);
149+
150+
void MatterIlluminanceMeasurementClusterShutdownCallback(chip::EndpointId endpointId, MatterClusterShutdownType shutdownType);
151+
148152
void MatterOccupancySensingClusterInitCallback(chip::EndpointId endpointId);
149153

150154
void MatterOccupancySensingClusterShutdownCallback(chip::EndpointId endpointId, MatterClusterShutdownType shutdownType);

0 commit comments

Comments
 (0)