diff --git a/src/app/zap-templates/zcl/data-model/all.xml b/src/app/zap-templates/zcl/data-model/all.xml
index f9e4c95dd141eb..97c8e90e6ae692 100644
--- a/src/app/zap-templates/zcl/data-model/all.xml
+++ b/src/app/zap-templates/zcl/data-model/all.xml
@@ -56,6 +56,7 @@
+
diff --git a/src/app/zap-templates/zcl/data-model/chip/replacable-monitoring-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/replacable-monitoring-cluster.xml
index 5e7f23568ad6c6..2bfc7d05c5b1bd 100644
--- a/src/app/zap-templates/zcl/data-model/chip/replacable-monitoring-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/replacable-monitoring-cluster.xml
@@ -84,7 +84,7 @@ limitations under the License.
Measurement & Sensing
Attributes and commands for monitoring electrostatic filters in a device
0x0074
- ELECTROSTATIC_FILTER_MONITORING
+ ELECTROSTATIC_FILTER_MONITORING_CLUSTER
true
true
@@ -147,7 +147,7 @@ limitations under the License.
Measurement & Sensing
Attributes and commands for monitoring zeolite filters in a device
0x0077
- ZEOLITE_FILTER_MONITORING
+ ZEOLITE_FILTER_MONITORING_CLUSTER
true
true
diff --git a/src/app/zap-templates/zcl/data-model/chip/smoke-co-alarm-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/smoke-co-alarm-cluster.xml
new file mode 100644
index 00000000000000..7401708aae91c4
--- /dev/null
+++ b/src/app/zap-templates/zcl/data-model/chip/smoke-co-alarm-cluster.xml
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+ Closures
+ Smoke CO Alarm
+ 0x005C
+ SMOKE_CO_ALARM_CLUSTER
+ This cluster provides an interface for observing and managing the state of smoke and CO alarms.
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+ ExpressedState
+ SmokeState
+ COState
+ BatteryAlert
+ DeviceMuted
+ TestInProgress
+ HardwareFaultAlert
+ EndOfServiceAlert
+ InterconnectSmokeAlarm
+ InterconnectCOAlarm
+ ContaminationState
+ SensitivityLevel
+
+
+
+
+
+ This command SHALL initiate a device self-test.
+
+
+
+
+ This event SHALL be generated when SmokeState attribute changes to either Warning or Critical state.
+
+
+ This event SHALL be generated when COState attribute changes to either Warning or Critical state.
+
+
+ This event SHALL be generated when BatteryAlert attribute changes to either Warning or Critical state.
+
+
+ This event SHALL be generated when the device detects a hardware fault that leads to setting HardwareFaultAlert to True.
+
+
+ This event SHALL be generated when the EndOfServiceAlert is set to True.
+
+
+ This event SHALL be generated when the SelfTest completes, and the attribute TestInProgress changes to False.
+
+
+ This event SHALL be generated when the DeviceMuted attribute changes to True.
+
+
+ This event SHALL be generated when DeviceMuted attribute changes to False.
+
+
+ This event SHALL be generated when the device hosting the cluster receives a remote smoke alarm.
+
+
+ This event SHALL be generated when the device hosting the cluster receives a remote CO alarm.
+
+
+ This event SHALL be generated when ExpressedState attribute returns to Normal state.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
index 45ed3306e821e0..05dae33147d379 100644
--- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json
+++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
@@ -74,6 +74,7 @@
"relative-humidity-measurement-cluster.xml",
"replacable-monitoring-cluster.xml",
"scene.xml",
+ "smoke-co-alarm-cluster.xml",
"software-diagnostics-cluster.xml",
"switch-cluster.xml",
"target-navigator-cluster.xml",
diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json
index 4d3e4348ae18c0..9fd8c6caf9ec79 100644
--- a/src/app/zap-templates/zcl/zcl.json
+++ b/src/app/zap-templates/zcl/zcl.json
@@ -72,6 +72,7 @@
"relative-humidity-measurement-cluster.xml",
"replacable-monitoring-cluster.xml",
"scene.xml",
+ "smoke-co-alarm-cluster.xml",
"software-diagnostics-cluster.xml",
"switch-cluster.xml",
"target-navigator-cluster.xml",
diff --git a/src/app/zap_cluster_list.json b/src/app/zap_cluster_list.json
index 333d629bc21e1f..d86183fb3e8a4b 100644
--- a/src/app/zap_cluster_list.json
+++ b/src/app/zap_cluster_list.json
@@ -76,6 +76,7 @@
"PWM_CLUSTER": [],
"RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER": [],
"SCENES_CLUSTER": [],
+ "SMOKE_CO_ALARM_CLUSTER": [],
"SOFTWARE_DIAGNOSTICS_CLUSTER": [],
"SWITCH_CLUSTER": [],
"TARGET_NAVIGATOR_CLUSTER": [],
@@ -177,6 +178,7 @@
"PWM_CLUSTER": [],
"RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER": [],
"SCENES_CLUSTER": ["scenes"],
+ "SMOKE_CO_ALARM_CLUSTER": [],
"SOFTWARE_DIAGNOSTICS_CLUSTER": ["software-diagnostics-server"],
"SWITCH_CLUSTER": ["switch-server"],
"TARGET_NAVIGATOR_CLUSTER": ["target-navigator-server"],
diff --git a/src/controller/data_model/BUILD.gn b/src/controller/data_model/BUILD.gn
index 69ffd6f2e36488..b4944bad11436c 100644
--- a/src/controller/data_model/BUILD.gn
+++ b/src/controller/data_model/BUILD.gn
@@ -176,6 +176,8 @@ if (current_os == "android" || build_java_matter_controller) {
"jni/RelativeHumidityMeasurementClient-ReadImpl.cpp",
"jni/ScenesClient-InvokeSubscribeImpl.cpp",
"jni/ScenesClient-ReadImpl.cpp",
+ "jni/SmokeCoAlarmClient-ReadImpl.cpp",
+ "jni/SmokeCoAlarmClient-InvokeSubscribeImpl.cpp",
"jni/SoftwareDiagnosticsClient-InvokeSubscribeImpl.cpp",
"jni/SoftwareDiagnosticsClient-ReadImpl.cpp",
"jni/SwitchClient-InvokeSubscribeImpl.cpp",
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 13d57667665187..f17dd261202ba4 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -2800,6 +2800,114 @@ client cluster AirQuality = 91 {
readonly attribute int16u clusterRevision = 65533;
}
+/** This cluster provides an interface for observing and managing the state of smoke and CO alarms. */
+client cluster SmokeCoAlarm = 92 {
+ enum AlarmStateEnum : ENUM8 {
+ kUnknown = 0;
+ kNormal = 1;
+ kWarning = 2;
+ kCritical = 3;
+ }
+
+ enum ContaminationStateEnum : ENUM8 {
+ kUnknown = 0;
+ kNormal = 1;
+ kLow = 2;
+ kWarning = 3;
+ kCritical = 4;
+ }
+
+ enum EndOfServiceEnum : ENUM8 {
+ kUnknown = 0;
+ kExpired = 1;
+ kNormal = 2;
+ }
+
+ enum ExpressedStateEnum : ENUM8 {
+ kNormal = 0;
+ kSmokeAlarm = 1;
+ kCOAlarm = 2;
+ kBatteryAlert = 3;
+ kTesting = 4;
+ kHardwareFault = 5;
+ kEndOfService = 6;
+ kInterconnectSmoke = 7;
+ kInterconnectCO = 8;
+ }
+
+ enum MuteStateEnum : ENUM8 {
+ kUnknown = 0;
+ kNotMuted = 1;
+ kMuted = 2;
+ }
+
+ enum SensitivityEnum : ENUM8 {
+ kHigh = 0;
+ kStandard = 1;
+ kLow = 2;
+ }
+
+ bitmap SmokeCOAlarmFeature : BITMAP32 {
+ kSmokeAlarm = 0x1;
+ kCoAlarm = 0x2;
+ }
+
+ info event SmokeAlarm = 0 {
+ }
+
+ info event COAlarm = 1 {
+ }
+
+ info event LowBattery = 2 {
+ }
+
+ info event HardwareFault = 3 {
+ }
+
+ info event EndOfService = 4 {
+ }
+
+ info event SelfTestComplete = 5 {
+ }
+
+ info event AlarmMuted = 6 {
+ }
+
+ info event MuteEnded = 7 {
+ }
+
+ info event InterconnectSmokeAlarm = 8 {
+ }
+
+ info event InterconnectCOAlarm = 9 {
+ }
+
+ info event AllClear = 10 {
+ }
+
+ readonly attribute ExpressedStateEnum expressedState = 0;
+ readonly attribute optional AlarmStateEnum smokeState = 1;
+ readonly attribute optional AlarmStateEnum COState = 2;
+ readonly attribute AlarmStateEnum batteryAlert = 3;
+ readonly attribute optional MuteStateEnum deviceMuted = 4;
+ readonly attribute boolean testInProgress = 5;
+ readonly attribute boolean hardwareFaultAlert = 6;
+ readonly attribute EndOfServiceEnum endOfServiceAlert = 7;
+ readonly attribute optional AlarmStateEnum interconnectSmokeAlarm = 8;
+ readonly attribute optional AlarmStateEnum interconnectCOAlarm = 9;
+ readonly attribute optional ContaminationStateEnum contaminationState = 10;
+ attribute optional SensitivityEnum sensitivityLevel = 11;
+ readonly attribute command_id generatedCommandList[] = 65528;
+ readonly attribute command_id acceptedCommandList[] = 65529;
+ readonly attribute event_id eventList[] = 65530;
+ readonly attribute attrib_id attributeList[] = 65531;
+ readonly attribute bitmap32 featureMap = 65532;
+ readonly attribute int16u clusterRevision = 65533;
+
+ /** This command SHALL initiate a device self-test. */
+ command SelfTestRequest(): DefaultSuccess = 0;
+}
+
/** Attributes and commands for monitoring HEPA filters in a device */
client cluster HepaFilterMonitoring = 113 {
enum ChangeIndicationEnum : ENUM8 {
diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap
index 671ff4fad1ee38..d52d30e81ac43c 100644
--- a/src/controller/data_model/controller-clusters.zap
+++ b/src/controller/data_model/controller-clusters.zap
@@ -16,12 +16,6 @@
}
],
"package": [
- {
- "pathRelativity": "relativeToZap",
- "path": "../../app/zap-templates/app-templates.json",
- "type": "gen-templates-json",
- "version": "chip-v1"
- },
{
"pathRelativity": "relativeToZap",
"path": "../../app/zap-templates/zcl/zcl.json",
@@ -29,6 +23,12 @@
"category": "matter",
"version": 1,
"description": "Matter SDK ZCL data"
+ },
+ {
+ "pathRelativity": "relativeToZap",
+ "path": "../../app/zap-templates/app-templates.json",
+ "type": "gen-templates-json",
+ "version": "chip-v1"
}
],
"endpointTypes": [
@@ -9883,7 +9883,7 @@
"side": "server",
"type": "array",
"included": 0,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -9931,7 +9931,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -9947,7 +9947,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -9963,7 +9963,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -9979,7 +9979,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10349,7 +10349,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10365,7 +10365,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10381,7 +10381,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10397,7 +10397,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10440,6 +10440,356 @@
}
]
},
+ {
+ "name": "Smoke CO Alarm",
+ "code": 92,
+ "mfgCode": null,
+ "define": "SMOKE_CO_ALARM_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "SelfTestRequest",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 0,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "client",
+ "type": "bitmap32",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "type": "int16u",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 1,
+ "minInterval": 0,
+ "maxInterval": 65344,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Smoke CO Alarm",
+ "code": 92,
+ "mfgCode": null,
+ "define": "SMOKE_CO_ALARM_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "attributes": [
+ {
+ "name": "ExpressedState",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "type": "ExpressedStateEnum",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "SmokeState",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "type": "AlarmStateEnum",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "COState",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "type": "AlarmStateEnum",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "BatteryAlert",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "type": "AlarmStateEnum",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "DeviceMuted",
+ "code": 4,
+ "mfgCode": null,
+ "side": "server",
+ "type": "MuteStateEnum",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "TestInProgress",
+ "code": 5,
+ "mfgCode": null,
+ "side": "server",
+ "type": "boolean",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "HardwareFaultAlert",
+ "code": 6,
+ "mfgCode": null,
+ "side": "server",
+ "type": "boolean",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "EndOfServiceAlert",
+ "code": 7,
+ "mfgCode": null,
+ "side": "server",
+ "type": "EndOfServiceEnum",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "InterconnectSmokeAlarm",
+ "code": 8,
+ "mfgCode": null,
+ "side": "server",
+ "type": "AlarmStateEnum",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "InterconnectCOAlarm",
+ "code": 9,
+ "mfgCode": null,
+ "side": "server",
+ "type": "AlarmStateEnum",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ContaminationState",
+ "code": 10,
+ "mfgCode": null,
+ "side": "server",
+ "type": "ContaminationStateEnum",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "SensitivityLevel",
+ "code": 11,
+ "mfgCode": null,
+ "side": "server",
+ "type": "SensitivityEnum",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "GeneratedCommandList",
+ "code": 65528,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "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": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "EventList",
+ "code": 65530,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "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": "",
+ "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": "1",
+ "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": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
{
"name": "HEPA Filter Monitoring",
"code": 113,
@@ -10561,7 +10911,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10577,7 +10927,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10593,7 +10943,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10609,7 +10959,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10773,7 +11123,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10789,7 +11139,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10805,7 +11155,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10821,7 +11171,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -10985,7 +11335,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11001,7 +11351,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11017,7 +11367,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11033,7 +11383,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11197,7 +11547,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11213,7 +11563,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11229,7 +11579,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11245,7 +11595,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11409,7 +11759,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11425,7 +11775,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11441,7 +11791,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11457,7 +11807,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11621,7 +11971,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11637,7 +11987,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11653,7 +12003,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11669,7 +12019,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11833,7 +12183,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11849,7 +12199,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11865,7 +12215,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11881,7 +12231,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12045,7 +12395,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12061,7 +12411,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12077,7 +12427,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12093,7 +12443,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12257,7 +12607,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12273,7 +12623,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12289,7 +12639,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12305,7 +12655,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12469,7 +12819,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12485,7 +12835,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12501,7 +12851,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12517,7 +12867,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12681,7 +13031,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12697,7 +13047,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12713,7 +13063,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12729,7 +13079,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12893,7 +13243,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12909,7 +13259,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12925,7 +13275,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -12941,7 +13291,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
index da9947fda4e402..e9c9ad74118d7b 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
@@ -7877,6 +7877,243 @@ private static Map readAirQualityInteractionInfo() {
return result;
}
+ private static Map readSmokeCoAlarmInteractionInfo() {
+ Map result = new LinkedHashMap<>();
+ Map readSmokeCoAlarmExpressedStateCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmExpressedStateAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readExpressedStateAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmExpressedStateCommandParams);
+ result.put(
+ "readExpressedStateAttribute", readSmokeCoAlarmExpressedStateAttributeInteractionInfo);
+ Map readSmokeCoAlarmSmokeStateCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmSmokeStateAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readSmokeStateAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmSmokeStateCommandParams);
+ result.put("readSmokeStateAttribute", readSmokeCoAlarmSmokeStateAttributeInteractionInfo);
+ Map readSmokeCoAlarmCOStateCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmCOStateAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readCOStateAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmCOStateCommandParams);
+ result.put("readCOStateAttribute", readSmokeCoAlarmCOStateAttributeInteractionInfo);
+ Map readSmokeCoAlarmBatteryAlertCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmBatteryAlertAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readBatteryAlertAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmBatteryAlertCommandParams);
+ result.put("readBatteryAlertAttribute", readSmokeCoAlarmBatteryAlertAttributeInteractionInfo);
+ Map readSmokeCoAlarmDeviceMutedCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmDeviceMutedAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readDeviceMutedAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmDeviceMutedCommandParams);
+ result.put("readDeviceMutedAttribute", readSmokeCoAlarmDeviceMutedAttributeInteractionInfo);
+ Map readSmokeCoAlarmTestInProgressCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmTestInProgressAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readTestInProgressAttribute((ChipClusters.BooleanAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
+ readSmokeCoAlarmTestInProgressCommandParams);
+ result.put(
+ "readTestInProgressAttribute", readSmokeCoAlarmTestInProgressAttributeInteractionInfo);
+ Map readSmokeCoAlarmHardwareFaultAlertCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmHardwareFaultAlertAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readHardwareFaultAlertAttribute(
+ (ChipClusters.BooleanAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
+ readSmokeCoAlarmHardwareFaultAlertCommandParams);
+ result.put(
+ "readHardwareFaultAlertAttribute",
+ readSmokeCoAlarmHardwareFaultAlertAttributeInteractionInfo);
+ Map readSmokeCoAlarmEndOfServiceAlertCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmEndOfServiceAlertAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readEndOfServiceAlertAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmEndOfServiceAlertCommandParams);
+ result.put(
+ "readEndOfServiceAlertAttribute",
+ readSmokeCoAlarmEndOfServiceAlertAttributeInteractionInfo);
+ Map readSmokeCoAlarmInterconnectSmokeAlarmCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmInterconnectSmokeAlarmAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readInterconnectSmokeAlarmAttribute(
+ (ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmInterconnectSmokeAlarmCommandParams);
+ result.put(
+ "readInterconnectSmokeAlarmAttribute",
+ readSmokeCoAlarmInterconnectSmokeAlarmAttributeInteractionInfo);
+ Map readSmokeCoAlarmInterconnectCOAlarmCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmInterconnectCOAlarmAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readInterconnectCOAlarmAttribute(
+ (ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmInterconnectCOAlarmCommandParams);
+ result.put(
+ "readInterconnectCOAlarmAttribute",
+ readSmokeCoAlarmInterconnectCOAlarmAttributeInteractionInfo);
+ Map readSmokeCoAlarmContaminationStateCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmContaminationStateAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readContaminationStateAttribute(
+ (ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmContaminationStateCommandParams);
+ result.put(
+ "readContaminationStateAttribute",
+ readSmokeCoAlarmContaminationStateAttributeInteractionInfo);
+ Map readSmokeCoAlarmSensitivityLevelCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmSensitivityLevelAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readSensitivityLevelAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmSensitivityLevelCommandParams);
+ result.put(
+ "readSensitivityLevelAttribute", readSmokeCoAlarmSensitivityLevelAttributeInteractionInfo);
+ Map readSmokeCoAlarmGeneratedCommandListCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmGeneratedCommandListAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readGeneratedCommandListAttribute(
+ (ChipClusters.SmokeCoAlarmCluster.GeneratedCommandListAttributeCallback)
+ callback);
+ },
+ () ->
+ new ClusterInfoMapping
+ .DelegatedSmokeCoAlarmClusterGeneratedCommandListAttributeCallback(),
+ readSmokeCoAlarmGeneratedCommandListCommandParams);
+ result.put(
+ "readGeneratedCommandListAttribute",
+ readSmokeCoAlarmGeneratedCommandListAttributeInteractionInfo);
+ Map readSmokeCoAlarmAcceptedCommandListCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmAcceptedCommandListAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readAcceptedCommandListAttribute(
+ (ChipClusters.SmokeCoAlarmCluster.AcceptedCommandListAttributeCallback)
+ callback);
+ },
+ () ->
+ new ClusterInfoMapping
+ .DelegatedSmokeCoAlarmClusterAcceptedCommandListAttributeCallback(),
+ readSmokeCoAlarmAcceptedCommandListCommandParams);
+ result.put(
+ "readAcceptedCommandListAttribute",
+ readSmokeCoAlarmAcceptedCommandListAttributeInteractionInfo);
+ Map readSmokeCoAlarmEventListCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmEventListAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readEventListAttribute(
+ (ChipClusters.SmokeCoAlarmCluster.EventListAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedSmokeCoAlarmClusterEventListAttributeCallback(),
+ readSmokeCoAlarmEventListCommandParams);
+ result.put("readEventListAttribute", readSmokeCoAlarmEventListAttributeInteractionInfo);
+ Map readSmokeCoAlarmAttributeListCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmAttributeListAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readAttributeListAttribute(
+ (ChipClusters.SmokeCoAlarmCluster.AttributeListAttributeCallback) callback);
+ },
+ () ->
+ new ClusterInfoMapping.DelegatedSmokeCoAlarmClusterAttributeListAttributeCallback(),
+ readSmokeCoAlarmAttributeListCommandParams);
+ result.put("readAttributeListAttribute", readSmokeCoAlarmAttributeListAttributeInteractionInfo);
+ Map readSmokeCoAlarmFeatureMapCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmFeatureMapAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readFeatureMapAttribute((ChipClusters.LongAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
+ readSmokeCoAlarmFeatureMapCommandParams);
+ result.put("readFeatureMapAttribute", readSmokeCoAlarmFeatureMapAttributeInteractionInfo);
+ Map readSmokeCoAlarmClusterRevisionCommandParams =
+ new LinkedHashMap();
+ InteractionInfo readSmokeCoAlarmClusterRevisionAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .readClusterRevisionAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readSmokeCoAlarmClusterRevisionCommandParams);
+ result.put(
+ "readClusterRevisionAttribute", readSmokeCoAlarmClusterRevisionAttributeInteractionInfo);
+
+ return result;
+ }
+
private static Map readHepaFilterMonitoringInteractionInfo() {
Map result = new LinkedHashMap<>();
Map readHepaFilterMonitoringConditionCommandParams =
@@ -19288,6 +19525,7 @@ public Map> getReadAttributeMap() {
put("icdManagement", readIcdManagementInteractionInfo());
put("modeSelect", readModeSelectInteractionInfo());
put("airQuality", readAirQualityInteractionInfo());
+ put("smokeCoAlarm", readSmokeCoAlarmInteractionInfo());
put("hepaFilterMonitoring", readHepaFilterMonitoringInteractionInfo());
put(
"activatedCarbonFilterMonitoring",
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
index b58f840370f8a2..b81fdbe9e321fa 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
@@ -639,6 +639,26 @@ public Map> getWriteAttributeMap() {
writeAttributeMap.put("modeSelect", writeModeSelectInteractionInfo);
Map writeAirQualityInteractionInfo = new LinkedHashMap<>();
writeAttributeMap.put("airQuality", writeAirQualityInteractionInfo);
+ Map writeSmokeCoAlarmInteractionInfo = new LinkedHashMap<>();
+ Map writeSmokeCoAlarmSensitivityLevelCommandParams =
+ new LinkedHashMap();
+ CommandParameterInfo smokeCoAlarmsensitivityLevelCommandParameterInfo =
+ new CommandParameterInfo("value", Integer.class, Integer.class);
+ writeSmokeCoAlarmSensitivityLevelCommandParams.put(
+ "value", smokeCoAlarmsensitivityLevelCommandParameterInfo);
+ InteractionInfo writeSmokeCoAlarmSensitivityLevelAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .writeSensitivityLevelAttribute(
+ (DefaultClusterCallback) callback, (Integer) commandArguments.get("value"));
+ },
+ () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
+ writeSmokeCoAlarmSensitivityLevelCommandParams);
+ writeSmokeCoAlarmInteractionInfo.put(
+ "writeSensitivityLevelAttribute",
+ writeSmokeCoAlarmSensitivityLevelAttributeInteractionInfo);
+ writeAttributeMap.put("smokeCoAlarm", writeSmokeCoAlarmInteractionInfo);
Map writeHepaFilterMonitoringInteractionInfo = new LinkedHashMap<>();
writeAttributeMap.put("hepaFilterMonitoring", writeHepaFilterMonitoringInteractionInfo);
Map writeActivatedCarbonFilterMonitoringInteractionInfo =
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index 769ead58483f84..bd2486993d2a2a 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -12325,6 +12325,322 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
}
break;
}
+ case app::Clusters::SmokeCoAlarm::Id: {
+ using namespace app::Clusters::SmokeCoAlarm;
+ switch (aPath.mAttributeId)
+ {
+ case Attributes::ExpressedState::Id: {
+ using TypeInfo = Attributes::ExpressedState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::SmokeState::Id: {
+ using TypeInfo = Attributes::SmokeState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::COState::Id: {
+ using TypeInfo = Attributes::COState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::BatteryAlert::Id: {
+ using TypeInfo = Attributes::BatteryAlert::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::DeviceMuted::Id: {
+ using TypeInfo = Attributes::DeviceMuted::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::TestInProgress::Id: {
+ using TypeInfo = Attributes::TestInProgress::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Boolean";
+ std::string valueCtorSignature = "(Z)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), cppValue,
+ value);
+ return value;
+ }
+ case Attributes::HardwareFaultAlert::Id: {
+ using TypeInfo = Attributes::HardwareFaultAlert::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Boolean";
+ std::string valueCtorSignature = "(Z)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), cppValue,
+ value);
+ return value;
+ }
+ case Attributes::EndOfServiceAlert::Id: {
+ using TypeInfo = Attributes::EndOfServiceAlert::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::InterconnectSmokeAlarm::Id: {
+ using TypeInfo = Attributes::InterconnectSmokeAlarm::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::InterconnectCOAlarm::Id: {
+ using TypeInfo = Attributes::InterconnectCOAlarm::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::ContaminationState::Id: {
+ using TypeInfo = Attributes::ContaminationState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::SensitivityLevel::Id: {
+ using TypeInfo = Attributes::SensitivityLevel::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
+ return value;
+ }
+ case Attributes::GeneratedCommandList::Id: {
+ using TypeInfo = Attributes::GeneratedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::AcceptedCommandList::Id: {
+ using TypeInfo = Attributes::AcceptedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::EventList::Id: {
+ using TypeInfo = Attributes::EventList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::AttributeList::Id: {
+ using TypeInfo = Attributes::AttributeList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::FeatureMap::Id: {
+ using TypeInfo = Attributes::FeatureMap::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Long";
+ std::string valueCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue, value);
+ return value;
+ }
+ case Attributes::ClusterRevision::Id: {
+ using TypeInfo = Attributes::ClusterRevision::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue, value);
+ return value;
+ }
+ default:
+ *aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
+ break;
+ }
+ break;
+ }
case app::Clusters::HepaFilterMonitoring::Id: {
using namespace app::Clusters::HepaFilterMonitoring;
switch (aPath.mAttributeId)
diff --git a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
index 704671c5d5fa20..b55e2d66de81f9 100644
--- a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
+++ b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
@@ -2342,6 +2342,58 @@ JNI_METHOD(void, ModeSelectCluster, writeOnModeAttribute)
onFailure.release();
}
+JNI_METHOD(void, SmokeCoAlarmCluster, writeSensitivityLevelAttribute)
+(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
+{
+ chip::DeviceLayer::StackLock lock;
+ ListFreer listFreer;
+ using TypeInfo = chip::app::Clusters::SmokeCoAlarm::Attributes::SensitivityLevel::TypeInfo;
+ TypeInfo::Type cppValue;
+
+ std::vector> cleanupByteArrays;
+ std::vector> cleanupStrings;
+
+ cppValue =
+ static_cast>(chip::JniReferences::GetInstance().IntegerToPrimitive(value));
+
+ std::unique_ptr onSuccess(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrReturn(onSuccess.get() != nullptr,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
+ env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY));
+
+ std::unique_ptr onFailure(
+ Platform::New(callback), Platform::Delete);
+ VerifyOrReturn(onFailure.get() != nullptr,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
+ env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ SmokeCoAlarmCluster * cppCluster = reinterpret_cast(clusterPtr);
+ VerifyOrReturn(cppCluster != nullptr,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
+ env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
+
+ auto successFn = chip::Callback::Callback::FromCancelable(onSuccess->Cancel());
+ auto failureFn = chip::Callback::Callback::FromCancelable(onFailure->Cancel());
+
+ if (timedWriteTimeoutMs == nullptr)
+ {
+ err = cppCluster->WriteAttribute(cppValue, onSuccess->mContext, successFn->mCall, failureFn->mCall);
+ }
+ else
+ {
+ err = cppCluster->WriteAttribute(cppValue, onSuccess->mContext, successFn->mCall, failureFn->mCall,
+ chip::JniReferences::GetInstance().IntegerToPrimitive(timedWriteTimeoutMs));
+ }
+ VerifyOrReturn(
+ err == CHIP_NO_ERROR,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(env, callback, "Error writing attribute", err));
+
+ onSuccess.release();
+ onFailure.release();
+}
+
JNI_METHOD(void, DoorLockCluster, writeDoorOpenEventsAttribute)
(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
{
diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
index 9889badb090a46..b1f2729ac86888 100644
--- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
@@ -2432,6 +2432,305 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
}
break;
}
+ case app::Clusters::SmokeCoAlarm::Id: {
+ using namespace app::Clusters::SmokeCoAlarm;
+ switch (aPath.mEventId)
+ {
+ case Events::SmokeAlarm::Id: {
+ Events::SmokeAlarm::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass smokeAlarmStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterSmokeAlarmEvent", smokeAlarmStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterSmokeAlarmEvent");
+ return nullptr;
+ }
+ jmethodID smokeAlarmStructCtor = env->GetMethodID(smokeAlarmStructClass, "", "()V");
+ if (smokeAlarmStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterSmokeAlarmEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(smokeAlarmStructClass, smokeAlarmStructCtor);
+
+ return value;
+ }
+ case Events::COAlarm::Id: {
+ Events::COAlarm::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass COAlarmStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterCOAlarmEvent", COAlarmStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterCOAlarmEvent");
+ return nullptr;
+ }
+ jmethodID COAlarmStructCtor = env->GetMethodID(COAlarmStructClass, "", "()V");
+ if (COAlarmStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterCOAlarmEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(COAlarmStructClass, COAlarmStructCtor);
+
+ return value;
+ }
+ case Events::LowBattery::Id: {
+ Events::LowBattery::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass lowBatteryStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterLowBatteryEvent", lowBatteryStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterLowBatteryEvent");
+ return nullptr;
+ }
+ jmethodID lowBatteryStructCtor = env->GetMethodID(lowBatteryStructClass, "", "()V");
+ if (lowBatteryStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterLowBatteryEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(lowBatteryStructClass, lowBatteryStructCtor);
+
+ return value;
+ }
+ case Events::HardwareFault::Id: {
+ Events::HardwareFault::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass hardwareFaultStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterHardwareFaultEvent", hardwareFaultStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterHardwareFaultEvent");
+ return nullptr;
+ }
+ jmethodID hardwareFaultStructCtor = env->GetMethodID(hardwareFaultStructClass, "", "()V");
+ if (hardwareFaultStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterHardwareFaultEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(hardwareFaultStructClass, hardwareFaultStructCtor);
+
+ return value;
+ }
+ case Events::EndOfService::Id: {
+ Events::EndOfService::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass endOfServiceStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterEndOfServiceEvent", endOfServiceStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterEndOfServiceEvent");
+ return nullptr;
+ }
+ jmethodID endOfServiceStructCtor = env->GetMethodID(endOfServiceStructClass, "", "()V");
+ if (endOfServiceStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterEndOfServiceEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(endOfServiceStructClass, endOfServiceStructCtor);
+
+ return value;
+ }
+ case Events::SelfTestComplete::Id: {
+ Events::SelfTestComplete::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass selfTestCompleteStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterSelfTestCompleteEvent",
+ selfTestCompleteStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterSelfTestCompleteEvent");
+ return nullptr;
+ }
+ jmethodID selfTestCompleteStructCtor = env->GetMethodID(selfTestCompleteStructClass, "", "()V");
+ if (selfTestCompleteStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterSelfTestCompleteEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(selfTestCompleteStructClass, selfTestCompleteStructCtor);
+
+ return value;
+ }
+ case Events::AlarmMuted::Id: {
+ Events::AlarmMuted::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass alarmMutedStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterAlarmMutedEvent", alarmMutedStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterAlarmMutedEvent");
+ return nullptr;
+ }
+ jmethodID alarmMutedStructCtor = env->GetMethodID(alarmMutedStructClass, "", "()V");
+ if (alarmMutedStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterAlarmMutedEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(alarmMutedStructClass, alarmMutedStructCtor);
+
+ return value;
+ }
+ case Events::MuteEnded::Id: {
+ Events::MuteEnded::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass muteEndedStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterMuteEndedEvent", muteEndedStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterMuteEndedEvent");
+ return nullptr;
+ }
+ jmethodID muteEndedStructCtor = env->GetMethodID(muteEndedStructClass, "", "()V");
+ if (muteEndedStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterMuteEndedEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(muteEndedStructClass, muteEndedStructCtor);
+
+ return value;
+ }
+ case Events::InterconnectSmokeAlarm::Id: {
+ Events::InterconnectSmokeAlarm::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass interconnectSmokeAlarmStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterInterconnectSmokeAlarmEvent",
+ interconnectSmokeAlarmStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterInterconnectSmokeAlarmEvent");
+ return nullptr;
+ }
+ jmethodID interconnectSmokeAlarmStructCtor = env->GetMethodID(interconnectSmokeAlarmStructClass, "", "()V");
+ if (interconnectSmokeAlarmStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterInterconnectSmokeAlarmEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(interconnectSmokeAlarmStructClass, interconnectSmokeAlarmStructCtor);
+
+ return value;
+ }
+ case Events::InterconnectCOAlarm::Id: {
+ Events::InterconnectCOAlarm::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass interconnectCOAlarmStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterInterconnectCOAlarmEvent",
+ interconnectCOAlarmStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterInterconnectCOAlarmEvent");
+ return nullptr;
+ }
+ jmethodID interconnectCOAlarmStructCtor = env->GetMethodID(interconnectCOAlarmStructClass, "", "()V");
+ if (interconnectCOAlarmStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterInterconnectCOAlarmEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(interconnectCOAlarmStructClass, interconnectCOAlarmStructCtor);
+
+ return value;
+ }
+ case Events::AllClear::Id: {
+ Events::AllClear::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jclass allClearStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$SmokeCoAlarmClusterAllClearEvent", allClearStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$SmokeCoAlarmClusterAllClearEvent");
+ return nullptr;
+ }
+ jmethodID allClearStructCtor = env->GetMethodID(allClearStructClass, "", "()V");
+ if (allClearStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$SmokeCoAlarmClusterAllClearEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(allClearStructClass, allClearStructCtor);
+
+ return value;
+ }
+ default:
+ *aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
+ break;
+ }
+ break;
+ }
case app::Clusters::HepaFilterMonitoring::Id: {
using namespace app::Clusters::HepaFilterMonitoring;
switch (aPath.mEventId)
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
index 484a3887c3523f..9f174184eab969 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
@@ -20512,6 +20512,288 @@ void CHIPAirQualityAttributeListAttributeCallback::CallbackFn(void * context,
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
+CHIPSmokeCoAlarmGeneratedCommandListAttributeCallback::CHIPSmokeCoAlarmGeneratedCommandListAttributeCallback(jobject javaCallback,
+ bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPSmokeCoAlarmGeneratedCommandListAttributeCallback::~CHIPSmokeCoAlarmGeneratedCommandListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPSmokeCoAlarmGeneratedCommandListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPSmokeCoAlarmAcceptedCommandListAttributeCallback::CHIPSmokeCoAlarmAcceptedCommandListAttributeCallback(jobject javaCallback,
+ bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPSmokeCoAlarmAcceptedCommandListAttributeCallback::~CHIPSmokeCoAlarmAcceptedCommandListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPSmokeCoAlarmAcceptedCommandListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPSmokeCoAlarmEventListAttributeCallback::CHIPSmokeCoAlarmEventListAttributeCallback(jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPSmokeCoAlarmEventListAttributeCallback::~CHIPSmokeCoAlarmEventListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPSmokeCoAlarmEventListAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPSmokeCoAlarmAttributeListAttributeCallback::CHIPSmokeCoAlarmAttributeListAttributeCallback(jobject javaCallback,
+ bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPSmokeCoAlarmAttributeListAttributeCallback::~CHIPSmokeCoAlarmAttributeListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPSmokeCoAlarmAttributeListAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
CHIPHepaFilterMonitoringGeneratedCommandListAttributeCallback::CHIPHepaFilterMonitoringGeneratedCommandListAttributeCallback(
jobject javaCallback, bool keepAlive) :
chip::Callback::Callback(CallbackFn, this),
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index 61de68fd55d4a2..783482906b22e0 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -14040,6 +14040,357 @@ private native void subscribeClusterRevisionAttribute(
long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
}
+ public static class SmokeCoAlarmCluster extends BaseChipCluster {
+ public static final long CLUSTER_ID = 92L;
+
+ public SmokeCoAlarmCluster(long devicePtr, int endpointId) {
+ super(devicePtr, endpointId);
+ }
+
+ @Override
+ public native long initWithDevice(long devicePtr, int endpointId);
+
+ public void selfTestRequest(DefaultClusterCallback callback) {
+ selfTestRequest(chipClusterPtr, callback, null);
+ }
+
+ public void selfTestRequest(DefaultClusterCallback callback, int timedInvokeTimeoutMs) {
+
+ selfTestRequest(chipClusterPtr, callback, timedInvokeTimeoutMs);
+ }
+
+ private native void selfTestRequest(
+ long chipClusterPtr,
+ DefaultClusterCallback Callback,
+ @Nullable Integer timedInvokeTimeoutMs);
+
+ public interface GeneratedCommandListAttributeCallback {
+ void onSuccess(List valueList);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+
+ public interface AcceptedCommandListAttributeCallback {
+ void onSuccess(List valueList);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+
+ public interface EventListAttributeCallback {
+ void onSuccess(List valueList);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+
+ public interface AttributeListAttributeCallback {
+ void onSuccess(List valueList);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+
+ public void readExpressedStateAttribute(IntegerAttributeCallback callback) {
+ readExpressedStateAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeExpressedStateAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeExpressedStateAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readSmokeStateAttribute(IntegerAttributeCallback callback) {
+ readSmokeStateAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeSmokeStateAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeSmokeStateAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readCOStateAttribute(IntegerAttributeCallback callback) {
+ readCOStateAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeCOStateAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeCOStateAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readBatteryAlertAttribute(IntegerAttributeCallback callback) {
+ readBatteryAlertAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeBatteryAlertAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeBatteryAlertAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readDeviceMutedAttribute(IntegerAttributeCallback callback) {
+ readDeviceMutedAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeDeviceMutedAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeDeviceMutedAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readTestInProgressAttribute(BooleanAttributeCallback callback) {
+ readTestInProgressAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeTestInProgressAttribute(
+ BooleanAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeTestInProgressAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readHardwareFaultAlertAttribute(BooleanAttributeCallback callback) {
+ readHardwareFaultAlertAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeHardwareFaultAlertAttribute(
+ BooleanAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeHardwareFaultAlertAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readEndOfServiceAlertAttribute(IntegerAttributeCallback callback) {
+ readEndOfServiceAlertAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeEndOfServiceAlertAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeEndOfServiceAlertAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readInterconnectSmokeAlarmAttribute(IntegerAttributeCallback callback) {
+ readInterconnectSmokeAlarmAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeInterconnectSmokeAlarmAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeInterconnectSmokeAlarmAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readInterconnectCOAlarmAttribute(IntegerAttributeCallback callback) {
+ readInterconnectCOAlarmAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeInterconnectCOAlarmAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeInterconnectCOAlarmAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readContaminationStateAttribute(IntegerAttributeCallback callback) {
+ readContaminationStateAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeContaminationStateAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeContaminationStateAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readSensitivityLevelAttribute(IntegerAttributeCallback callback) {
+ readSensitivityLevelAttribute(chipClusterPtr, callback);
+ }
+
+ public void writeSensitivityLevelAttribute(DefaultClusterCallback callback, Integer value) {
+ writeSensitivityLevelAttribute(chipClusterPtr, callback, value, null);
+ }
+
+ public void writeSensitivityLevelAttribute(
+ DefaultClusterCallback callback, Integer value, int timedWriteTimeoutMs) {
+ writeSensitivityLevelAttribute(chipClusterPtr, callback, value, timedWriteTimeoutMs);
+ }
+
+ public void subscribeSensitivityLevelAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeSensitivityLevelAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readGeneratedCommandListAttribute(GeneratedCommandListAttributeCallback callback) {
+ readGeneratedCommandListAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeGeneratedCommandListAttribute(
+ GeneratedCommandListAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeGeneratedCommandListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readAcceptedCommandListAttribute(AcceptedCommandListAttributeCallback callback) {
+ readAcceptedCommandListAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeAcceptedCommandListAttribute(
+ AcceptedCommandListAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeAcceptedCommandListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readEventListAttribute(EventListAttributeCallback callback) {
+ readEventListAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeEventListAttribute(
+ EventListAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeEventListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readAttributeListAttribute(AttributeListAttributeCallback callback) {
+ readAttributeListAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeAttributeListAttribute(
+ AttributeListAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeAttributeListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readFeatureMapAttribute(LongAttributeCallback callback) {
+ readFeatureMapAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeFeatureMapAttribute(
+ LongAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeFeatureMapAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readClusterRevisionAttribute(IntegerAttributeCallback callback) {
+ readClusterRevisionAttribute(chipClusterPtr, callback);
+ }
+
+ public void subscribeClusterRevisionAttribute(
+ IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ subscribeClusterRevisionAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ private native void readExpressedStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeExpressedStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readSmokeStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeSmokeStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readCOStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeCOStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readBatteryAlertAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeBatteryAlertAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readDeviceMutedAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeDeviceMutedAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readTestInProgressAttribute(
+ long chipClusterPtr, BooleanAttributeCallback callback);
+
+ private native void subscribeTestInProgressAttribute(
+ long chipClusterPtr, BooleanAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readHardwareFaultAlertAttribute(
+ long chipClusterPtr, BooleanAttributeCallback callback);
+
+ private native void subscribeHardwareFaultAlertAttribute(
+ long chipClusterPtr, BooleanAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readEndOfServiceAlertAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeEndOfServiceAlertAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readInterconnectSmokeAlarmAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeInterconnectSmokeAlarmAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readInterconnectCOAlarmAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeInterconnectCOAlarmAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readContaminationStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeContaminationStateAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readSensitivityLevelAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void writeSensitivityLevelAttribute(
+ long chipClusterPtr,
+ DefaultClusterCallback callback,
+ Integer value,
+ @Nullable Integer timedWriteTimeoutMs);
+
+ private native void subscribeSensitivityLevelAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readGeneratedCommandListAttribute(
+ long chipClusterPtr, GeneratedCommandListAttributeCallback callback);
+
+ private native void subscribeGeneratedCommandListAttribute(
+ long chipClusterPtr,
+ GeneratedCommandListAttributeCallback callback,
+ int minInterval,
+ int maxInterval);
+
+ private native void readAcceptedCommandListAttribute(
+ long chipClusterPtr, AcceptedCommandListAttributeCallback callback);
+
+ private native void subscribeAcceptedCommandListAttribute(
+ long chipClusterPtr,
+ AcceptedCommandListAttributeCallback callback,
+ int minInterval,
+ int maxInterval);
+
+ private native void readEventListAttribute(
+ long chipClusterPtr, EventListAttributeCallback callback);
+
+ private native void subscribeEventListAttribute(
+ long chipClusterPtr, EventListAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readAttributeListAttribute(
+ long chipClusterPtr, AttributeListAttributeCallback callback);
+
+ private native void subscribeAttributeListAttribute(
+ long chipClusterPtr,
+ AttributeListAttributeCallback callback,
+ int minInterval,
+ int maxInterval);
+
+ private native void readFeatureMapAttribute(
+ long chipClusterPtr, LongAttributeCallback callback);
+
+ private native void subscribeFeatureMapAttribute(
+ long chipClusterPtr, LongAttributeCallback callback, int minInterval, int maxInterval);
+
+ private native void readClusterRevisionAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+
+ private native void subscribeClusterRevisionAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+ }
+
public static class HepaFilterMonitoringCluster extends BaseChipCluster {
public static final long CLUSTER_ID = 113L;
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
index 222ed166cc4333..2e78872d227fd6 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
@@ -963,6 +963,149 @@ public String toString() {
}
}
+ public static class SmokeCoAlarmClusterSmokeAlarmEvent {
+
+ public SmokeCoAlarmClusterSmokeAlarmEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterSmokeAlarmEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterCOAlarmEvent {
+
+ public SmokeCoAlarmClusterCOAlarmEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterCOAlarmEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterLowBatteryEvent {
+
+ public SmokeCoAlarmClusterLowBatteryEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterLowBatteryEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterHardwareFaultEvent {
+
+ public SmokeCoAlarmClusterHardwareFaultEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterHardwareFaultEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterEndOfServiceEvent {
+
+ public SmokeCoAlarmClusterEndOfServiceEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterEndOfServiceEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterSelfTestCompleteEvent {
+
+ public SmokeCoAlarmClusterSelfTestCompleteEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterSelfTestCompleteEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterAlarmMutedEvent {
+
+ public SmokeCoAlarmClusterAlarmMutedEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterAlarmMutedEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterMuteEndedEvent {
+
+ public SmokeCoAlarmClusterMuteEndedEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterMuteEndedEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterInterconnectSmokeAlarmEvent {
+
+ public SmokeCoAlarmClusterInterconnectSmokeAlarmEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterInterconnectSmokeAlarmEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterInterconnectCOAlarmEvent {
+
+ public SmokeCoAlarmClusterInterconnectCOAlarmEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterInterconnectCOAlarmEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
+ public static class SmokeCoAlarmClusterAllClearEvent {
+
+ public SmokeCoAlarmClusterAllClearEvent() {}
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("SmokeCoAlarmClusterAllClearEvent {\n");
+ output.append("}\n");
+ return output.toString();
+ }
+ }
+
public static class DoorLockClusterDoorLockAlarmEvent {
public Integer alarmCode;
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
index d6b41b24ba33de..436fd8eb0aac41 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
@@ -154,6 +154,9 @@ public static String clusterIdToName(long clusterId) {
if (clusterId == 91L) {
return "AirQuality";
}
+ if (clusterId == 92L) {
+ return "SmokeCoAlarm";
+ }
if (clusterId == 113L) {
return "HepaFilterMonitoring";
}
@@ -2052,6 +2055,63 @@ public static String attributeIdToName(long clusterId, long attributeId) {
}
return "";
}
+ if (clusterId == 92L) {
+ if (attributeId == 0L) {
+ return "ExpressedState";
+ }
+ if (attributeId == 1L) {
+ return "SmokeState";
+ }
+ if (attributeId == 2L) {
+ return "COState";
+ }
+ if (attributeId == 3L) {
+ return "BatteryAlert";
+ }
+ if (attributeId == 4L) {
+ return "DeviceMuted";
+ }
+ if (attributeId == 5L) {
+ return "TestInProgress";
+ }
+ if (attributeId == 6L) {
+ return "HardwareFaultAlert";
+ }
+ if (attributeId == 7L) {
+ return "EndOfServiceAlert";
+ }
+ if (attributeId == 8L) {
+ return "InterconnectSmokeAlarm";
+ }
+ if (attributeId == 9L) {
+ return "InterconnectCOAlarm";
+ }
+ if (attributeId == 10L) {
+ return "ContaminationState";
+ }
+ if (attributeId == 11L) {
+ return "SensitivityLevel";
+ }
+ if (attributeId == 65528L) {
+ return "GeneratedCommandList";
+ }
+ if (attributeId == 65529L) {
+ return "AcceptedCommandList";
+ }
+ if (attributeId == 65530L) {
+ return "EventList";
+ }
+ if (attributeId == 65531L) {
+ return "AttributeList";
+ }
+ if (attributeId == 65532L) {
+ return "FeatureMap";
+ }
+ if (attributeId == 65533L) {
+ return "ClusterRevision";
+ }
+ return "";
+ }
if (clusterId == 113L) {
if (attributeId == 0L) {
return "Condition";
@@ -4829,6 +4889,42 @@ public static String eventIdToName(long clusterId, long eventId) {
if (clusterId == 91L) {
return "";
}
+ if (clusterId == 92L) {
+ if (eventId == 0L) {
+ return "SmokeAlarm";
+ }
+ if (eventId == 1L) {
+ return "COAlarm";
+ }
+ if (eventId == 2L) {
+ return "LowBattery";
+ }
+ if (eventId == 3L) {
+ return "HardwareFault";
+ }
+ if (eventId == 4L) {
+ return "EndOfService";
+ }
+ if (eventId == 5L) {
+ return "SelfTestComplete";
+ }
+ if (eventId == 6L) {
+ return "AlarmMuted";
+ }
+ if (eventId == 7L) {
+ return "MuteEnded";
+ }
+ if (eventId == 8L) {
+ return "InterconnectSmokeAlarm";
+ }
+ if (eventId == 9L) {
+ return "InterconnectCOAlarm";
+ }
+ if (eventId == 10L) {
+ return "AllClear";
+ }
+ return "";
+ }
if (clusterId == 113L) {
return "";
}
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
index a85e4501ab5996..c263cb7b870b97 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
@@ -7462,6 +7462,102 @@ public void onError(Exception ex) {
}
}
+ public static class DelegatedSmokeCoAlarmClusterGeneratedCommandListAttributeCallback
+ implements ChipClusters.SmokeCoAlarmCluster.GeneratedCommandListAttributeCallback,
+ DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+
+ public static class DelegatedSmokeCoAlarmClusterAcceptedCommandListAttributeCallback
+ implements ChipClusters.SmokeCoAlarmCluster.AcceptedCommandListAttributeCallback,
+ DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+
+ public static class DelegatedSmokeCoAlarmClusterEventListAttributeCallback
+ implements ChipClusters.SmokeCoAlarmCluster.EventListAttributeCallback,
+ DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+
+ public static class DelegatedSmokeCoAlarmClusterAttributeListAttributeCallback
+ implements ChipClusters.SmokeCoAlarmCluster.AttributeListAttributeCallback,
+ DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+
public static class DelegatedHepaFilterMonitoringClusterGeneratedCommandListAttributeCallback
implements ChipClusters.HepaFilterMonitoringCluster.GeneratedCommandListAttributeCallback,
DelegatedClusterCallback {
@@ -15455,6 +15551,11 @@ public Map initializeClusterMap() {
(ptr, endpointId) -> new ChipClusters.AirQualityCluster(ptr, endpointId),
new HashMap<>());
clusterMap.put("airQuality", airQualityClusterInfo);
+ ClusterInfo smokeCoAlarmClusterInfo =
+ new ClusterInfo(
+ (ptr, endpointId) -> new ChipClusters.SmokeCoAlarmCluster(ptr, endpointId),
+ new HashMap<>());
+ clusterMap.put("smokeCoAlarm", smokeCoAlarmClusterInfo);
ClusterInfo hepaFilterMonitoringClusterInfo =
new ClusterInfo(
(ptr, endpointId) -> new ChipClusters.HepaFilterMonitoringCluster(ptr, endpointId),
@@ -15736,6 +15837,7 @@ public void combineCommand(
destination.get("icdManagement").combineCommands(source.get("icdManagement"));
destination.get("modeSelect").combineCommands(source.get("modeSelect"));
destination.get("airQuality").combineCommands(source.get("airQuality"));
+ destination.get("smokeCoAlarm").combineCommands(source.get("smokeCoAlarm"));
destination.get("hepaFilterMonitoring").combineCommands(source.get("hepaFilterMonitoring"));
destination
.get("activatedCarbonFilterMonitoring")
@@ -17895,6 +17997,20 @@ public Map> getCommandMap() {
commandMap.put("modeSelect", modeSelectClusterInteractionInfoMap);
Map airQualityClusterInteractionInfoMap = new LinkedHashMap<>();
commandMap.put("airQuality", airQualityClusterInteractionInfoMap);
+ Map smokeCoAlarmClusterInteractionInfoMap = new LinkedHashMap<>();
+ Map smokeCoAlarmselfTestRequestCommandParams =
+ new LinkedHashMap();
+ InteractionInfo smokeCoAlarmselfTestRequestInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.SmokeCoAlarmCluster) cluster)
+ .selfTestRequest((DefaultClusterCallback) callback);
+ },
+ () -> new DelegatedDefaultClusterCallback(),
+ smokeCoAlarmselfTestRequestCommandParams);
+ smokeCoAlarmClusterInteractionInfoMap.put(
+ "selfTestRequest", smokeCoAlarmselfTestRequestInteractionInfo);
+ commandMap.put("smokeCoAlarm", smokeCoAlarmClusterInteractionInfoMap);
Map hepaFilterMonitoringClusterInteractionInfoMap =
new LinkedHashMap<>();
commandMap.put("hepaFilterMonitoring", hepaFilterMonitoringClusterInteractionInfoMap);
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 16a413ea55902b..b81327408a5a33 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -4026,6 +4026,129 @@ class ChipClusters:
},
},
}
+ _SMOKE_CO_ALARM_CLUSTER_INFO = {
+ "clusterName": "SmokeCoAlarm",
+ "clusterId": 0x0000005C,
+ "commands": {
+ 0x00000000: {
+ "commandId": 0x00000000,
+ "commandName": "SelfTestRequest",
+ "args": {
+ },
+ },
+ },
+ "attributes": {
+ 0x00000000: {
+ "attributeName": "ExpressedState",
+ "attributeId": 0x00000000,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000001: {
+ "attributeName": "SmokeState",
+ "attributeId": 0x00000001,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000002: {
+ "attributeName": "COState",
+ "attributeId": 0x00000002,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000003: {
+ "attributeName": "BatteryAlert",
+ "attributeId": 0x00000003,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000004: {
+ "attributeName": "DeviceMuted",
+ "attributeId": 0x00000004,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000005: {
+ "attributeName": "TestInProgress",
+ "attributeId": 0x00000005,
+ "type": "bool",
+ "reportable": True,
+ },
+ 0x00000006: {
+ "attributeName": "HardwareFaultAlert",
+ "attributeId": 0x00000006,
+ "type": "bool",
+ "reportable": True,
+ },
+ 0x00000007: {
+ "attributeName": "EndOfServiceAlert",
+ "attributeId": 0x00000007,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000008: {
+ "attributeName": "InterconnectSmokeAlarm",
+ "attributeId": 0x00000008,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000009: {
+ "attributeName": "InterconnectCOAlarm",
+ "attributeId": 0x00000009,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000000A: {
+ "attributeName": "ContaminationState",
+ "attributeId": 0x0000000A,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000000B: {
+ "attributeName": "SensitivityLevel",
+ "attributeId": 0x0000000B,
+ "type": "int",
+ "reportable": True,
+ "writable": True,
+ },
+ 0x0000FFF8: {
+ "attributeName": "GeneratedCommandList",
+ "attributeId": 0x0000FFF8,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFF9: {
+ "attributeName": "AcceptedCommandList",
+ "attributeId": 0x0000FFF9,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFA: {
+ "attributeName": "EventList",
+ "attributeId": 0x0000FFFA,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFB: {
+ "attributeName": "AttributeList",
+ "attributeId": 0x0000FFFB,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFC: {
+ "attributeName": "FeatureMap",
+ "attributeId": 0x0000FFFC,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFD: {
+ "attributeName": "ClusterRevision",
+ "attributeId": 0x0000FFFD,
+ "type": "int",
+ "reportable": True,
+ },
+ },
+ }
_HEPA_FILTER_MONITORING_CLUSTER_INFO = {
"clusterName": "HepaFilterMonitoring",
"clusterId": 0x00000071,
@@ -10167,6 +10290,7 @@ class ChipClusters:
0x00000046: _ICD_MANAGEMENT_CLUSTER_INFO,
0x00000050: _MODE_SELECT_CLUSTER_INFO,
0x0000005B: _AIR_QUALITY_CLUSTER_INFO,
+ 0x0000005C: _SMOKE_CO_ALARM_CLUSTER_INFO,
0x00000071: _HEPA_FILTER_MONITORING_CLUSTER_INFO,
0x00000072: _ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER_INFO,
0x00000073: _CERAMIC_FILTER_MONITORING_CLUSTER_INFO,
@@ -10249,6 +10373,7 @@ class ChipClusters:
"IcdManagement": _ICD_MANAGEMENT_CLUSTER_INFO,
"ModeSelect": _MODE_SELECT_CLUSTER_INFO,
"AirQuality": _AIR_QUALITY_CLUSTER_INFO,
+ "SmokeCoAlarm": _SMOKE_CO_ALARM_CLUSTER_INFO,
"HepaFilterMonitoring": _HEPA_FILTER_MONITORING_CLUSTER_INFO,
"ActivatedCarbonFilterMonitoring": _ACTIVATED_CARBON_FILTER_MONITORING_CLUSTER_INFO,
"CeramicFilterMonitoring": _CERAMIC_FILTER_MONITORING_CLUSTER_INFO,
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index dbcc7d61ff8e64..19eac70e7a158c 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -15262,6 +15262,609 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
value: 'uint' = 0
+@dataclass
+class SmokeCoAlarm(Cluster):
+ id: typing.ClassVar[int] = 0x005C
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="expressedState", Tag=0x00000000, Type=SmokeCoAlarm.Enums.ExpressedStateEnum),
+ ClusterObjectFieldDescriptor(Label="smokeState", Tag=0x00000001, Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]),
+ ClusterObjectFieldDescriptor(Label="COState", Tag=0x00000002, Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]),
+ ClusterObjectFieldDescriptor(Label="batteryAlert", Tag=0x00000003, Type=SmokeCoAlarm.Enums.AlarmStateEnum),
+ ClusterObjectFieldDescriptor(Label="deviceMuted", Tag=0x00000004, Type=typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum]),
+ ClusterObjectFieldDescriptor(Label="testInProgress", Tag=0x00000005, Type=bool),
+ ClusterObjectFieldDescriptor(Label="hardwareFaultAlert", Tag=0x00000006, Type=bool),
+ ClusterObjectFieldDescriptor(Label="endOfServiceAlert", Tag=0x00000007, Type=SmokeCoAlarm.Enums.EndOfServiceEnum),
+ ClusterObjectFieldDescriptor(Label="interconnectSmokeAlarm", Tag=0x00000008, Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]),
+ ClusterObjectFieldDescriptor(Label="interconnectCOAlarm", Tag=0x00000009, Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]),
+ ClusterObjectFieldDescriptor(Label="contaminationState", Tag=0x0000000A, Type=typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum]),
+ ClusterObjectFieldDescriptor(Label="sensitivityLevel", Tag=0x0000000B, Type=typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum]),
+ ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
+ ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
+ ClusterObjectFieldDescriptor(Label="eventList", Tag=0x0000FFFA, Type=typing.List[uint]),
+ ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
+ ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=uint),
+ ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
+ ])
+
+ expressedState: 'SmokeCoAlarm.Enums.ExpressedStateEnum' = None
+ smokeState: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+ COState: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+ batteryAlert: 'SmokeCoAlarm.Enums.AlarmStateEnum' = None
+ deviceMuted: 'typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum]' = None
+ testInProgress: 'bool' = None
+ hardwareFaultAlert: 'bool' = None
+ endOfServiceAlert: 'SmokeCoAlarm.Enums.EndOfServiceEnum' = None
+ interconnectSmokeAlarm: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+ interconnectCOAlarm: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+ contaminationState: 'typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum]' = None
+ sensitivityLevel: 'typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum]' = None
+ generatedCommandList: 'typing.List[uint]' = None
+ acceptedCommandList: 'typing.List[uint]' = None
+ eventList: 'typing.List[uint]' = None
+ attributeList: 'typing.List[uint]' = None
+ featureMap: 'uint' = None
+ clusterRevision: 'uint' = None
+
+ class Enums:
+ class AlarmStateEnum(MatterIntEnum):
+ kUnknown = 0x00
+ kNormal = 0x01
+ kWarning = 0x02
+ kCritical = 0x03
+ # All received enum values that are not listed above will be mapped
+ # to kUnknownEnumValue. This is a helper enum value that should only
+ # be used by code to process how it handles receiving and unknown
+ # enum value. This specific should never be transmitted.
+ kUnknownEnumValue = 4,
+
+ class ContaminationStateEnum(MatterIntEnum):
+ kUnknown = 0x00
+ kNormal = 0x01
+ kLow = 0x02
+ kWarning = 0x03
+ kCritical = 0x04
+ # All received enum values that are not listed above will be mapped
+ # to kUnknownEnumValue. This is a helper enum value that should only
+ # be used by code to process how it handles receiving and unknown
+ # enum value. This specific should never be transmitted.
+ kUnknownEnumValue = 5,
+
+ class EndOfServiceEnum(MatterIntEnum):
+ kUnknown = 0x00
+ kExpired = 0x01
+ kNormal = 0x02
+ # All received enum values that are not listed above will be mapped
+ # to kUnknownEnumValue. This is a helper enum value that should only
+ # be used by code to process how it handles receiving and unknown
+ # enum value. This specific should never be transmitted.
+ kUnknownEnumValue = 3,
+
+ class ExpressedStateEnum(MatterIntEnum):
+ kNormal = 0x00
+ kSmokeAlarm = 0x01
+ kCOAlarm = 0x02
+ kBatteryAlert = 0x03
+ kTesting = 0x04
+ kHardwareFault = 0x05
+ kEndOfService = 0x06
+ kInterconnectSmoke = 0x07
+ kInterconnectCO = 0x08
+ # All received enum values that are not listed above will be mapped
+ # to kUnknownEnumValue. This is a helper enum value that should only
+ # be used by code to process how it handles receiving and unknown
+ # enum value. This specific should never be transmitted.
+ kUnknownEnumValue = 9,
+
+ class MuteStateEnum(MatterIntEnum):
+ kUnknown = 0x00
+ kNotMuted = 0x01
+ kMuted = 0x02
+ # All received enum values that are not listed above will be mapped
+ # to kUnknownEnumValue. This is a helper enum value that should only
+ # be used by code to process how it handles receiving and unknown
+ # enum value. This specific should never be transmitted.
+ kUnknownEnumValue = 3,
+
+ class SensitivityEnum(MatterIntEnum):
+ kHigh = 0x00
+ kStandard = 0x01
+ kLow = 0x02
+ # All received enum values that are not listed above will be mapped
+ # to kUnknownEnumValue. This is a helper enum value that should only
+ # be used by code to process how it handles receiving and unknown
+ # enum value. This specific should never be transmitted.
+ kUnknownEnumValue = 3,
+
+ class Bitmaps:
+ class SmokeCOAlarmFeature(IntFlag):
+ kSmokeAlarm = 0x1
+ kCoAlarm = 0x2
+
+ class Commands:
+ @dataclass
+ class SelfTestRequest(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x005C
+ command_id: typing.ClassVar[int] = 0x00000000
+ is_client: typing.ClassVar[bool] = True
+ response_type: typing.ClassVar[str] = None
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ class Attributes:
+ @dataclass
+ class ExpressedState(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000000
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=SmokeCoAlarm.Enums.ExpressedStateEnum)
+
+ value: 'SmokeCoAlarm.Enums.ExpressedStateEnum' = 0
+
+ @dataclass
+ class SmokeState(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000001
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum])
+
+ value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+
+ @dataclass
+ class COState(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000002
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum])
+
+ value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+
+ @dataclass
+ class BatteryAlert(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000003
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=SmokeCoAlarm.Enums.AlarmStateEnum)
+
+ value: 'SmokeCoAlarm.Enums.AlarmStateEnum' = 0
+
+ @dataclass
+ class DeviceMuted(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000004
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum])
+
+ value: 'typing.Optional[SmokeCoAlarm.Enums.MuteStateEnum]' = None
+
+ @dataclass
+ class TestInProgress(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000005
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=bool)
+
+ value: 'bool' = False
+
+ @dataclass
+ class HardwareFaultAlert(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000006
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=bool)
+
+ value: 'bool' = False
+
+ @dataclass
+ class EndOfServiceAlert(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000007
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=SmokeCoAlarm.Enums.EndOfServiceEnum)
+
+ value: 'SmokeCoAlarm.Enums.EndOfServiceEnum' = 0
+
+ @dataclass
+ class InterconnectSmokeAlarm(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000008
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum])
+
+ value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+
+ @dataclass
+ class InterconnectCOAlarm(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000009
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum])
+
+ value: 'typing.Optional[SmokeCoAlarm.Enums.AlarmStateEnum]' = None
+
+ @dataclass
+ class ContaminationState(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000000A
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum])
+
+ value: 'typing.Optional[SmokeCoAlarm.Enums.ContaminationStateEnum]' = None
+
+ @dataclass
+ class SensitivityLevel(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000000B
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum])
+
+ value: 'typing.Optional[SmokeCoAlarm.Enums.SensitivityEnum]' = None
+
+ @dataclass
+ class GeneratedCommandList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFF8
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class AcceptedCommandList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFF9
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class EventList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFA
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class AttributeList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFB
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class FeatureMap(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFC
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=uint)
+
+ value: 'uint' = 0
+
+ @dataclass
+ class ClusterRevision(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFD
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=uint)
+
+ value: 'uint' = 0
+
+ class Events:
+ @dataclass
+ class SmokeAlarm(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000000
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class COAlarm(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000001
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class LowBattery(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000002
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class HardwareFault(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000003
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class EndOfService(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000004
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class SelfTestComplete(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000005
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class AlarmMuted(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000006
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class MuteEnded(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000007
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class InterconnectSmokeAlarm(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000008
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class InterconnectCOAlarm(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000009
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class AllClear(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005C
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x0000000A
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+
@dataclass
class HepaFilterMonitoring(Cluster):
id: typing.ClassVar[int] = 0x0071
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index 70f305e78f237b..365eb7462050e9 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -8210,6 +8210,277 @@ static id _Nullable DecodeAttributeValueForAirQualityCluster(
*aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
return nil;
}
+static id _Nullable DecodeAttributeValueForSmokeCOAlarmCluster(
+ AttributeId aAttributeId, TLV::TLVReader & aReader, CHIP_ERROR * aError)
+{
+ using namespace Clusters::SmokeCoAlarm;
+ switch (aAttributeId) {
+ case Attributes::ExpressedState::Id: {
+ using TypeInfo = Attributes::ExpressedState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::SmokeState::Id: {
+ using TypeInfo = Attributes::SmokeState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::COState::Id: {
+ using TypeInfo = Attributes::COState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::BatteryAlert::Id: {
+ using TypeInfo = Attributes::BatteryAlert::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::DeviceMuted::Id: {
+ using TypeInfo = Attributes::DeviceMuted::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::TestInProgress::Id: {
+ using TypeInfo = Attributes::TestInProgress::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithBool:cppValue];
+ return value;
+ }
+ case Attributes::HardwareFaultAlert::Id: {
+ using TypeInfo = Attributes::HardwareFaultAlert::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithBool:cppValue];
+ return value;
+ }
+ case Attributes::EndOfServiceAlert::Id: {
+ using TypeInfo = Attributes::EndOfServiceAlert::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::InterconnectSmokeAlarm::Id: {
+ using TypeInfo = Attributes::InterconnectSmokeAlarm::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::InterconnectCOAlarm::Id: {
+ using TypeInfo = Attributes::InterconnectCOAlarm::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::ContaminationState::Id: {
+ using TypeInfo = Attributes::ContaminationState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::SensitivityLevel::Id: {
+ using TypeInfo = Attributes::SensitivityLevel::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::GeneratedCommandList::Id: {
+ using TypeInfo = Attributes::GeneratedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::AcceptedCommandList::Id: {
+ using TypeInfo = Attributes::AcceptedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::EventList::Id: {
+ using TypeInfo = Attributes::EventList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::AttributeList::Id: {
+ using TypeInfo = Attributes::AttributeList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::FeatureMap::Id: {
+ using TypeInfo = Attributes::FeatureMap::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedInt:cppValue];
+ return value;
+ }
+ case Attributes::ClusterRevision::Id: {
+ using TypeInfo = Attributes::ClusterRevision::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedShort:cppValue];
+ return value;
+ }
+ default: {
+ break;
+ }
+ }
+
+ *aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
+ return nil;
+}
static id _Nullable DecodeAttributeValueForHEPAFilterMonitoringCluster(
AttributeId aAttributeId, TLV::TLVReader & aReader, CHIP_ERROR * aError)
{
@@ -19963,6 +20234,9 @@ id _Nullable MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::T
case Clusters::AirQuality::Id: {
return DecodeAttributeValueForAirQualityCluster(aPath.mAttributeId, aReader, aError);
}
+ case Clusters::SmokeCoAlarm::Id: {
+ return DecodeAttributeValueForSmokeCOAlarmCluster(aPath.mAttributeId, aReader, aError);
+ }
case Clusters::HepaFilterMonitoring::Id: {
return DecodeAttributeValueForHEPAFilterMonitoringCluster(aPath.mAttributeId, aReader, aError);
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 4cd60c44d3cd15..635b637054f74c 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -7527,6 +7527,253 @@ MTR_NEWLY_AVAILABLE
@end
+/**
+ * Cluster Smoke CO Alarm
+ *
+ * This cluster provides an interface for observing and managing the state of smoke and CO alarms.
+ */
+MTR_NEWLY_AVAILABLE
+@interface MTRBaseClusterSmokeCOAlarm : MTRCluster
+
+- (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device
+ endpointID:(NSNumber *)endpointID
+ queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER MTR_NEWLY_AVAILABLE;
+
+/**
+ * Command SelfTestRequest
+ *
+ * This command SHALL initiate a device self-test.
+ */
+- (void)selfTestRequestWithParams:(MTRSmokeCOAlarmClusterSelfTestRequestParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+- (void)selfTestRequestWithCompletion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeExpressedStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeExpressedStateWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeExpressedStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeSmokeStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeSmokeStateWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSmokeStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeCOStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeCOStateWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCOStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeBatteryAlertWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeBatteryAlertWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeBatteryAlertWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeDeviceMutedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeDeviceMutedWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeDeviceMutedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeTestInProgressWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeTestInProgressWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeTestInProgressWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeHardwareFaultAlertWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeHardwareFaultAlertWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeHardwareFaultAlertWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeEndOfServiceAlertWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeEndOfServiceAlertWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEndOfServiceAlertWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeInterconnectSmokeAlarmWithCompletion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeInterconnectSmokeAlarmWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInterconnectSmokeAlarmWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeInterconnectCOAlarmWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeInterconnectCOAlarmWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeInterconnectCOAlarmWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeContaminationStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeContaminationStateWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeContaminationStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeSensitivityLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeSensitivityLevelWithValue:(NSNumber * _Nonnull)value
+ completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeSensitivityLevelWithValue:(NSNumber * _Nonnull)value
+ params:(MTRWriteParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeSensitivityLevelWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSensitivityLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeEventListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeEventListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEventListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
/**
* Cluster HEPA Filter Monitoring
*
@@ -21858,6 +22105,56 @@ typedef NS_OPTIONS(uint32_t, MTRAirQualityFeature) {
MTRAirQualityFeatureExtremelyPoor MTR_NEWLY_AVAILABLE = 0x8,
} MTR_NEWLY_AVAILABLE;
+typedef NS_ENUM(uint8_t, MTRSmokeCOAlarmAlarmState) {
+ MTRSmokeCOAlarmAlarmStateUnknown MTR_NEWLY_AVAILABLE = 0x00,
+ MTRSmokeCOAlarmAlarmStateNormal MTR_NEWLY_AVAILABLE = 0x01,
+ MTRSmokeCOAlarmAlarmStateWarning MTR_NEWLY_AVAILABLE = 0x02,
+ MTRSmokeCOAlarmAlarmStateCritical MTR_NEWLY_AVAILABLE = 0x03,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_ENUM(uint8_t, MTRSmokeCOAlarmContaminationState) {
+ MTRSmokeCOAlarmContaminationStateUnknown MTR_NEWLY_AVAILABLE = 0x00,
+ MTRSmokeCOAlarmContaminationStateNormal MTR_NEWLY_AVAILABLE = 0x01,
+ MTRSmokeCOAlarmContaminationStateLow MTR_NEWLY_AVAILABLE = 0x02,
+ MTRSmokeCOAlarmContaminationStateWarning MTR_NEWLY_AVAILABLE = 0x03,
+ MTRSmokeCOAlarmContaminationStateCritical MTR_NEWLY_AVAILABLE = 0x04,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_ENUM(uint8_t, MTRSmokeCOAlarmEndOfService) {
+ MTRSmokeCOAlarmEndOfServiceUnknown MTR_NEWLY_AVAILABLE = 0x00,
+ MTRSmokeCOAlarmEndOfServiceExpired MTR_NEWLY_AVAILABLE = 0x01,
+ MTRSmokeCOAlarmEndOfServiceNormal MTR_NEWLY_AVAILABLE = 0x02,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_ENUM(uint8_t, MTRSmokeCOAlarmExpressedState) {
+ MTRSmokeCOAlarmExpressedStateNormal MTR_NEWLY_AVAILABLE = 0x00,
+ MTRSmokeCOAlarmExpressedStateSmokeAlarm MTR_NEWLY_AVAILABLE = 0x01,
+ MTRSmokeCOAlarmExpressedStateCOAlarm MTR_NEWLY_AVAILABLE = 0x02,
+ MTRSmokeCOAlarmExpressedStateBatteryAlert MTR_NEWLY_AVAILABLE = 0x03,
+ MTRSmokeCOAlarmExpressedStateTesting MTR_NEWLY_AVAILABLE = 0x04,
+ MTRSmokeCOAlarmExpressedStateHardwareFault MTR_NEWLY_AVAILABLE = 0x05,
+ MTRSmokeCOAlarmExpressedStateEndOfService MTR_NEWLY_AVAILABLE = 0x06,
+ MTRSmokeCOAlarmExpressedStateInterconnectSmoke MTR_NEWLY_AVAILABLE = 0x07,
+ MTRSmokeCOAlarmExpressedStateInterconnectCO MTR_NEWLY_AVAILABLE = 0x08,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_ENUM(uint8_t, MTRSmokeCOAlarmMuteState) {
+ MTRSmokeCOAlarmMuteStateUnknown MTR_NEWLY_AVAILABLE = 0x00,
+ MTRSmokeCOAlarmMuteStateNotMuted MTR_NEWLY_AVAILABLE = 0x01,
+ MTRSmokeCOAlarmMuteStateMuted MTR_NEWLY_AVAILABLE = 0x02,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_ENUM(uint8_t, MTRSmokeCOAlarmSensitivity) {
+ MTRSmokeCOAlarmSensitivityHigh MTR_NEWLY_AVAILABLE = 0x00,
+ MTRSmokeCOAlarmSensitivityStandard MTR_NEWLY_AVAILABLE = 0x01,
+ MTRSmokeCOAlarmSensitivityLow MTR_NEWLY_AVAILABLE = 0x02,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_OPTIONS(uint32_t, MTRSmokeCOAlarmFeature) {
+ MTRSmokeCOAlarmFeatureSmokeAlarm MTR_NEWLY_AVAILABLE = 0x1,
+ MTRSmokeCOAlarmFeatureCOAlarm MTR_NEWLY_AVAILABLE = 0x2,
+} MTR_NEWLY_AVAILABLE;
+
typedef NS_ENUM(uint8_t, MTRHEPAFilterMonitoringChangeIndication) {
MTRHEPAFilterMonitoringChangeIndicationOK MTR_NEWLY_AVAILABLE = 0x00,
MTRHEPAFilterMonitoringChangeIndicationWarning MTR_NEWLY_AVAILABLE = 0x01,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index e0f40b28570567..771c31f2c964df 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -46538,6 +46538,890 @@ + (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheC
@end
+@implementation MTRBaseClusterSmokeCOAlarm
+
+- (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
+{
+ if (self = [super initWithQueue:queue]) {
+ if (device == nil) {
+ return nil;
+ }
+
+ _device = device;
+ _endpoint = [endpointID unsignedShortValue];
+ }
+ return self;
+}
+
+- (void)selfTestRequestWithCompletion:(MTRStatusCompletion)completion
+{
+ [self selfTestRequestWithParams:nil completion:completion];
+}
+- (void)selfTestRequestWithParams:(MTRSmokeCOAlarmClusterSelfTestRequestParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ auto * bridge = new MTRCommandSuccessCallbackBridge(
+ self.callbackQueue,
+ ^(id _Nullable value, NSError * _Nullable error) {
+ completion(error);
+ },
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session, CommandSuccessCallbackType successCb,
+ MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+ auto * typedBridge = static_cast(bridge);
+ Optional timedInvokeTimeoutMs;
+ Optional invokeTimeout;
+ ListFreer listFreer;
+ SmokeCoAlarm::Commands::SelfTestRequest::Type request;
+ if (params != nil) {
+ if (params.timedInvokeTimeoutMs != nil) {
+ params.timedInvokeTimeoutMs = MTRClampedNumber(params.timedInvokeTimeoutMs, @(1), @(UINT16_MAX));
+ timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
+ }
+ if (params.serverSideProcessingTimeout != nil) {
+ // Clamp to a number of seconds that will not overflow 32-bit
+ // int when converted to ms.
+ auto * serverSideProcessingTimeout = MTRClampedNumber(params.serverSideProcessingTimeout, @(0), @(UINT16_MAX));
+ invokeTimeout.SetValue(Seconds16(serverSideProcessingTimeout.unsignedShortValue));
+ }
+ }
+
+ return MTRStartInvokeInteraction(typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint,
+ timedInvokeTimeoutMs, invokeTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)readAttributeExpressedStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::ExpressedState::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeExpressedStateWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::ExpressedState::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeExpressedStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterExpressedStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterExpressedStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::ExpressedState::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeSmokeStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::SmokeState::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeSmokeStateWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::SmokeState::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeSmokeStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterAlarmStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterAlarmStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::SmokeState::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeCOStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::COState::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeCOStateWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::COState::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeCOStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterAlarmStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterAlarmStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::COState::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeBatteryAlertWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::BatteryAlert::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeBatteryAlertWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::BatteryAlert::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeBatteryAlertWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterAlarmStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterAlarmStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::BatteryAlert::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeDeviceMutedWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::DeviceMuted::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeDeviceMutedWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::DeviceMuted::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeDeviceMutedWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterMuteStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterMuteStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::DeviceMuted::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeTestInProgressWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::TestInProgress::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeTestInProgressWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::TestInProgress::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeTestInProgressWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::TestInProgress::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeHardwareFaultAlertWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::HardwareFaultAlert::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeHardwareFaultAlertWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::HardwareFaultAlert::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeHardwareFaultAlertWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRBooleanAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::HardwareFaultAlert::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeEndOfServiceAlertWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::EndOfServiceAlert::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeEndOfServiceAlertWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::EndOfServiceAlert::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeEndOfServiceAlertWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterEndOfServiceEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterEndOfServiceEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::EndOfServiceAlert::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeInterconnectSmokeAlarmWithCompletion:(void (^)(
+ NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::InterconnectSmokeAlarm::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeInterconnectSmokeAlarmWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::InterconnectSmokeAlarm::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeInterconnectSmokeAlarmWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterAlarmStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterAlarmStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::InterconnectSmokeAlarm::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeInterconnectCOAlarmWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::InterconnectCOAlarm::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeInterconnectCOAlarmWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::InterconnectCOAlarm::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeInterconnectCOAlarmWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterAlarmStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterAlarmStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::InterconnectCOAlarm::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeContaminationStateWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::ContaminationState::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeContaminationStateWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::ContaminationState::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeContaminationStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterContaminationStateEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterContaminationStateEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::ContaminationState::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeSensitivityLevelWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::SensitivityLevel::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)writeAttributeSensitivityLevelWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
+{
+ [self writeAttributeSensitivityLevelWithValue:(NSNumber * _Nonnull) value params:nil completion:completion];
+}
+- (void)writeAttributeSensitivityLevelWithValue:(NSNumber * _Nonnull)value
+ params:(MTRWriteParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ value = [value copy];
+
+ auto * bridge = new MTRDefaultSuccessCallbackBridge(
+ self.callbackQueue,
+ ^(id _Nullable ignored, NSError * _Nullable error) {
+ completion(error);
+ },
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb,
+ MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+ chip::Optional timedWriteTimeout;
+ if (params != nil) {
+ if (params.timedWriteTimeout != nil) {
+ timedWriteTimeout.SetValue(params.timedWriteTimeout.unsignedShortValue);
+ }
+ }
+
+ ListFreer listFreer;
+ using TypeInfo = SmokeCoAlarm::Attributes::SensitivityLevel::TypeInfo;
+ TypeInfo::Type cppValue;
+ cppValue = static_cast>(value.unsignedCharValue);
+
+ chip::Controller::ClusterBase cppCluster(exchangeManager, session, self->_endpoint);
+ return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)subscribeAttributeSensitivityLevelWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::SensitivityLevel::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeSensitivityLevelWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmClusterSensitivityEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmClusterSensitivityEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::SensitivityLevel::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::GeneratedCommandList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::GeneratedCommandList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::GeneratedCommandList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::AcceptedCommandList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::AcceptedCommandList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::AcceptedCommandList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeEventListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::EventList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeEventListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::EventList::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeEventListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmEventListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(SmokeCOAlarmEventListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::EventList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::AttributeList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::AttributeList::TypeInfo;
+ MTRSubscribeAttribute(
+ params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRSmokeCOAlarmAttributeListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(SmokeCOAlarmAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::AttributeList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::FeatureMap::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::FeatureMap::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::FeatureMap::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = SmokeCoAlarm::Attributes::ClusterRevision::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = SmokeCoAlarm::Attributes::ClusterRevision::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = SmokeCoAlarm::Attributes::ClusterRevision::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+@end
+
@implementation MTRBaseClusterHEPAFilterMonitoring
- (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
index fb9bd379fd1b5f..56acf329bad4af 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
@@ -205,6 +205,11 @@
@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
@end
+@interface MTRBaseClusterSmokeCOAlarm ()
+@property (nonatomic, strong, readonly) MTRBaseDevice * device;
+@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
+@end
+
@interface MTRBaseClusterHEPAFilterMonitoring ()
@property (nonatomic, strong, readonly) MTRBaseDevice * device;
@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
index d1da445d761ecb..789bb5d45a8245 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
@@ -384,6 +384,26 @@ typedef void (*NullableGroupKeyManagementClusterGroupKeySecurityPolicyEnumAttrib
typedef void (*AirQualityClusterAirQualityEnumAttributeCallback)(void *, chip::app::Clusters::AirQuality::AirQualityEnum);
typedef void (*NullableAirQualityClusterAirQualityEnumAttributeCallback)(
void *, const chip::app::DataModel::Nullable &);
+typedef void (*SmokeCOAlarmClusterAlarmStateEnumAttributeCallback)(void *, chip::app::Clusters::SmokeCoAlarm::AlarmStateEnum);
+typedef void (*NullableSmokeCOAlarmClusterAlarmStateEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
+typedef void (*SmokeCOAlarmClusterContaminationStateEnumAttributeCallback)(
+ void *, chip::app::Clusters::SmokeCoAlarm::ContaminationStateEnum);
+typedef void (*NullableSmokeCOAlarmClusterContaminationStateEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
+typedef void (*SmokeCOAlarmClusterEndOfServiceEnumAttributeCallback)(void *, chip::app::Clusters::SmokeCoAlarm::EndOfServiceEnum);
+typedef void (*NullableSmokeCOAlarmClusterEndOfServiceEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
+typedef void (*SmokeCOAlarmClusterExpressedStateEnumAttributeCallback)(void *,
+ chip::app::Clusters::SmokeCoAlarm::ExpressedStateEnum);
+typedef void (*NullableSmokeCOAlarmClusterExpressedStateEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
+typedef void (*SmokeCOAlarmClusterMuteStateEnumAttributeCallback)(void *, chip::app::Clusters::SmokeCoAlarm::MuteStateEnum);
+typedef void (*NullableSmokeCOAlarmClusterMuteStateEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
+typedef void (*SmokeCOAlarmClusterSensitivityEnumAttributeCallback)(void *, chip::app::Clusters::SmokeCoAlarm::SensitivityEnum);
+typedef void (*NullableSmokeCOAlarmClusterSensitivityEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
typedef void (*HEPAFilterMonitoringClusterChangeIndicationEnumAttributeCallback)(
void *, chip::app::Clusters::HepaFilterMonitoring::ChangeIndicationEnum);
typedef void (*NullableHEPAFilterMonitoringClusterChangeIndicationEnumAttributeCallback)(
@@ -999,6 +1019,14 @@ typedef void (*AirQualityAcceptedCommandListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*AirQualityAttributeListListAttributeCallback)(void * context,
const chip::app::DataModel::DecodableList & data);
+typedef void (*SmokeCOAlarmGeneratedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*SmokeCOAlarmAcceptedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*SmokeCOAlarmEventListListAttributeCallback)(void * context,
+ const chip::app::DataModel::DecodableList & data);
+typedef void (*SmokeCOAlarmAttributeListListAttributeCallback)(void * context,
+ const chip::app::DataModel::DecodableList & data);
typedef void (*HEPAFilterMonitoringGeneratedCommandListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*HEPAFilterMonitoringAcceptedCommandListListAttributeCallback)(
@@ -7171,6 +7199,135 @@ class MTRAirQualityAttributeListListAttributeCallbackSubscriptionBridge
MTRSubscriptionEstablishedHandler mEstablishedHandler;
};
+class MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackSubscriptionBridge
+ : public MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge
+{
+public:
+ MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRSmokeCOAlarmGeneratedCommandListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackSubscriptionBridge
+ : public MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge
+{
+public:
+ MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRSmokeCOAlarmAcceptedCommandListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRSmokeCOAlarmEventListListAttributeCallbackBridge : public MTRCallbackBridge
+{
+public:
+ MTRSmokeCOAlarmEventListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRSmokeCOAlarmEventListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRSmokeCOAlarmEventListListAttributeCallbackSubscriptionBridge : public MTRSmokeCOAlarmEventListListAttributeCallbackBridge
+{
+public:
+ MTRSmokeCOAlarmEventListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRSmokeCOAlarmEventListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRSmokeCOAlarmEventListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRSmokeCOAlarmEventListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRSmokeCOAlarmAttributeListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRSmokeCOAlarmAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRSmokeCOAlarmAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList