From cc7672eb58439649c2b12f3d2112adad6910667d Mon Sep 17 00:00:00 2001
From: mkardous-silabs <84793247+mkardous-silabs@users.noreply.github.com>
Date: Tue, 23 Jul 2024 08:12:17 -0400
Subject: [PATCH] [ICD] Update ICDM XML to match latest spec (#34446)
* Update ICDM xml
* Generated files
* Update Cert Tests
* Fix zap generation
---
.../nxp/zap-lit/contact-sensor-app.matter | 6 +-
.../nxp/zap-lit/contact-sensor-app.zap | 2 +-
.../nxp/zap-sit/contact-sensor-app.matter | 6 +-
.../nxp/zap-sit/contact-sensor-app.zap | 2 +-
.../light-switch-app.matter | 6 +-
.../light-switch-common/light-switch-app.zap | 2 +-
.../light-switch-app/qpg/zap/switch.matter | 6 +-
examples/light-switch-app/qpg/zap/switch.zap | 2 +-
.../lit-icd-common/lit-icd-server-app.matter | 6 +-
.../lit-icd-common/lit-icd-server-app.zap | 2 +-
examples/lock-app/lock-common/lock-app.matter | 6 +-
examples/lock-app/lock-common/lock-app.zap | 2 +-
examples/lock-app/qpg/zap/lock.matter | 6 +-
examples/lock-app/qpg/zap/lock.zap | 2 +-
.../smoke-co-alarm-app.matter | 6 +-
.../smoke-co-alarm-app.zap | 2 +-
examples/window-app/common/window-app.matter | 6 +-
examples/window-app/common/window-app.zap | 2 +-
.../certification/Test_TC_ICDM_1_1.yaml | 2 +-
.../chip/icd-management-cluster.xml | 12 ++-
.../data_model/controller-clusters.matter | 4 +-
.../chip/devicecontroller/ChipClusters.java | 27 ++++++
.../devicecontroller/ClusterIDMapping.java | 1 +
.../devicecontroller/ClusterReadMapping.java | 11 +++
.../cluster/clusters/IcdManagementCluster.kt | 93 +++++++++++++++++++
.../CHIPAttributeTLVValueDecoder.cpp | 16 ++++
.../python/chip/clusters/CHIPClusters.py | 6 ++
.../python/chip/clusters/Objects.py | 19 ++++
.../MTRAttributeSpecifiedCheck.mm | 3 +
.../MTRAttributeTLVValueDecoder.mm | 11 +++
.../CHIP/zap-generated/MTRBaseClusters.h | 7 ++
.../CHIP/zap-generated/MTRBaseClusters.mm | 36 +++++++
.../CHIP/zap-generated/MTRClusterConstants.h | 1 +
.../CHIP/zap-generated/MTRClusterNames.mm | 4 +
.../CHIP/zap-generated/MTRClusters.h | 2 +
.../CHIP/zap-generated/MTRClusters.mm | 5 +
.../zap-generated/attributes/Accessors.cpp | 46 +++++++++
.../zap-generated/attributes/Accessors.h | 6 ++
.../app-common/zap-generated/cluster-enums.h | 1 +
.../zap-generated/cluster-objects.cpp | 2 +
.../zap-generated/cluster-objects.h | 13 +++
.../app-common/zap-generated/ids/Attributes.h | 4 +
.../zap-generated/cluster/Commands.h | 28 +++---
.../cluster/logging/DataModelLogger.cpp | 5 +
.../zap-generated/cluster/Commands.h | 90 ++++++++++++++++++
45 files changed, 486 insertions(+), 41 deletions(-)
diff --git a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter
index 47f4845661fd74..dcfae7fdb2cbc5 100644
--- a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.matter
@@ -1313,7 +1313,7 @@ cluster BooleanState = 69 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1329,6 +1329,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1367,6 +1368,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1706,7 +1708,7 @@ endpoint 0 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0x0007;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
handle command RegisterClient;
handle command RegisterClientResponse;
diff --git a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap
index 64c948a5c8c233..83c1526403104e 100644
--- a/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap
+++ b/examples/contact-sensor-app/nxp/zap-lit/contact-sensor-app.zap
@@ -3834,7 +3834,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter
index d44ca7ddd07d4b..0fb89660b37975 100644
--- a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.matter
@@ -1313,7 +1313,7 @@ cluster BooleanState = 69 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1329,6 +1329,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1367,6 +1368,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1700,7 +1702,7 @@ endpoint 0 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0x0000;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
}
endpoint 1 {
diff --git a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap
index 0b05af158f1bde..ae00575abd3592 100644
--- a/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap
+++ b/examples/contact-sensor-app/nxp/zap-sit/contact-sensor-app.zap
@@ -3696,7 +3696,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter
index 99e5a0605bacae..b437fbdb633d2e 100644
--- a/examples/light-switch-app/light-switch-common/light-switch-app.matter
+++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter
@@ -1937,7 +1937,7 @@ cluster UserLabel = 65 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1953,6 +1953,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1991,6 +1992,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2885,7 +2887,7 @@ endpoint 0 {
callback attribute activeModeDuration;
callback attribute activeModeThreshold;
ram attribute featureMap default = 0x0000;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
}
endpoint 1 {
diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap
index 68a3e015ec0294..ad7f46df3bc97d 100644
--- a/examples/light-switch-app/light-switch-common/light-switch-app.zap
+++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap
@@ -4570,7 +4570,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/light-switch-app/qpg/zap/switch.matter b/examples/light-switch-app/qpg/zap/switch.matter
index cd0204ea46cec8..fa848c35b526ac 100644
--- a/examples/light-switch-app/qpg/zap/switch.matter
+++ b/examples/light-switch-app/qpg/zap/switch.matter
@@ -1734,7 +1734,7 @@ cluster UserLabel = 65 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1750,6 +1750,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1788,6 +1789,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2660,7 +2662,7 @@ endpoint 0 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0x0007;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
handle command RegisterClient;
handle command RegisterClientResponse;
diff --git a/examples/light-switch-app/qpg/zap/switch.zap b/examples/light-switch-app/qpg/zap/switch.zap
index acae7877c92a06..7f00138fc26fbe 100644
--- a/examples/light-switch-app/qpg/zap/switch.zap
+++ b/examples/light-switch-app/qpg/zap/switch.zap
@@ -4651,7 +4651,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter
index ec9f0764564372..4f8b1b55b51f42 100644
--- a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter
+++ b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.matter
@@ -1411,7 +1411,7 @@ cluster BooleanState = 69 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1427,6 +1427,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1465,6 +1466,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1799,7 +1801,7 @@ endpoint 0 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0x0007;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
handle command RegisterClient;
handle command RegisterClientResponse;
diff --git a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap
index 65236d3c49498e..2a75af9025f0d5 100644
--- a/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap
+++ b/examples/lit-icd-app/lit-icd-common/lit-icd-server-app.zap
@@ -3642,7 +3642,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index d53a80f7402b1c..c42fb812cb8d41 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -1754,7 +1754,7 @@ cluster UserLabel = 65 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1770,6 +1770,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1808,6 +1809,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2899,7 +2901,7 @@ endpoint 0 {
callback attribute activeModeDuration;
callback attribute activeModeThreshold;
ram attribute featureMap default = 0x0000;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
}
endpoint 1 {
diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap
index 182645823f1065..605da39d72da56 100644
--- a/examples/lock-app/lock-common/lock-app.zap
+++ b/examples/lock-app/lock-common/lock-app.zap
@@ -5023,7 +5023,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/lock-app/qpg/zap/lock.matter b/examples/lock-app/qpg/zap/lock.matter
index a935c4e7ce3c17..f8794650f14d17 100644
--- a/examples/lock-app/qpg/zap/lock.matter
+++ b/examples/lock-app/qpg/zap/lock.matter
@@ -1410,7 +1410,7 @@ cluster UserLabel = 65 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1426,6 +1426,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1464,6 +1465,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2491,7 +2493,7 @@ endpoint 0 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0x0000;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
}
endpoint 1 {
diff --git a/examples/lock-app/qpg/zap/lock.zap b/examples/lock-app/qpg/zap/lock.zap
index affc31d2d79610..d46b1f63567e2f 100644
--- a/examples/lock-app/qpg/zap/lock.zap
+++ b/examples/lock-app/qpg/zap/lock.zap
@@ -4289,7 +4289,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter
index ceb5b931a22b69..8e2f8a41993005 100644
--- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter
+++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.matter
@@ -1730,7 +1730,7 @@ cluster UserLabel = 65 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1746,6 +1746,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1784,6 +1785,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2233,7 +2235,7 @@ endpoint 0 {
callback attribute acceptedCommandList;
callback attribute attributeList;
ram attribute featureMap default = 1;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
handle command RegisterClient;
handle command RegisterClientResponse;
diff --git a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap
index 4ba684c480c6a5..f63c63c5d33bce 100644
--- a/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap
+++ b/examples/smoke-co-alarm-app/smoke-co-alarm-common/smoke-co-alarm-app.zap
@@ -3715,7 +3715,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter
index a313e96e0a94c6..8c272c7c17dacd 100644
--- a/examples/window-app/common/window-app.matter
+++ b/examples/window-app/common/window-app.matter
@@ -1828,7 +1828,7 @@ cluster UserLabel = 65 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -1844,6 +1844,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -1882,6 +1883,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2481,7 +2483,7 @@ endpoint 0 {
callback attribute eventList;
callback attribute attributeList;
ram attribute featureMap default = 0x0000;
- ram attribute clusterRevision default = 2;
+ ram attribute clusterRevision default = 3;
}
}
endpoint 1 {
diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap
index 87d2ce831e4647..ae2f7195f18070 100644
--- a/examples/window-app/common/window-app.zap
+++ b/examples/window-app/common/window-app.zap
@@ -5205,7 +5205,7 @@
"storageOption": "RAM",
"singleton": 0,
"bounded": 0,
- "defaultValue": "2",
+ "defaultValue": "3",
"reportable": 1,
"minInterval": 1,
"maxInterval": 65534,
diff --git a/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml b/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml
index 08bdb9322b2b1a..fb507fd7a89663 100755
--- a/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ICDM_1_1.yaml
@@ -35,7 +35,7 @@ tests:
command: "readAttribute"
attribute: "ClusterRevision"
response:
- value: 2
+ value: 3
constraints:
type: int16u
diff --git a/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml
index c1e2805de8bf15..533495af167134 100644
--- a/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/icd-management-cluster.xml
@@ -69,7 +69,7 @@ limitations under the License.
-
+
@@ -96,8 +96,17 @@ limitations under the License.
+
+>
+>
+>
+>
+>
+
+
+
IdleModeDuration
ActiveModeDuration
ActiveModeThreshold
@@ -113,6 +122,7 @@ limitations under the License.
UserActiveModeTriggerHint
UserActiveModeTriggerInstruction
OperatingMode
+ MaximumCheckInBackOff
Register a client to the end device
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index be40c3d1b47fce..fafbb2d48d9d14 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -2670,7 +2670,7 @@ cluster BooleanState = 69 {
/** Allows servers to ensure that listed clients are notified when a server is available for communication. */
cluster IcdManagement = 70 {
- revision 2;
+ revision 3;
enum ClientTypeEnum : enum8 {
kPermanent = 0;
@@ -2686,6 +2686,7 @@ cluster IcdManagement = 70 {
kCheckInProtocolSupport = 0x1;
kUserActiveModeTrigger = 0x2;
kLongIdleTimeSupport = 0x4;
+ kDynamicSitLitSupport = 0x8;
}
bitmap UserActiveModeTriggerBitmap : bitmap32 {
@@ -2724,6 +2725,7 @@ cluster IcdManagement = 70 {
provisional readonly attribute optional UserActiveModeTriggerBitmap userActiveModeTriggerHint = 6;
provisional readonly attribute optional char_string<128> userActiveModeTriggerInstruction = 7;
provisional readonly attribute optional OperatingModeEnum operatingMode = 8;
+ provisional readonly attribute optional int32u maximumCheckInBackOff = 9;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
index 5369a5c42d4a26..5975e7387a2897 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
@@ -18601,6 +18601,7 @@ public static class IcdManagementCluster extends BaseChipCluster {
private static final long USER_ACTIVE_MODE_TRIGGER_HINT_ATTRIBUTE_ID = 6L;
private static final long USER_ACTIVE_MODE_TRIGGER_INSTRUCTION_ATTRIBUTE_ID = 7L;
private static final long OPERATING_MODE_ATTRIBUTE_ID = 8L;
+ private static final long MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID = 9L;
private static final long GENERATED_COMMAND_LIST_ATTRIBUTE_ID = 65528L;
private static final long ACCEPTED_COMMAND_LIST_ATTRIBUTE_ID = 65529L;
private static final long EVENT_LIST_ATTRIBUTE_ID = 65530L;
@@ -18985,6 +18986,32 @@ public void onSuccess(byte[] tlv) {
}, OPERATING_MODE_ATTRIBUTE_ID, minInterval, maxInterval);
}
+ public void readMaximumCheckInBackOffAttribute(
+ LongAttributeCallback callback) {
+ ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID);
+
+ readAttribute(new ReportCallbackImpl(callback, path) {
+ @Override
+ public void onSuccess(byte[] tlv) {
+ Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv);
+ callback.onSuccess(value);
+ }
+ }, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID, true);
+ }
+
+ public void subscribeMaximumCheckInBackOffAttribute(
+ LongAttributeCallback callback, int minInterval, int maxInterval) {
+ ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID);
+
+ subscribeAttribute(new ReportCallbackImpl(callback, path) {
+ @Override
+ public void onSuccess(byte[] tlv) {
+ Long value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv);
+ callback.onSuccess(value);
+ }
+ }, MAXIMUM_CHECK_IN_BACK_OFF_ATTRIBUTE_ID, minInterval, maxInterval);
+ }
+
public void readGeneratedCommandListAttribute(
GeneratedCommandListAttributeCallback callback) {
ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, GENERATED_COMMAND_LIST_ATTRIBUTE_ID);
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
index fc0a28a6d4eb0c..38a5c390932d41 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
@@ -5802,6 +5802,7 @@ public enum Attribute {
UserActiveModeTriggerHint(6L),
UserActiveModeTriggerInstruction(7L),
OperatingMode(8L),
+ MaximumCheckInBackOff(9L),
GeneratedCommandList(65528L),
AcceptedCommandList(65529L),
EventList(65530L),
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
index b6a359e031808b..04c849e6c0eb9c 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
@@ -5803,6 +5803,17 @@ private static Map readIcdManagementInteractionInfo() {
readIcdManagementOperatingModeCommandParams
);
result.put("readOperatingModeAttribute", readIcdManagementOperatingModeAttributeInteractionInfo);
+ Map readIcdManagementMaximumCheckInBackOffCommandParams = new LinkedHashMap();
+ InteractionInfo readIcdManagementMaximumCheckInBackOffAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.IcdManagementCluster) cluster).readMaximumCheckInBackOffAttribute(
+ (ChipClusters.LongAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
+ readIcdManagementMaximumCheckInBackOffCommandParams
+ );
+ result.put("readMaximumCheckInBackOffAttribute", readIcdManagementMaximumCheckInBackOffAttributeInteractionInfo);
Map readIcdManagementGeneratedCommandListCommandParams = new LinkedHashMap();
InteractionInfo readIcdManagementGeneratedCommandListAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
diff --git a/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt b/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt
index ddc206eeb28aad..68f206d72e71f4 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt
+++ b/src/controller/java/generated/java/matter/controller/cluster/clusters/IcdManagementCluster.kt
@@ -1066,6 +1066,99 @@ class IcdManagementCluster(
}
}
+ suspend fun readMaximumCheckInBackOffAttribute(): UInt? {
+ val ATTRIBUTE_ID: UInt = 9u
+
+ val attributePath =
+ AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
+
+ val readRequest = ReadRequest(eventPaths = emptyList(), attributePaths = listOf(attributePath))
+
+ val response = controller.read(readRequest)
+
+ if (response.successes.isEmpty()) {
+ logger.log(Level.WARNING, "Read command failed")
+ throw IllegalStateException("Read command failed with failures: ${response.failures}")
+ }
+
+ logger.log(Level.FINE, "Read command succeeded")
+
+ val attributeData =
+ response.successes.filterIsInstance().firstOrNull {
+ it.path.attributeId == ATTRIBUTE_ID
+ }
+
+ requireNotNull(attributeData) { "Maximumcheckinbackoff attribute not found in response" }
+
+ // Decode the TLV data into the appropriate type
+ val tlvReader = TlvReader(attributeData.data)
+ val decodedValue: UInt? =
+ if (tlvReader.isNextTag(AnonymousTag)) {
+ tlvReader.getUInt(AnonymousTag)
+ } else {
+ null
+ }
+
+ return decodedValue
+ }
+
+ suspend fun subscribeMaximumCheckInBackOffAttribute(
+ minInterval: Int,
+ maxInterval: Int,
+ ): Flow {
+ val ATTRIBUTE_ID: UInt = 9u
+ val attributePaths =
+ listOf(
+ AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
+ )
+
+ val subscribeRequest: SubscribeRequest =
+ SubscribeRequest(
+ eventPaths = emptyList(),
+ attributePaths = attributePaths,
+ minInterval = Duration.ofSeconds(minInterval.toLong()),
+ maxInterval = Duration.ofSeconds(maxInterval.toLong()),
+ )
+
+ return controller.subscribe(subscribeRequest).transform { subscriptionState ->
+ when (subscriptionState) {
+ is SubscriptionState.SubscriptionErrorNotification -> {
+ emit(
+ UIntSubscriptionState.Error(
+ Exception(
+ "Subscription terminated with error code: ${subscriptionState.terminationCause}"
+ )
+ )
+ )
+ }
+ is SubscriptionState.NodeStateUpdate -> {
+ val attributeData =
+ subscriptionState.updateState.successes
+ .filterIsInstance()
+ .firstOrNull { it.path.attributeId == ATTRIBUTE_ID }
+
+ requireNotNull(attributeData) {
+ "Maximumcheckinbackoff attribute not found in Node State update"
+ }
+
+ // Decode the TLV data into the appropriate type
+ val tlvReader = TlvReader(attributeData.data)
+ val decodedValue: UInt? =
+ if (tlvReader.isNextTag(AnonymousTag)) {
+ tlvReader.getUInt(AnonymousTag)
+ } else {
+ null
+ }
+
+ decodedValue?.let { emit(UIntSubscriptionState.Success(it)) }
+ }
+ SubscriptionState.SubscriptionEstablished -> {
+ emit(UIntSubscriptionState.SubscriptionEstablished)
+ }
+ }
+ }
+ }
+
suspend fun readGeneratedCommandListAttribute(): GeneratedCommandListAttribute {
val ATTRIBUTE_ID: UInt = 65528u
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index cff767b424b59d..3472866475eb9d 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -12425,6 +12425,22 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
value);
return value;
}
+ case Attributes::MaximumCheckInBackOff::Id: {
+ using TypeInfo = Attributes::MaximumCheckInBackOff::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";
+ jlong jnivalue = static_cast(cppValue);
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ jnivalue, value);
+ return value;
+ }
case Attributes::GeneratedCommandList::Id: {
using TypeInfo = Attributes::GeneratedCommandList::TypeInfo;
TypeInfo::DecodableType cppValue;
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 3b77856a4121d2..7da79a01c52de0 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -4138,6 +4138,12 @@ class ChipClusters:
"type": "int",
"reportable": True,
},
+ 0x00000009: {
+ "attributeName": "MaximumCheckInBackOff",
+ "attributeId": 0x00000009,
+ "type": "int",
+ "reportable": True,
+ },
0x0000FFF8: {
"attributeName": "GeneratedCommandList",
"attributeId": 0x0000FFF8,
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 52e2be80aa74f5..efcad230b34d82 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -14162,6 +14162,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
ClusterObjectFieldDescriptor(Label="userActiveModeTriggerHint", Tag=0x00000006, Type=typing.Optional[uint]),
ClusterObjectFieldDescriptor(Label="userActiveModeTriggerInstruction", Tag=0x00000007, Type=typing.Optional[str]),
ClusterObjectFieldDescriptor(Label="operatingMode", Tag=0x00000008, Type=typing.Optional[IcdManagement.Enums.OperatingModeEnum]),
+ ClusterObjectFieldDescriptor(Label="maximumCheckInBackOff", Tag=0x00000009, Type=typing.Optional[uint]),
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]),
@@ -14179,6 +14180,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
userActiveModeTriggerHint: 'typing.Optional[uint]' = None
userActiveModeTriggerInstruction: 'typing.Optional[str]' = None
operatingMode: 'typing.Optional[IcdManagement.Enums.OperatingModeEnum]' = None
+ maximumCheckInBackOff: 'typing.Optional[uint]' = None
generatedCommandList: 'typing.List[uint]' = None
acceptedCommandList: 'typing.List[uint]' = None
eventList: 'typing.List[uint]' = None
@@ -14210,6 +14212,7 @@ class Feature(IntFlag):
kCheckInProtocolSupport = 0x1
kUserActiveModeTrigger = 0x2
kLongIdleTimeSupport = 0x4
+ kDynamicSitLitSupport = 0x8
class UserActiveModeTriggerBitmap(IntFlag):
kPowerCycle = 0x1
@@ -14484,6 +14487,22 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
value: 'typing.Optional[IcdManagement.Enums.OperatingModeEnum]' = None
+ @dataclass
+ class MaximumCheckInBackOff(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x00000046
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000009
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
+
+ value: 'typing.Optional[uint]' = None
+
@dataclass
class GeneratedCommandList(ClusterAttributeDescriptor):
@ChipUtility.classproperty
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
index 87b96a713cf814..d45f0fbf796324 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
@@ -1851,6 +1851,9 @@ static BOOL AttributeIsSpecifiedInICDManagementCluster(AttributeId aAttributeId)
case Attributes::OperatingMode::Id: {
return YES;
}
+ case Attributes::MaximumCheckInBackOff::Id: {
+ return YES;
+ }
case Attributes::GeneratedCommandList::Id: {
return YES;
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index 26db9e819103af..3bfe8b1d374fd8 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -5113,6 +5113,17 @@ static id _Nullable DecodeAttributeValueForICDManagementCluster(AttributeId aAtt
value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
return value;
}
+ case Attributes::MaximumCheckInBackOff::Id: {
+ using TypeInfo = Attributes::MaximumCheckInBackOff::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;
+ }
default: {
break;
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 91b6e9a65a2fc6..92bbd3e7c7db27 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -4547,6 +4547,12 @@ MTR_PROVISIONALLY_AVAILABLE
reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE;
+ (void)readAttributeOperatingModeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
+- (void)readAttributeMaximumCheckInBackOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
+- (void)subscribeAttributeMaximumCheckInBackOffWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE;
++ (void)readAttributeMaximumCheckInBackOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
+
- (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
- (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -18081,6 +18087,7 @@ typedef NS_OPTIONS(uint32_t, MTRICDManagementFeature) {
MTRICDManagementFeatureCheckInProtocolSupport MTR_PROVISIONALLY_AVAILABLE = 0x1,
MTRICDManagementFeatureUserActiveModeTrigger MTR_PROVISIONALLY_AVAILABLE = 0x2,
MTRICDManagementFeatureLongIdleTimeSupport MTR_PROVISIONALLY_AVAILABLE = 0x4,
+ MTRICDManagementFeatureDynamicSitLitSupport MTR_PROVISIONALLY_AVAILABLE = 0x8,
} MTR_PROVISIONALLY_AVAILABLE;
typedef NS_OPTIONS(uint32_t, MTRICDManagementUserActiveModeTriggerBitmap) {
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index 9aa9dbfab3dec4..3dfc68fddf68b1 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -37398,6 +37398,42 @@ + (void)readAttributeOperatingModeWithClusterStateCache:(MTRClusterStateCacheCon
completion:completion];
}
+- (void)readAttributeMaximumCheckInBackOffWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ using TypeInfo = IcdManagement::Attributes::MaximumCheckInBackOff::TypeInfo;
+ [self.device _readKnownAttributeWithEndpointID:self.endpointID
+ clusterID:@(TypeInfo::GetClusterId())
+ attributeID:@(TypeInfo::GetAttributeId())
+ params:nil
+ queue:self.callbackQueue
+ completion:completion];
+}
+
+- (void)subscribeAttributeMaximumCheckInBackOffWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = IcdManagement::Attributes::MaximumCheckInBackOff::TypeInfo;
+ [self.device _subscribeToKnownAttributeWithEndpointID:self.endpointID
+ clusterID:@(TypeInfo::GetClusterId())
+ attributeID:@(TypeInfo::GetAttributeId())
+ params:params
+ queue:self.callbackQueue
+ reportHandler:reportHandler
+ subscriptionEstablished:subscriptionEstablished];
+}
+
++ (void)readAttributeMaximumCheckInBackOffWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ using TypeInfo = IcdManagement::Attributes::MaximumCheckInBackOff::TypeInfo;
+ [clusterStateCacheContainer
+ _readKnownCachedAttributeWithEndpointID:static_cast([endpoint unsignedShortValue])
+ clusterID:TypeInfo::GetClusterId()
+ attributeID:TypeInfo::GetAttributeId()
+ queue:queue
+ completion:completion];
+}
+
- (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
{
using TypeInfo = IcdManagement::Attributes::GeneratedCommandList::TypeInfo;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 6c2978795cdafd..d5ac60d60c2172 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -2219,6 +2219,7 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) {
MTRAttributeIDTypeClusterICDManagementAttributeUserActiveModeTriggerHintID MTR_PROVISIONALLY_AVAILABLE = 0x00000006,
MTRAttributeIDTypeClusterICDManagementAttributeUserActiveModeTriggerInstructionID MTR_PROVISIONALLY_AVAILABLE = 0x00000007,
MTRAttributeIDTypeClusterICDManagementAttributeOperatingModeID MTR_PROVISIONALLY_AVAILABLE = 0x00000008,
+ MTRAttributeIDTypeClusterICDManagementAttributeMaximumCheckInBackOffID MTR_PROVISIONALLY_AVAILABLE = 0x00000009,
MTRAttributeIDTypeClusterICDManagementAttributeGeneratedCommandListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
MTRAttributeIDTypeClusterICDManagementAttributeAcceptedCommandListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
MTRAttributeIDTypeClusterICDManagementAttributeEventListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeEventListID,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
index 777f3c0c3ba164..2d293f540a717c 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
@@ -2772,6 +2772,10 @@
result = @"OperatingMode";
break;
+ case MTRAttributeIDTypeClusterICDManagementAttributeMaximumCheckInBackOffID:
+ result = @"MaximumCheckInBackOff";
+ break;
+
case MTRAttributeIDTypeClusterICDManagementAttributeGeneratedCommandListID:
result = @"GeneratedCommandList";
break;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index 530ffcc58e2808..37b0cf885f8736 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -2110,6 +2110,8 @@ MTR_PROVISIONALLY_AVAILABLE
- (NSDictionary * _Nullable)readAttributeOperatingModeWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
+- (NSDictionary * _Nullable)readAttributeMaximumCheckInBackOffWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
+
- (NSDictionary * _Nullable)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
- (NSDictionary * _Nullable)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index a753bca9616931..7a05f312120430 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -6152,6 +6152,11 @@ - (void)stayActiveRequestWithParams:(MTRICDManagementClusterStayActiveRequestPar
return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeICDManagementID) attributeID:@(MTRAttributeIDTypeClusterICDManagementAttributeOperatingModeID) params:params];
}
+- (NSDictionary * _Nullable)readAttributeMaximumCheckInBackOffWithParams:(MTRReadParams * _Nullable)params
+{
+ return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeICDManagementID) attributeID:@(MTRAttributeIDTypeClusterICDManagementAttributeMaximumCheckInBackOffID) params:params];
+}
+
- (NSDictionary * _Nullable)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
{
return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeICDManagementID) attributeID:@(MTRAttributeIDTypeClusterICDManagementAttributeGeneratedCommandListID) params:params];
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
index 0e519739bea690..ca35f4d8464e3c 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
@@ -9397,6 +9397,52 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl
} // namespace OperatingMode
+namespace MaximumCheckInBackOff {
+
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value)
+{
+ using Traits = NumericAttributeTraits;
+ Traits::StorageType temp;
+ uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
+ Protocols::InteractionModel::Status status =
+ emberAfReadAttribute(endpoint, Clusters::IcdManagement::Id, Id, readable, sizeof(temp));
+ VerifyOrReturnError(Protocols::InteractionModel::Status::Success == status, status);
+ if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
+ {
+ return Protocols::InteractionModel::Status::ConstraintError;
+ }
+ *value = Traits::StorageToWorking(temp);
+ return status;
+}
+
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty)
+{
+ using Traits = NumericAttributeTraits;
+ if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
+ {
+ return Protocols::InteractionModel::Status::ConstraintError;
+ }
+ Traits::StorageType storageValue;
+ Traits::WorkingToStorage(value, storageValue);
+ uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
+ return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE, markDirty);
+}
+
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value)
+{
+ using Traits = NumericAttributeTraits;
+ if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
+ {
+ return Protocols::InteractionModel::Status::ConstraintError;
+ }
+ Traits::StorageType storageValue;
+ Traits::WorkingToStorage(value, storageValue);
+ uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
+ return emberAfWriteAttribute(endpoint, Clusters::IcdManagement::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
+}
+
+} // namespace MaximumCheckInBackOff
+
namespace FeatureMap {
Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value)
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
index 3fed44373526df..78334996c0e75e 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
@@ -1506,6 +1506,12 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Cl
MarkAttributeDirty markDirty);
} // namespace OperatingMode
+namespace MaximumCheckInBackOff {
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // int32u
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value);
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value, MarkAttributeDirty markDirty);
+} // namespace MaximumCheckInBackOff
+
namespace FeatureMap {
Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value);
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 99b7167b26bee3..50cc1b63f37cc3 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -1631,6 +1631,7 @@ enum class Feature : uint32_t
kCheckInProtocolSupport = 0x1,
kUserActiveModeTrigger = 0x2,
kLongIdleTimeSupport = 0x4,
+ kDynamicSitLitSupport = 0x8,
};
// Bitmap for UserActiveModeTriggerBitmap
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
index 3244826b526af4..b21ac03febabb8 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
@@ -9896,6 +9896,8 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre
return DataModel::Decode(reader, userActiveModeTriggerInstruction);
case Attributes::OperatingMode::TypeInfo::GetAttributeId():
return DataModel::Decode(reader, operatingMode);
+ case Attributes::MaximumCheckInBackOff::TypeInfo::GetAttributeId():
+ return DataModel::Decode(reader, maximumCheckInBackOff);
case Attributes::GeneratedCommandList::TypeInfo::GetAttributeId():
return DataModel::Decode(reader, generatedCommandList);
case Attributes::AcceptedCommandList::TypeInfo::GetAttributeId():
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index 2e3dddde6d0fc0..a4561d80d66c0a 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -13483,6 +13483,18 @@ struct TypeInfo
static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace OperatingMode
+namespace MaximumCheckInBackOff {
+struct TypeInfo
+{
+ using Type = uint32_t;
+ using DecodableType = uint32_t;
+ using DecodableArgType = uint32_t;
+
+ static constexpr ClusterId GetClusterId() { return Clusters::IcdManagement::Id; }
+ static constexpr AttributeId GetAttributeId() { return Attributes::MaximumCheckInBackOff::Id; }
+ static constexpr bool MustUseTimedWrite() { return false; }
+};
+} // namespace MaximumCheckInBackOff
namespace GeneratedCommandList {
struct TypeInfo : public Clusters::Globals::Attributes::GeneratedCommandList::TypeInfo
{
@@ -13539,6 +13551,7 @@ struct TypeInfo
Attributes::UserActiveModeTriggerInstruction::TypeInfo::DecodableType userActiveModeTriggerInstruction;
Attributes::OperatingMode::TypeInfo::DecodableType operatingMode =
static_cast(0);
+ Attributes::MaximumCheckInBackOff::TypeInfo::DecodableType maximumCheckInBackOff = static_cast(0);
Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList;
Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList;
Attributes::EventList::TypeInfo::DecodableType eventList;
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
index c80ee5f834801e..193cec36ba2a3e 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
@@ -2364,6 +2364,10 @@ namespace OperatingMode {
static constexpr AttributeId Id = 0x00000008;
} // namespace OperatingMode
+namespace MaximumCheckInBackOff {
+static constexpr AttributeId Id = 0x00000009;
+} // namespace MaximumCheckInBackOff
+
namespace GeneratedCommandList {
static constexpr AttributeId Id = Globals::Attributes::GeneratedCommandList::Id;
} // namespace GeneratedCommandList
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
index 6bc2808777acad..7aa2430955f57c 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
@@ -4223,6 +4223,7 @@ class GroupKeyManagementKeySetReadAllIndices : public ClusterCommand
| * UserActiveModeTriggerHint | 0x0006 |
| * UserActiveModeTriggerInstruction | 0x0007 |
| * OperatingMode | 0x0008 |
+| * MaximumCheckInBackOff | 0x0009 |
| * GeneratedCommandList | 0xFFF8 |
| * AcceptedCommandList | 0xFFF9 |
| * EventList | 0xFFFA |
@@ -18925,15 +18926,16 @@ void registerClusterIcdManagement(Commands & commands, CredentialIssuerCommands
make_unique(Id, "user-active-mode-trigger-hint", Attributes::UserActiveModeTriggerHint::Id,
credsIssuerConfig), //
make_unique(Id, "user-active-mode-trigger-instruction", Attributes::UserActiveModeTriggerInstruction::Id,
- credsIssuerConfig), //
- make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), //
- make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), //
- make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), //
- make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), //
- make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), //
- make_unique(Id, "feature-map", Attributes::FeatureMap::Id, credsIssuerConfig), //
- make_unique(Id, "cluster-revision", Attributes::ClusterRevision::Id, credsIssuerConfig), //
- make_unique>(Id, credsIssuerConfig), //
+ credsIssuerConfig), //
+ make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), //
+ make_unique(Id, "maximum-check-in-back-off", Attributes::MaximumCheckInBackOff::Id, credsIssuerConfig), //
+ make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), //
+ make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), //
+ make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), //
+ make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), //
+ make_unique(Id, "feature-map", Attributes::FeatureMap::Id, credsIssuerConfig), //
+ make_unique(Id, "cluster-revision", Attributes::ClusterRevision::Id, credsIssuerConfig), //
+ make_unique>(Id, credsIssuerConfig), //
make_unique>(Id, "idle-mode-duration", 0, UINT32_MAX, Attributes::IdleModeDuration::Id,
WriteCommandType::kForceWrite, credsIssuerConfig), //
make_unique>(Id, "active-mode-duration", 0, UINT32_MAX, Attributes::ActiveModeDuration::Id,
@@ -18956,6 +18958,8 @@ void registerClusterIcdManagement(Commands & commands, CredentialIssuerCommands
credsIssuerConfig), //
make_unique>(
Id, "operating-mode", 0, UINT8_MAX, Attributes::OperatingMode::Id, WriteCommandType::kForceWrite, credsIssuerConfig), //
+ make_unique>(Id, "maximum-check-in-back-off", 0, UINT32_MAX, Attributes::MaximumCheckInBackOff::Id,
+ WriteCommandType::kForceWrite, credsIssuerConfig), //
make_unique>>(
Id, "generated-command-list", Attributes::GeneratedCommandList::Id, WriteCommandType::kForceWrite,
credsIssuerConfig), //
@@ -18980,8 +18984,10 @@ void registerClusterIcdManagement(Commands & commands, CredentialIssuerCommands
make_unique(Id, "user-active-mode-trigger-hint", Attributes::UserActiveModeTriggerHint::Id,
credsIssuerConfig), //
make_unique(Id, "user-active-mode-trigger-instruction",
- Attributes::UserActiveModeTriggerInstruction::Id, credsIssuerConfig), //
- make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), //
+ Attributes::UserActiveModeTriggerInstruction::Id, credsIssuerConfig), //
+ make_unique(Id, "operating-mode", Attributes::OperatingMode::Id, credsIssuerConfig), //
+ make_unique(Id, "maximum-check-in-back-off", Attributes::MaximumCheckInBackOff::Id,
+ credsIssuerConfig), //
make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), //
make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), //
make_unique(Id, "event-list", Attributes::EventList::Id, credsIssuerConfig), //
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
index d0fba2b8f0e0f3..78566172c45403 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
@@ -11326,6 +11326,11 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("OperatingMode", 1, value);
}
+ case IcdManagement::Attributes::MaximumCheckInBackOff::Id: {
+ uint32_t value;
+ ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
+ return DataModelLogger::LogValue("MaximumCheckInBackOff", 1, value);
+ }
case IcdManagement::Attributes::GeneratedCommandList::Id: {
chip::app::DataModel::DecodableList value;
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
index 0319e41eeaec91..4c09589a60f4ad 100644
--- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
@@ -47497,6 +47497,7 @@ class SubscribeAttributeBooleanStateClusterRevision : public SubscribeAttribute
| * UserActiveModeTriggerHint | 0x0006 |
| * UserActiveModeTriggerInstruction | 0x0007 |
| * OperatingMode | 0x0008 |
+| * MaximumCheckInBackOff | 0x0009 |
| * GeneratedCommandList | 0xFFF8 |
| * AcceptedCommandList | 0xFFF9 |
| * EventList | 0xFFFA |
@@ -48488,6 +48489,91 @@ class SubscribeAttributeIcdManagementOperatingMode : public SubscribeAttribute {
#endif // MTR_ENABLE_PROVISIONAL
#if MTR_ENABLE_PROVISIONAL
+/*
+ * Attribute MaximumCheckInBackOff
+ */
+class ReadIcdManagementMaximumCheckInBackOff : public ReadAttribute {
+public:
+ ReadIcdManagementMaximumCheckInBackOff()
+ : ReadAttribute("maximum-check-in-back-off")
+ {
+ }
+
+ ~ReadIcdManagementMaximumCheckInBackOff()
+ {
+ }
+
+ CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::IcdManagement::Id;
+ constexpr chip::AttributeId attributeId = chip::app::Clusters::IcdManagement::Attributes::MaximumCheckInBackOff::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") ReadAttribute (0x%08" PRIX32 ") on endpoint %u", endpointId, clusterId, attributeId);
+
+ dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
+ __auto_type * cluster = [[MTRBaseClusterICDManagement alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+ [cluster readAttributeMaximumCheckInBackOffWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+ NSLog(@"ICDManagement.MaximumCheckInBackOff response %@", [value description]);
+ if (error == nil) {
+ RemoteDataModelLogger::LogAttributeAsJSON(@(endpointId), @(clusterId), @(attributeId), value);
+ } else {
+ LogNSError("ICDManagement MaximumCheckInBackOff read Error", error);
+ RemoteDataModelLogger::LogAttributeErrorAsJSON(@(endpointId), @(clusterId), @(attributeId), error);
+ }
+ SetCommandExitStatus(error);
+ }];
+ return CHIP_NO_ERROR;
+ }
+};
+
+class SubscribeAttributeIcdManagementMaximumCheckInBackOff : public SubscribeAttribute {
+public:
+ SubscribeAttributeIcdManagementMaximumCheckInBackOff()
+ : SubscribeAttribute("maximum-check-in-back-off")
+ {
+ }
+
+ ~SubscribeAttributeIcdManagementMaximumCheckInBackOff()
+ {
+ }
+
+ CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
+ {
+ constexpr chip::ClusterId clusterId = chip::app::Clusters::IcdManagement::Id;
+ constexpr chip::CommandId attributeId = chip::app::Clusters::IcdManagement::Attributes::MaximumCheckInBackOff::Id;
+
+ ChipLogProgress(chipTool, "Sending cluster (0x%08" PRIX32 ") ReportAttribute (0x%08" PRIX32 ") on endpoint %u", clusterId, attributeId, endpointId);
+ dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
+ __auto_type * cluster = [[MTRBaseClusterICDManagement alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+ __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
+ if (mKeepSubscriptions.HasValue()) {
+ params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
+ }
+ if (mFabricFiltered.HasValue()) {
+ params.filterByFabric = mFabricFiltered.Value();
+ }
+ if (mAutoResubscribe.HasValue()) {
+ params.resubscribeAutomatically = mAutoResubscribe.Value();
+ }
+ [cluster subscribeAttributeMaximumCheckInBackOffWithParams:params
+ subscriptionEstablished:^() { mSubscriptionEstablished = YES; }
+ reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
+ NSLog(@"ICDManagement.MaximumCheckInBackOff response %@", [value description]);
+ if (error == nil) {
+ RemoteDataModelLogger::LogAttributeAsJSON(@(endpointId), @(clusterId), @(attributeId), value);
+ } else {
+ RemoteDataModelLogger::LogAttributeErrorAsJSON(@(endpointId), @(clusterId), @(attributeId), error);
+ }
+ SetCommandExitStatus(error);
+ }];
+
+ return CHIP_NO_ERROR;
+ }
+};
+
+#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+
/*
* Attribute GeneratedCommandList
*/
@@ -191327,6 +191413,10 @@ void registerClusterIcdManagement(Commands & commands)
make_unique(), //
make_unique(), //
#endif // MTR_ENABLE_PROVISIONAL
+#if MTR_ENABLE_PROVISIONAL
+ make_unique(), //
+ make_unique(), //
+#endif // MTR_ENABLE_PROVISIONAL
#if MTR_ENABLE_PROVISIONAL
make_unique(), //
make_unique(), //