Implement user lable cluser server callback (#12977)
* Implement user lable cluser server callback
* Run codegen
* Address review comments
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
index 1f0fceb..8c4384d 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
@@ -4431,6 +4431,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Door Lock",
"code": 257,
"mfgCode": null,
@@ -9499,6 +9550,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Boolean State",
"code": 69,
"mfgCode": null,
diff --git a/examples/all-clusters-app/esp32/main/CMakeLists.txt b/examples/all-clusters-app/esp32/main/CMakeLists.txt
index 38b3240..6e5deac 100644
--- a/examples/all-clusters-app/esp32/main/CMakeLists.txt
+++ b/examples/all-clusters-app/esp32/main/CMakeLists.txt
@@ -36,7 +36,8 @@
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/application-basic-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/test-cluster-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
- "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/on-off-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/level-control"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/identify-server"
diff --git a/examples/all-clusters-app/mbed/CMakeLists.txt b/examples/all-clusters-app/mbed/CMakeLists.txt
index 8116c17..cb3fec0 100644
--- a/examples/all-clusters-app/mbed/CMakeLists.txt
+++ b/examples/all-clusters-app/mbed/CMakeLists.txt
@@ -103,6 +103,7 @@
${APP_CLUSTERS}/descriptor/descriptor.cpp
${APP_CLUSTERS}/door-lock-server/door-lock-server.cpp
${APP_CLUSTERS}/fixed-label-server/fixed-label-server.cpp
+ ${APP_CLUSTERS}/user-label-server/user-label-server.cpp
${APP_CLUSTERS}/general-commissioning-server/general-commissioning-server.cpp
${APP_CLUSTERS}/groups-server/groups-server.cpp
${APP_CLUSTERS}/ias-zone-server/ias-zone-server.cpp
diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap
index ccc7045..752bb80 100644
--- a/examples/bridge-app/bridge-common/bridge-app.zap
+++ b/examples/bridge-app/bridge-common/bridge-app.zap
@@ -3009,6 +3009,57 @@
"reportableChange": 0
}
]
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
}
]
},
diff --git a/examples/bridge-app/esp32/main/CMakeLists.txt b/examples/bridge-app/esp32/main/CMakeLists.txt
index a5f68e7..4587054 100644
--- a/examples/bridge-app/esp32/main/CMakeLists.txt
+++ b/examples/bridge-app/esp32/main/CMakeLists.txt
@@ -31,6 +31,7 @@
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ethernet-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thread-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/software-diagnostics-server"
diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap
index 532b615..94dcee9 100644
--- a/examples/lighting-app/lighting-common/lighting-app.zap
+++ b/examples/lighting-app/lighting-common/lighting-app.zap
@@ -4017,6 +4017,57 @@
"reportableChange": 0
}
]
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
}
]
},
diff --git a/examples/lighting-app/mbed/CMakeLists.txt b/examples/lighting-app/mbed/CMakeLists.txt
index 8f99e04..bc11cc1 100644
--- a/examples/lighting-app/mbed/CMakeLists.txt
+++ b/examples/lighting-app/mbed/CMakeLists.txt
@@ -81,6 +81,7 @@
${CHIP_ROOT}/src/app/clusters/diagnostic-logs-server/diagnostic-logs-server.cpp
${CHIP_ROOT}/src/app/clusters/ethernet-network-diagnostics-server/ethernet-network-diagnostics-server.cpp
${CHIP_ROOT}/src/app/clusters/fixed-label-server/fixed-label-server.cpp
+ ${CHIP_ROOT}/src/app/clusters/user-label-server/user-label-server.cpp
${CHIP_ROOT}/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp
${CHIP_ROOT}/src/app/clusters/wifi-network-diagnostics-server/wifi-network-diagnostics-server.cpp
${CHIP_ROOT}/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp
diff --git a/examples/lighting-app/telink/CMakeLists.txt b/examples/lighting-app/telink/CMakeLists.txt
index cd989b2..e1a2865 100644
--- a/examples/lighting-app/telink/CMakeLists.txt
+++ b/examples/lighting-app/telink/CMakeLists.txt
@@ -81,6 +81,7 @@
${CHIP_ROOT}/src/app/clusters/diagnostic-logs-server/diagnostic-logs-server.cpp
${CHIP_ROOT}/src/app/clusters/ethernet-network-diagnostics-server/ethernet-network-diagnostics-server.cpp
${CHIP_ROOT}/src/app/clusters/fixed-label-server/fixed-label-server.cpp
+ ${CHIP_ROOT}/src/app/clusters/user-label-server/user-label-server.cpp
${CHIP_ROOT}/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp
${CHIP_ROOT}/src/app/clusters/wifi-network-diagnostics-server/wifi-network-diagnostics-server.cpp
${CHIP_ROOT}/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp
diff --git a/examples/lock-app/esp32/main/CMakeLists.txt b/examples/lock-app/esp32/main/CMakeLists.txt
index 0fad08b..fbca6b2 100644
--- a/examples/lock-app/esp32/main/CMakeLists.txt
+++ b/examples/lock-app/esp32/main/CMakeLists.txt
@@ -54,7 +54,8 @@
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/software-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general-diagnostics-server"
- "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/power-source-configuration-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/power-source-configuration-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server"
PRIV_REQUIRES bt chip QRCode)
get_filename_component(CHIP_ROOT ../third_party/connectedhomeip REALPATH)
@@ -146,6 +147,7 @@
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/operational-credentials-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general-commissioning-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/power-source-configuration-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server"
PRIV_REQUIRES chip QRCode bt)
set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17)
diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap
index 4b063f3..f578fd6 100644
--- a/examples/lock-app/lock-common/lock-app.zap
+++ b/examples/lock-app/lock-common/lock-app.zap
@@ -3978,6 +3978,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Occupancy Sensing",
"code": 1030,
"mfgCode": null,
diff --git a/examples/lock-app/mbed/CMakeLists.txt b/examples/lock-app/mbed/CMakeLists.txt
index a4864ee..30b0e36 100644
--- a/examples/lock-app/mbed/CMakeLists.txt
+++ b/examples/lock-app/mbed/CMakeLists.txt
@@ -89,6 +89,7 @@
${CHIP_ROOT}/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
${CHIP_ROOT}/src/app/clusters/on-off-server/on-off-server.cpp
${CHIP_ROOT}/src/app/clusters/power-source-configuration-server/power-source-configuration-server.cpp
+ ${CHIP_ROOT}/src/app/clusters/user-label-server/user-label-server.cpp
)
target_link_libraries(${APP_TARGET} mbed-os-posix-socket mbed-os mbed-ble mbed-events mbed-netsocket mbed-storage mbed-storage-kv-global-api mbed-mbedtls mbed-emac chip)
diff --git a/examples/ota-provider-app/esp32/main/CMakeLists.txt b/examples/ota-provider-app/esp32/main/CMakeLists.txt
index 5f3c6b6..a25dde3 100644
--- a/examples/ota-provider-app/esp32/main/CMakeLists.txt
+++ b/examples/ota-provider-app/esp32/main/CMakeLists.txt
@@ -35,6 +35,7 @@
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ethernet-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thread-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/software-diagnostics-server"
diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap
index e1682c0..0e83a9e 100644
--- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap
+++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap
@@ -1814,6 +1814,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Door Lock",
"code": 257,
"mfgCode": null,
diff --git a/examples/ota-requestor-app/esp32/main/CMakeLists.txt b/examples/ota-requestor-app/esp32/main/CMakeLists.txt
index a1b516a..8fb4bdd 100644
--- a/examples/ota-requestor-app/esp32/main/CMakeLists.txt
+++ b/examples/ota-requestor-app/esp32/main/CMakeLists.txt
@@ -35,6 +35,7 @@
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ethernet-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thread-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/software-diagnostics-server"
diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap
index 9adc314..562c31d 100644
--- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap
+++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap
@@ -1853,6 +1853,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Door Lock",
"code": 257,
"mfgCode": null,
diff --git a/examples/pump-app/pump-common/pump-app.zap b/examples/pump-app/pump-common/pump-app.zap
index d7d9e32..fd01159 100644
--- a/examples/pump-app/pump-common/pump-app.zap
+++ b/examples/pump-app/pump-common/pump-app.zap
@@ -3754,6 +3754,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Pump Configuration and Control",
"code": 512,
"mfgCode": null,
diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap
index 4ec221d..704e347 100644
--- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap
+++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap
@@ -3754,6 +3754,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Pump Configuration and Control",
"code": 512,
"mfgCode": null,
diff --git a/examples/temperature-measurement-app/esp32/main/CMakeLists.txt b/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
index 201e04d..6d8637c 100644
--- a/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
+++ b/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
@@ -35,6 +35,7 @@
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/ethernet-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server"
+ "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/user-label-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/thread-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/wifi-network-diagnostics-server"
"${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/software-diagnostics-server"
diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap
index fa11646..b60856f 100644
--- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap
+++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap
@@ -2365,6 +2365,57 @@
"reportableChange": 0
}
]
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
}
]
},
diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap
index d3557c4..063efbc 100644
--- a/examples/thermostat/thermostat-common/thermostat.zap
+++ b/examples/thermostat/thermostat-common/thermostat.zap
@@ -4166,6 +4166,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Door Lock",
"code": 257,
"mfgCode": null,
diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap
index 7818361..782c98d 100644
--- a/examples/tv-app/tv-common/tv-app.zap
+++ b/examples/tv-app/tv-common/tv-app.zap
@@ -4181,6 +4181,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Door Lock",
"code": 257,
"mfgCode": null,
diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap
index 15959e5..ae8d70b 100644
--- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap
+++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap
@@ -4166,6 +4166,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Door Lock",
"code": 257,
"mfgCode": null,
diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap
index 52c5c43..4cf5270 100644
--- a/examples/window-app/common/window-app.zap
+++ b/examples/window-app/common/window-app.zap
@@ -3759,6 +3759,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 0,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 1,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "External",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Window Covering",
"code": 258,
"mfgCode": null,
diff --git a/src/app/clusters/fixed-label-server/fixed-label-server.cpp b/src/app/clusters/fixed-label-server/fixed-label-server.cpp
index 0713999..fb57d67 100644
--- a/src/app/clusters/fixed-label-server/fixed-label-server.cpp
+++ b/src/app/clusters/fixed-label-server/fixed-label-server.cpp
@@ -53,7 +53,7 @@
CHIP_ERROR FixedLabelAttrAccess::ReadLabelList(EndpointId endpoint, AttributeValueEncoder & aEncoder)
{
CHIP_ERROR err = CHIP_NO_ERROR;
- DeviceLayer::LabelList<DeviceLayer::kMaxFixedLabels> labelList;
+ DeviceLayer::LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, DeviceLayer::kMaxFixedLabels> labelList;
if (DeviceLayer::PlatformMgr().GetFixedLabelList(endpoint, labelList) == CHIP_NO_ERROR)
{
diff --git a/src/app/clusters/user-label-server/user-label-server.cpp b/src/app/clusters/user-label-server/user-label-server.cpp
new file mode 100644
index 0000000..ad3cd49
--- /dev/null
+++ b/src/app/clusters/user-label-server/user-label-server.cpp
@@ -0,0 +1,97 @@
+/*
+ *
+ * Copyright (c) 2021 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/****************************************************************************
+ * @file
+ * @brief Implementation for the User Label Server Cluster
+ ***************************************************************************/
+
+#include <app-common/zap-generated/af-structs.h>
+#include <app-common/zap-generated/cluster-objects.h>
+#include <app-common/zap-generated/ids/Attributes.h>
+#include <app-common/zap-generated/ids/Clusters.h>
+#include <app/AttributeAccessInterface.h>
+#include <app/util/attribute-storage.h>
+#include <lib/support/CodeUtils.h>
+#include <lib/support/logging/CHIPLogging.h>
+#include <platform/PlatformManager.h>
+
+using namespace chip;
+using namespace chip::app;
+using namespace chip::app::Clusters;
+using namespace chip::app::Clusters::UserLabel;
+using namespace chip::app::Clusters::UserLabel::Attributes;
+
+namespace {
+
+class UserLabelAttrAccess : public AttributeAccessInterface
+{
+public:
+ // Register for the User Label cluster on all endpoints.
+ UserLabelAttrAccess() : AttributeAccessInterface(Optional<EndpointId>::Missing(), UserLabel::Id) {}
+
+ CHIP_ERROR Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder) override;
+
+private:
+ CHIP_ERROR ReadLabelList(EndpointId endpoint, AttributeValueEncoder & aEncoder);
+};
+
+CHIP_ERROR UserLabelAttrAccess::ReadLabelList(EndpointId endpoint, AttributeValueEncoder & aEncoder)
+{
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ DeviceLayer::LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, DeviceLayer::kMaxUserLabels> labelList;
+
+ if (DeviceLayer::PlatformMgr().GetUserLabelList(endpoint, labelList) == CHIP_NO_ERROR)
+ {
+ err = aEncoder.EncodeList([&labelList](const auto & encoder) -> CHIP_ERROR {
+ for (auto label : labelList)
+ {
+ ReturnErrorOnFailure(encoder.Encode(label));
+ }
+
+ return CHIP_NO_ERROR;
+ });
+ }
+ else
+ {
+ err = aEncoder.Encode(DataModel::List<Structs::LabelStruct::Type>());
+ }
+
+ return err;
+}
+
+UserLabelAttrAccess gAttrAccess;
+
+CHIP_ERROR UserLabelAttrAccess::Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder)
+{
+ VerifyOrDie(aPath.mClusterId == UserLabel::Id);
+
+ switch (aPath.mAttributeId)
+ {
+ case LabelList::Id:
+ return ReadLabelList(aPath.mEndpointId, aEncoder);
+ default:
+ break;
+ }
+ return CHIP_NO_ERROR;
+}
+} // anonymous namespace
+
+void MatterUserLabelPluginServerInitCallback(void)
+{
+ registerAttributeAccessOverride(&gAttrAccess);
+}
diff --git a/src/app/tests/suites/TestDescriptorCluster.yaml b/src/app/tests/suites/TestDescriptorCluster.yaml
index 4523d04..bdf73fc 100644
--- a/src/app/tests/suites/TestDescriptorCluster.yaml
+++ b/src/app/tests/suites/TestDescriptorCluster.yaml
@@ -55,6 +55,7 @@
0x003E, # Operational Credentials
0x003F, # Group Key Management
0x0040, # Fixed Label
+ 0x0041, # User Label
0x0405, # Relative Humidity Measurement (why on EP0?)
]
diff --git a/src/app/util/util.cpp b/src/app/util/util.cpp
index 715762b..4f44413 100644
--- a/src/app/util/util.cpp
+++ b/src/app/util/util.cpp
@@ -318,7 +318,6 @@
void MatterLocalizationConfigurationPluginServerInitCallback() {}
void MatterLocalizationUnitPluginServerInitCallback() {}
void MatterLocalizationTimeFormatPluginServerInitCallback() {}
-void MatterUserLabelPluginServerInitCallback() {}
void MatterTimeSynchronizationPluginServerInitCallback() {}
void MatterProxyValidPluginServerInitCallback() {}
void MatterProxyDiscoveryPluginServerInitCallback() {}
diff --git a/src/app/zap-templates/zcl/data-model/chip/user-label-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/user-label-cluster.xml
index d54cdef..e945f71 100644
--- a/src/app/zap-templates/zcl/data-model/chip/user-label-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/user-label-cluster.xml
@@ -29,6 +29,6 @@
<code>0x0041</code>
<define>USER_LABEL_CLUSTER</define>
<description>The User Label Cluster provides a feature to tag an endpoint with zero or more labels.</description>
- <attribute side="server" code="0x0000" define="LABEL_LIST" type="ARRAY" entryType="LabelStruct" length="254" writable="true" optional="false">label list</attribute>
+ <attribute side="server" code="0x0000" define="LABEL_LIST" type="ARRAY" entryType="LabelStruct" length="254" writable="false" optional="false">label list</attribute>
</cluster>
</configurator>
diff --git a/src/app/zap_cluster_list.py b/src/app/zap_cluster_list.py
index e3acf5c..990d882 100755
--- a/src/app/zap_cluster_list.py
+++ b/src/app/zap_cluster_list.py
@@ -82,7 +82,7 @@
'TIME_CLUSTER': [],
'TIME_SYNCHRONIZATION_CLUSTER': [],
'TV_CHANNEL_CLUSTER': ['tv-channel-server'],
- 'USER_LABEL_CLUSTER': [],
+ 'USER_LABEL_CLUSTER': ['user-label-server'],
'WAKE_ON_LAN_CLUSTER': [],
'WIFI_NETWORK_DIAGNOSTICS_CLUSTER': ['wifi-network-diagnostics-server'],
'WINDOW_COVERING_CLUSTER': ['window-covering-server'],
diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap
index dbe87f3..cd2ee0e 100644
--- a/src/controller/data_model/controller-clusters.zap
+++ b/src/controller/data_model/controller-clusters.zap
@@ -6285,6 +6285,57 @@
]
},
{
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [],
+ "attributes": []
+ },
+ {
+ "name": "User Label",
+ "code": 65,
+ "mfgCode": null,
+ "define": "USER_LABEL_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [],
+ "attributes": [
+ {
+ "name": "label list",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 0,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
"name": "Boolean State",
"code": 69,
"mfgCode": null,
diff --git a/src/controller/java/zap-generated/CHIPCallbackTypes.h b/src/controller/java/zap-generated/CHIPCallbackTypes.h
index f6f8ee7..30ed8dc 100644
--- a/src/controller/java/zap-generated/CHIPCallbackTypes.h
+++ b/src/controller/java/zap-generated/CHIPCallbackTypes.h
@@ -1312,6 +1312,11 @@
typedef void (*CHIPThreadNetworkDiagnosticsClusterClusterRevisionAttributeCallbackType)(
void *, chip::app::Clusters::ThreadNetworkDiagnostics::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
+typedef void (*CHIPUserLabelClusterLabelListAttributeCallbackType)(
+ void *, const chip::app::Clusters::UserLabel::Attributes::LabelList::TypeInfo::DecodableType &);
+typedef void (*CHIPUserLabelClusterClusterRevisionAttributeCallbackType)(
+ void *, chip::app::Clusters::UserLabel::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
+
typedef void (*CHIPWakeOnLanClusterWakeOnLanMacAddressAttributeCallbackType)(
void *, chip::app::Clusters::WakeOnLan::Attributes::WakeOnLanMacAddress::TypeInfo::DecodableArgType);
typedef void (*CHIPWakeOnLanClusterAttributeListAttributeCallbackType)(
diff --git a/src/controller/java/zap-generated/CHIPClusters-JNI.cpp b/src/controller/java/zap-generated/CHIPClusters-JNI.cpp
index a9f981d..49665ac 100644
--- a/src/controller/java/zap-generated/CHIPClusters-JNI.cpp
+++ b/src/controller/java/zap-generated/CHIPClusters-JNI.cpp
@@ -35881,6 +35881,15 @@
onReport.release();
}
+JNI_METHOD(jlong, UserLabelCluster, initWithDevice)(JNIEnv * env, jobject self, jlong devicePtr, jint endpointId)
+{
+ chip::DeviceLayer::StackLock lock;
+ UserLabelCluster * cppCluster = new UserLabelCluster();
+
+ cppCluster->Associate(reinterpret_cast<DeviceProxy *>(devicePtr), endpointId);
+ return reinterpret_cast<jlong>(cppCluster);
+}
+
JNI_METHOD(jlong, WakeOnLanCluster, initWithDevice)(JNIEnv * env, jobject self, jlong devicePtr, jint endpointId)
{
chip::DeviceLayer::StackLock lock;
diff --git a/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp b/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp
index 42225aa..3827a67 100644
--- a/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp
+++ b/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp
@@ -19807,6 +19807,75 @@
onFailure.release();
}
+JNI_METHOD(void, UserLabelCluster, readLabelListAttribute)(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback)
+{
+ chip::DeviceLayer::StackLock lock;
+ using TypeInfo = chip::app::Clusters::UserLabel::Attributes::LabelList::TypeInfo;
+ std::unique_ptr<CHIPUserLabelLabelListAttributeCallback, void (*)(CHIPUserLabelLabelListAttributeCallback *)> onSuccess(
+ chip::Platform::New<CHIPUserLabelLabelListAttributeCallback>(callback, false),
+ chip::Platform::Delete<CHIPUserLabelLabelListAttributeCallback>);
+ VerifyOrReturn(onSuccess.get() != nullptr,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
+ env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY));
+
+ std::unique_ptr<chip::CHIPDefaultFailureCallback, void (*)(chip::CHIPDefaultFailureCallback *)> onFailure(
+ chip::Platform::New<chip::CHIPDefaultFailureCallback>(callback), chip::Platform::Delete<chip::CHIPDefaultFailureCallback>);
+ 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;
+ chip::Controller::UserLabelCluster * cppCluster = reinterpret_cast<chip::Controller::UserLabelCluster *>(clusterPtr);
+ VerifyOrReturn(cppCluster != nullptr,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
+ env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
+
+ auto successFn =
+ chip::Callback::Callback<CHIPUserLabelClusterLabelListAttributeCallbackType>::FromCancelable(onSuccess->Cancel());
+ auto failureFn = chip::Callback::Callback<CHIPDefaultFailureCallbackType>::FromCancelable(onFailure->Cancel());
+ err = cppCluster->ReadAttribute<TypeInfo>(onSuccess->mContext, successFn->mCall, failureFn->mCall);
+ VerifyOrReturn(
+ err == CHIP_NO_ERROR,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(env, callback, "Error reading attribute", err));
+
+ onSuccess.release();
+ onFailure.release();
+}
+
+JNI_METHOD(void, UserLabelCluster, readClusterRevisionAttribute)(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback)
+{
+ chip::DeviceLayer::StackLock lock;
+ using TypeInfo = chip::app::Clusters::UserLabel::Attributes::ClusterRevision::TypeInfo;
+ std::unique_ptr<CHIPInt16uAttributeCallback, void (*)(CHIPInt16uAttributeCallback *)> onSuccess(
+ chip::Platform::New<CHIPInt16uAttributeCallback>(callback, false), chip::Platform::Delete<CHIPInt16uAttributeCallback>);
+ VerifyOrReturn(onSuccess.get() != nullptr,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
+ env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY));
+
+ std::unique_ptr<chip::CHIPDefaultFailureCallback, void (*)(chip::CHIPDefaultFailureCallback *)> onFailure(
+ chip::Platform::New<chip::CHIPDefaultFailureCallback>(callback), chip::Platform::Delete<chip::CHIPDefaultFailureCallback>);
+ 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;
+ chip::Controller::UserLabelCluster * cppCluster = reinterpret_cast<chip::Controller::UserLabelCluster *>(clusterPtr);
+ VerifyOrReturn(cppCluster != nullptr,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
+ env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
+
+ auto successFn =
+ chip::Callback::Callback<CHIPUserLabelClusterClusterRevisionAttributeCallbackType>::FromCancelable(onSuccess->Cancel());
+ auto failureFn = chip::Callback::Callback<CHIPDefaultFailureCallbackType>::FromCancelable(onFailure->Cancel());
+ err = cppCluster->ReadAttribute<TypeInfo>(onSuccess->mContext, successFn->mCall, failureFn->mCall);
+ VerifyOrReturn(
+ err == CHIP_NO_ERROR,
+ chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(env, callback, "Error reading attribute", err));
+
+ onSuccess.release();
+ onFailure.release();
+}
+
JNI_METHOD(void, WakeOnLanCluster, readWakeOnLanMacAddressAttribute)(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback)
{
chip::DeviceLayer::StackLock lock;
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
index 8733a8e..13e1d62 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
@@ -13643,6 +13643,119 @@
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
+CHIPUserLabelLabelListAttributeCallback::CHIPUserLabelLabelListAttributeCallback(jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback<CHIPUserLabelClusterLabelListAttributeCallbackType>(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");
+ }
+}
+
+CHIPUserLabelLabelListAttributeCallback::~CHIPUserLabelLabelListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPUserLabelLabelListAttributeCallback::CallbackFn(
+ void * context,
+ const chip::app::DataModel::DecodableList<chip::app::Clusters::UserLabel::Structs::LabelStruct::DecodableType> & 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<CHIPUserLabelLabelListAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+ reinterpret_cast<CHIPUserLabelLabelListAttributeCallback *>(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"));
+
+ jclass arrayListClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(env, "java/util/ArrayList", arrayListClass);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error using Java ArrayList"));
+ chip::JniClass arrayListJniClass(arrayListClass);
+ jmethodID arrayListCtor = env->GetMethodID(arrayListClass, "<init>", "()V");
+ jmethodID arrayListAddMethod = env->GetMethodID(arrayListClass, "add", "(Ljava/lang/Object;)Z");
+ VerifyOrReturn(arrayListCtor != nullptr && arrayListAddMethod != nullptr,
+ ChipLogError(Zcl, "Error finding Java ArrayList methods"));
+ jobject arrayListObj = env->NewObject(arrayListClass, arrayListCtor);
+ VerifyOrReturn(arrayListObj != nullptr, ChipLogError(Zcl, "Error creating Java ArrayList"));
+
+ 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"));
+
+ jclass attributeClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipClusters$UserLabelCluster$LabelListAttribute", attributeClass);
+ VerifyOrReturn(
+ err == CHIP_NO_ERROR,
+ ChipLogError(Zcl, "Could not find class chip/devicecontroller/ChipClusters$UserLabelCluster$LabelListAttribute"));
+ chip::JniClass attributeJniClass(attributeClass);
+ jmethodID attributeCtor = env->GetMethodID(attributeClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;)V");
+ VerifyOrReturn(attributeCtor != nullptr, ChipLogError(Zcl, "Could not find LabelListAttribute constructor"));
+
+ auto iter = list.begin();
+ while (iter.Next())
+ {
+ auto & entry = iter.GetValue();
+ (void) entry;
+ bool labelNull = false;
+ bool labelHasValue = true;
+
+ chip::CharSpan labelValue = entry.label;
+
+ jstring label = nullptr;
+ chip::UtfString labelStr(env, labelValue);
+ if (!labelNull && labelHasValue)
+ {
+ label = jstring(labelStr.jniValue());
+ }
+
+ bool valueNull = false;
+ bool valueHasValue = true;
+
+ chip::CharSpan valueValue = entry.value;
+
+ jstring value = nullptr;
+ chip::UtfString valueStr(env, valueValue);
+ if (!valueNull && valueHasValue)
+ {
+ value = jstring(valueStr.jniValue());
+ }
+
+ jobject attributeObj = env->NewObject(attributeClass, attributeCtor, label, value);
+ VerifyOrReturn(attributeObj != nullptr, ChipLogError(Zcl, "Could not create LabelListAttribute object"));
+
+ env->CallBooleanMethod(arrayListObj, arrayListAddMethod, attributeObj);
+ }
+ VerifyOrReturn(iter.GetStatus() == CHIP_NO_ERROR,
+ ChipLogError(Zcl, "Error decoding LabelListAttribute value: %" CHIP_ERROR_FORMAT, iter.GetStatus().Format()));
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
CHIPWakeOnLanAttributeListAttributeCallback::CHIPWakeOnLanAttributeListAttributeCallback(jobject javaCallback, bool keepAlive) :
chip::Callback::Callback<CHIPWakeOnLanClusterAttributeListAttributeCallbackType>(CallbackFn, this), keepAlive(keepAlive)
{
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h
index d3b093d..1a9afa8 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h
@@ -3753,6 +3753,31 @@
bool keepAlive;
};
+class CHIPUserLabelLabelListAttributeCallback : public chip::Callback::Callback<CHIPUserLabelClusterLabelListAttributeCallbackType>
+{
+public:
+ CHIPUserLabelLabelListAttributeCallback(jobject javaCallback, bool keepAlive = false);
+
+ ~CHIPUserLabelLabelListAttributeCallback();
+
+ static void maybeDestroy(CHIPUserLabelLabelListAttributeCallback * callback)
+ {
+ if (!callback->keepAlive)
+ {
+ callback->Cancel();
+ chip::Platform::Delete<CHIPUserLabelLabelListAttributeCallback>(callback);
+ }
+ }
+
+ static void CallbackFn(
+ void * context,
+ const chip::app::DataModel::DecodableList<chip::app::Clusters::UserLabel::Structs::LabelStruct::DecodableType> & list);
+
+private:
+ jobject javaCallbackRef;
+ bool keepAlive;
+};
+
class CHIPWakeOnLanAttributeListAttributeCallback
: public chip::Callback::Callback<CHIPWakeOnLanClusterAttributeListAttributeCallbackType>
{
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index b269fdd..9f5e186 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -16282,6 +16282,63 @@
long chipClusterPtr, IntegerAttributeCallback callback);
}
+ public static class UserLabelCluster extends BaseChipCluster {
+ public UserLabelCluster(long devicePtr, int endpointId) {
+ super(devicePtr, endpointId);
+ }
+
+ public static long clusterId() {
+ return Long.parseUnsignedLong("65");
+ }
+
+ @Override
+ public native long initWithDevice(long devicePtr, int endpointId);
+
+ public static class LabelListAttribute {
+ public String label;
+ public String value;
+
+ public LabelListAttribute(String label, String value) {
+ this.label = label;
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder("");
+ output.append("String label: ");
+ output.append(this.label);
+ output.append("\n");
+
+ output.append("String value: ");
+ output.append(this.value);
+ output.append("\n");
+
+ return output.toString();
+ }
+ }
+
+ public interface LabelListAttributeCallback {
+ void onSuccess(List<LabelListAttribute> valueList);
+
+ void onError(Exception ex);
+ }
+
+ public void readLabelListAttribute(LabelListAttributeCallback callback) {
+ readLabelListAttribute(chipClusterPtr, callback);
+ }
+
+ public void readClusterRevisionAttribute(IntegerAttributeCallback callback) {
+ readClusterRevisionAttribute(chipClusterPtr, callback);
+ }
+
+ private native void readLabelListAttribute(
+ long chipClusterPtr, LabelListAttributeCallback callback);
+
+ private native void readClusterRevisionAttribute(
+ long chipClusterPtr, IntegerAttributeCallback callback);
+ }
+
public static class WakeOnLanCluster extends BaseChipCluster {
public WakeOnLanCluster(long devicePtr, int endpointId) {
super(devicePtr, endpointId);
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
index 97631cb..90903ec 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
@@ -4259,6 +4259,33 @@
}
}
+ public static class DelegatedUserLabelClusterLabelListAttributeCallback
+ implements ChipClusters.UserLabelCluster.LabelListAttributeCallback,
+ DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(List<ChipClusters.UserLabelCluster.LabelListAttribute> valueList) {
+ Map<CommandResponseInfo, Object> responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo =
+ new CommandResponseInfo(
+ "valueList", "List<ChipClusters.UserLabelCluster.LabelListAttribute>");
+
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+
public static class DelegatedWakeOnLanClusterAttributeListAttributeCallback
implements ChipClusters.WakeOnLanCluster.AttributeListAttributeCallback,
DelegatedClusterCallback {
@@ -4630,6 +4657,11 @@
(ptr, endpointId) -> new ChipClusters.ThreadNetworkDiagnosticsCluster(ptr, endpointId),
new HashMap<>());
clusterMap.put("threadNetworkDiagnostics", threadNetworkDiagnosticsClusterInfo);
+ ClusterInfo userLabelClusterInfo =
+ new ClusterInfo(
+ (ptr, endpointId) -> new ChipClusters.UserLabelCluster(ptr, endpointId),
+ new HashMap<>());
+ clusterMap.put("userLabel", userLabelClusterInfo);
ClusterInfo wakeOnLanClusterInfo =
new ClusterInfo(
(ptr, endpointId) -> new ChipClusters.WakeOnLanCluster(ptr, endpointId),
@@ -4726,6 +4758,7 @@
destination
.get("threadNetworkDiagnostics")
.combineCommands(source.get("threadNetworkDiagnostics"));
+ destination.get("userLabel").combineCommands(source.get("userLabel"));
destination.get("wakeOnLan").combineCommands(source.get("wakeOnLan"));
destination.get("wiFiNetworkDiagnostics").combineCommands(source.get("wiFiNetworkDiagnostics"));
destination.get("windowCovering").combineCommands(source.get("windowCovering"));
@@ -9164,6 +9197,8 @@
threadNetworkDiagnosticsClusterInteractionInfoMap.put(
"resetCounts", threadNetworkDiagnosticsresetCountsInteractionInfo);
commandMap.put("threadNetworkDiagnostics", threadNetworkDiagnosticsClusterInteractionInfoMap);
+ Map<String, InteractionInfo> userLabelClusterInteractionInfoMap = new LinkedHashMap<>();
+ commandMap.put("userLabel", userLabelClusterInteractionInfoMap);
Map<String, InteractionInfo> wakeOnLanClusterInteractionInfoMap = new LinkedHashMap<>();
commandMap.put("wakeOnLan", wakeOnLanClusterInteractionInfoMap);
Map<String, InteractionInfo> wiFiNetworkDiagnosticsClusterInteractionInfoMap =
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
index 9a8d252..3583754 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
@@ -7553,6 +7553,33 @@
"readClusterRevisionAttribute",
readThreadNetworkDiagnosticsClusterRevisionAttributeInteractionInfo);
readAttributeMap.put("threadNetworkDiagnostics", readThreadNetworkDiagnosticsInteractionInfo);
+ Map<String, InteractionInfo> readUserLabelInteractionInfo = new LinkedHashMap<>();
+ Map<String, CommandParameterInfo> readUserLabelLabelListCommandParams =
+ new LinkedHashMap<String, CommandParameterInfo>();
+ InteractionInfo readUserLabelLabelListAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.UserLabelCluster) cluster)
+ .readLabelListAttribute(
+ (ChipClusters.UserLabelCluster.LabelListAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedUserLabelClusterLabelListAttributeCallback(),
+ readUserLabelLabelListCommandParams);
+ readUserLabelInteractionInfo.put(
+ "readLabelListAttribute", readUserLabelLabelListAttributeInteractionInfo);
+ Map<String, CommandParameterInfo> readUserLabelClusterRevisionCommandParams =
+ new LinkedHashMap<String, CommandParameterInfo>();
+ InteractionInfo readUserLabelClusterRevisionAttributeInteractionInfo =
+ new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.UserLabelCluster) cluster)
+ .readClusterRevisionAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readUserLabelClusterRevisionCommandParams);
+ readUserLabelInteractionInfo.put(
+ "readClusterRevisionAttribute", readUserLabelClusterRevisionAttributeInteractionInfo);
+ readAttributeMap.put("userLabel", readUserLabelInteractionInfo);
Map<String, InteractionInfo> readWakeOnLanInteractionInfo = new LinkedHashMap<>();
Map<String, CommandParameterInfo> readWakeOnLanWakeOnLanMacAddressCommandParams =
new LinkedHashMap<String, CommandParameterInfo>();
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
index af6b6c9..c5e421a 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
@@ -2367,6 +2367,8 @@
Map<String, InteractionInfo> writeThreadNetworkDiagnosticsInteractionInfo =
new LinkedHashMap<>();
writeAttributeMap.put("threadNetworkDiagnostics", writeThreadNetworkDiagnosticsInteractionInfo);
+ Map<String, InteractionInfo> writeUserLabelInteractionInfo = new LinkedHashMap<>();
+ writeAttributeMap.put("userLabel", writeUserLabelInteractionInfo);
Map<String, InteractionInfo> writeWakeOnLanInteractionInfo = new LinkedHashMap<>();
writeAttributeMap.put("wakeOnLan", writeWakeOnLanInteractionInfo);
Map<String, InteractionInfo> writeWiFiNetworkDiagnosticsInteractionInfo = new LinkedHashMap<>();
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 64f998e..cd19b6e 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -5189,6 +5189,24 @@
},
},
}
+ _USER_LABEL_CLUSTER_INFO = {
+ "clusterName": "UserLabel",
+ "clusterId": 0x00000041,
+ "commands": {
+ },
+ "attributes": {
+ 0x00000000: {
+ "attributeName": "LabelList",
+ "attributeId": 0x00000000,
+ "type": "",
+ },
+ 0x0000FFFD: {
+ "attributeName": "ClusterRevision",
+ "attributeId": 0x0000FFFD,
+ "type": "int",
+ },
+ },
+ }
_WAKE_ON_LAN_CLUSTER_INFO = {
"clusterName": "WakeOnLan",
"clusterId": 0x00000503,
@@ -5562,6 +5580,7 @@
0x00000201: _THERMOSTAT_CLUSTER_INFO,
0x00000204: _THERMOSTAT_USER_INTERFACE_CONFIGURATION_CLUSTER_INFO,
0x00000035: _THREAD_NETWORK_DIAGNOSTICS_CLUSTER_INFO,
+ 0x00000041: _USER_LABEL_CLUSTER_INFO,
0x00000503: _WAKE_ON_LAN_CLUSTER_INFO,
0x00000036: _WI_FI_NETWORK_DIAGNOSTICS_CLUSTER_INFO,
0x00000102: _WINDOW_COVERING_CLUSTER_INFO,
@@ -5624,6 +5643,7 @@
"Thermostat": _THERMOSTAT_CLUSTER_INFO,
"ThermostatUserInterfaceConfiguration": _THERMOSTAT_USER_INTERFACE_CONFIGURATION_CLUSTER_INFO,
"ThreadNetworkDiagnostics": _THREAD_NETWORK_DIAGNOSTICS_CLUSTER_INFO,
+ "UserLabel": _USER_LABEL_CLUSTER_INFO,
"WakeOnLan": _WAKE_ON_LAN_CLUSTER_INFO,
"WiFiNetworkDiagnostics": _WI_FI_NETWORK_DIAGNOSTICS_CLUSTER_INFO,
"WindowCovering": _WINDOW_COVERING_CLUSTER_INFO,
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm
index 7414561..5df08da 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm
@@ -8676,6 +8676,64 @@
}
break;
}
+ case Clusters::UserLabel::Id: {
+ using namespace Clusters::UserLabel;
+ switch (aPath.mAttributeId) {
+ case Attributes::LabelList::Id: {
+ using TypeInfo = Attributes::LabelList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ CHIPUserLabelClusterLabelStruct * newElement_0;
+ newElement_0 = [CHIPUserLabelClusterLabelStruct new];
+ newElement_0.label = [[NSString alloc] initWithBytes:entry_0.label.data()
+ length:entry_0.label.size()
+ encoding:NSUTF8StringEncoding];
+ newElement_0.label = [[NSString alloc] initWithBytes:entry_0.label.data()
+ length:entry_0.label.size()
+ encoding:NSUTF8StringEncoding];
+ newElement_0.value = [[NSString alloc] initWithBytes:entry_0.value.data()
+ length:entry_0.value.size()
+ encoding:NSUTF8StringEncoding];
+ newElement_0.value = [[NSString alloc] initWithBytes:entry_0.value.data()
+ length:entry_0.value.size()
+ encoding:NSUTF8StringEncoding];
+ [array_0 addObject:newElement_0];
+ }
+ { // Scope for the error so we will know what it's named
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ }
+ value = array_0;
+ 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:
+ *aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH;
+ break;
+ }
+ break;
+ }
case Clusters::WakeOnLan::Id: {
using namespace Clusters::WakeOnLan;
switch (aPath.mAttributeId) {
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
index e0987fb..e041b5d 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
@@ -4800,6 +4800,57 @@
}
}
+void CHIPUserLabelLabelListListAttributeCallbackBridge::OnSuccessFn(void * context,
+ const chip::app::DataModel::DecodableList<chip::app::Clusters::UserLabel::Structs::LabelStruct::DecodableType> & value)
+{
+ NSArray * _Nonnull objCValue;
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = value.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ CHIPUserLabelClusterLabelStruct * newElement_0;
+ newElement_0 = [CHIPUserLabelClusterLabelStruct new];
+ newElement_0.label = [[NSString alloc] initWithBytes:entry_0.label.data()
+ length:entry_0.label.size()
+ encoding:NSUTF8StringEncoding];
+ newElement_0.label = [[NSString alloc] initWithBytes:entry_0.label.data()
+ length:entry_0.label.size()
+ encoding:NSUTF8StringEncoding];
+ newElement_0.value = [[NSString alloc] initWithBytes:entry_0.value.data()
+ length:entry_0.value.size()
+ encoding:NSUTF8StringEncoding];
+ newElement_0.value = [[NSString alloc] initWithBytes:entry_0.value.data()
+ length:entry_0.value.size()
+ encoding:NSUTF8StringEncoding];
+ [array_0 addObject:newElement_0];
+ }
+ { // Scope for the error so we will know what it's named
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ OnFailureFn(context, EMBER_ZCL_STATUS_INVALID_VALUE);
+ return;
+ }
+ }
+ objCValue = array_0;
+ DispatchSuccess(context, objCValue);
+};
+
+void CHIPUserLabelLabelListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context)
+{
+ auto * self = static_cast<CHIPUserLabelLabelListListAttributeCallbackSubscriptionBridge *>(context);
+ if (!self->mQueue) {
+ return;
+ }
+
+ if (self->mEstablishedHandler != nil) {
+ dispatch_async(self->mQueue, self->mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ self->mEstablishedHandler = nil;
+ }
+}
+
void CHIPWakeOnLanAttributeListListAttributeCallbackBridge::OnSuccessFn(
void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & value)
{
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h
index 863a8e9..1e3603f 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h
@@ -3945,6 +3945,34 @@
SubscriptionEstablishedHandler mEstablishedHandler;
};
+class CHIPUserLabelLabelListListAttributeCallbackBridge : public CHIPCallbackBridge<UserLabelLabelListListAttributeCallback>
+{
+public:
+ CHIPUserLabelLabelListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, CHIPActionBlock action,
+ bool keepAlive = false) :
+ CHIPCallbackBridge<UserLabelLabelListListAttributeCallback>(queue, handler, action, OnSuccessFn, keepAlive){};
+
+ static void OnSuccessFn(
+ void * context,
+ const chip::app::DataModel::DecodableList<chip::app::Clusters::UserLabel::Structs::LabelStruct::DecodableType> & value);
+};
+
+class CHIPUserLabelLabelListListAttributeCallbackSubscriptionBridge : public CHIPUserLabelLabelListListAttributeCallbackBridge
+{
+public:
+ CHIPUserLabelLabelListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+ CHIPActionBlock action,
+ SubscriptionEstablishedHandler establishedHandler) :
+ CHIPUserLabelLabelListListAttributeCallbackBridge(queue, handler, action, true),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ static void OnSubscriptionEstablished(void * context);
+
+private:
+ SubscriptionEstablishedHandler mEstablishedHandler;
+};
+
class CHIPWakeOnLanAttributeListListAttributeCallbackBridge : public CHIPCallbackBridge<WakeOnLanAttributeListListAttributeCallback>
{
public:
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h
index c9abc52..42dabdd 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h
@@ -4939,6 +4939,20 @@
@end
/**
+ * Cluster User Label
+ *
+ */
+@interface CHIPUserLabel : CHIPCluster
+
+- (void)readAttributeLabelListWithCompletionHandler:(void (^)(
+ NSArray * _Nullable value, NSError * _Nullable error))completionHandler;
+
+- (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completionHandler;
+
+@end
+
+/**
* Cluster Wake on LAN
*
*/
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
index 4c956b5..c26fefa 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
@@ -21536,6 +21536,38 @@
@end
+@implementation CHIPUserLabel
+
+- (chip::Controller::ClusterBase *)getCluster
+{
+ return &_cppCluster;
+}
+
+- (void)readAttributeLabelListWithCompletionHandler:(void (^)(
+ NSArray * _Nullable value, NSError * _Nullable error))completionHandler
+{
+ new CHIPUserLabelLabelListListAttributeCallbackBridge(
+ self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo;
+ auto successFn = Callback<UserLabelLabelListListAttributeCallback>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
+}
+
+- (void)readAttributeClusterRevisionWithCompletionHandler:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completionHandler
+{
+ new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo;
+ auto successFn = Callback<Int16uAttributeCallback>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
+}
+
+@end
+
@implementation CHIPWakeOnLan
- (chip::Controller::ClusterBase *)getCluster
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h
index 6f02994..64b30b5 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc_internal.h
@@ -245,6 +245,10 @@
@property (readonly) chip::Controller::ThreadNetworkDiagnosticsCluster cppCluster;
@end
+@interface CHIPUserLabel ()
+@property (readonly) chip::Controller::UserLabelCluster cppCluster;
+@end
+
@interface CHIPWakeOnLan ()
@property (readonly) chip::Controller::WakeOnLanCluster cppCluster;
@end
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h
index 8cecf4a..5aa678b 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h
@@ -995,6 +995,17 @@
@end
/**
+ * Cluster User Label
+ *
+ */
+@interface CHIPTestUserLabel : CHIPUserLabel
+
+- (void)writeAttributeLabelListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
+- (void)writeAttributeClusterRevisionWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
+
+@end
+
+/**
* Cluster Wake on LAN
*
*/
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm
index 7bd9df0..633f341 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm
@@ -10566,6 +10566,79 @@
@end
+@interface CHIPTestUserLabel ()
+@property (readonly) chip::Controller::UserLabelClusterTest cppCluster;
+@end
+
+@implementation CHIPTestUserLabel
+
+- (chip::Controller::ClusterBase *)getCluster
+{
+ return &_cppCluster;
+}
+
+- (void)writeAttributeLabelListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(
+ self.callbackQueue,
+ ^(id _Nullable ignored, NSError * _Nullable error) {
+ completionHandler(error);
+ },
+ ^(Cancelable * success, Cancelable * failure) {
+ ListFreer listFreer;
+ using TypeInfo = UserLabel::Attributes::LabelList::TypeInfo;
+ TypeInfo::Type cppValue;
+ {
+ using ListType_0 = std::remove_reference_t<decltype(cppValue)>;
+ using ListMemberType_0 = ListMemberTypeGetter<ListType_0>::Type;
+ if (value.count != 0) {
+ auto * listHolder_0 = new ListHolder<ListMemberType_0>(value.count);
+ if (listHolder_0 == nullptr || listHolder_0->mList == nullptr) {
+ return CHIP_ERROR_INVALID_ARGUMENT;
+ }
+ listFreer.add(listHolder_0);
+ for (size_t i_0 = 0; i_0 < value.count; ++i_0) {
+ if (![value[i_0] isKindOfClass:[CHIPUserLabelClusterLabelStruct class]]) {
+ // Wrong kind of value.
+ return CHIP_ERROR_INVALID_ARGUMENT;
+ }
+ auto element_0 = (CHIPUserLabelClusterLabelStruct *) value[i_0];
+ listHolder_0->mList[i_0].label = [self asCharSpan:element_0.label];
+ listHolder_0->mList[i_0].label = [self asCharSpan:element_0.label];
+ listHolder_0->mList[i_0].value = [self asCharSpan:element_0.value];
+ listHolder_0->mList[i_0].value = [self asCharSpan:element_0.value];
+ }
+ cppValue = ListType_0(listHolder_0->mList, value.count);
+ } else {
+ cppValue = ListType_0();
+ }
+ }
+ auto successFn = Callback<CHIPDefaultSuccessCallbackType>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.WriteAttribute<TypeInfo>(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
+}
+
+- (void)writeAttributeClusterRevisionWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+{
+ new CHIPDefaultSuccessCallbackBridge(
+ self.callbackQueue,
+ ^(id _Nullable ignored, NSError * _Nullable error) {
+ completionHandler(error);
+ },
+ ^(Cancelable * success, Cancelable * failure) {
+ ListFreer listFreer;
+ using TypeInfo = UserLabel::Attributes::ClusterRevision::TypeInfo;
+ TypeInfo::Type cppValue;
+ cppValue = value.unsignedShortValue;
+ auto successFn = Callback<CHIPDefaultSuccessCallbackType>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.WriteAttribute<TypeInfo>(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
+}
+
+@end
+
@interface CHIPTestWakeOnLan ()
@property (readonly) chip::Controller::WakeOnLanClusterTest cppCluster;
@end
diff --git a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m
index 2af905c..4fd3677 100644
--- a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m
+++ b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m
@@ -29845,7 +29845,7 @@
{
id actualValue = value;
- XCTAssertEqual([actualValue count], 22);
+ XCTAssertEqual([actualValue count], 23);
XCTAssertEqual([actualValue[0] unsignedIntValue], 3UL);
XCTAssertEqual([actualValue[1] unsignedIntValue], 4UL);
XCTAssertEqual([actualValue[2] unsignedIntValue], 29UL);
@@ -29867,7 +29867,8 @@
XCTAssertEqual([actualValue[18] unsignedIntValue], 62UL);
XCTAssertEqual([actualValue[19] unsignedIntValue], 63UL);
XCTAssertEqual([actualValue[20] unsignedIntValue], 64UL);
- XCTAssertEqual([actualValue[21] unsignedIntValue], 1029UL);
+ XCTAssertEqual([actualValue[21] unsignedIntValue], 65UL);
+ XCTAssertEqual([actualValue[22] unsignedIntValue], 1029UL);
}
[expectation fulfill];
@@ -43550,6 +43551,55 @@
[self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
}
+- (void)testSendClusterUserLabelReadAttributeLabelListWithCompletionHandler
+{
+ dispatch_queue_t queue = dispatch_get_main_queue();
+
+ XCTestExpectation * connectedExpectation =
+ [self expectationWithDescription:@"Wait for the commissioned device to be retrieved"];
+ WaitForCommissionee(connectedExpectation, queue);
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+
+ CHIPDevice * device = GetConnectedDevice();
+ CHIPUserLabel * cluster = [[CHIPUserLabel alloc] initWithDevice:device endpoint:1 queue:queue];
+ XCTAssertNotNil(cluster);
+
+ XCTestExpectation * expectation = [self expectationWithDescription:@"UserLabelReadAttributeLabelListWithCompletionHandler"];
+
+ [cluster readAttributeLabelListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) {
+ NSLog(@"UserLabel LabelList Error: %@", err);
+ XCTAssertEqual(err.code, 0);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+}
+
+- (void)testSendClusterUserLabelReadAttributeClusterRevisionWithCompletionHandler
+{
+ dispatch_queue_t queue = dispatch_get_main_queue();
+
+ XCTestExpectation * connectedExpectation =
+ [self expectationWithDescription:@"Wait for the commissioned device to be retrieved"];
+ WaitForCommissionee(connectedExpectation, queue);
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+
+ CHIPDevice * device = GetConnectedDevice();
+ CHIPUserLabel * cluster = [[CHIPUserLabel alloc] initWithDevice:device endpoint:1 queue:queue];
+ XCTAssertNotNil(cluster);
+
+ XCTestExpectation * expectation =
+ [self expectationWithDescription:@"UserLabelReadAttributeClusterRevisionWithCompletionHandler"];
+
+ [cluster readAttributeClusterRevisionWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) {
+ NSLog(@"UserLabel ClusterRevision Error: %@", err);
+ XCTAssertEqual(err.code, 0);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil];
+}
+
- (void)testSendClusterWakeOnLanReadAttributeWakeOnLanMacAddressWithCompletionHandler
{
dispatch_queue_t queue = dispatch_get_main_queue();
diff --git a/src/include/platform/LabelList.h b/src/include/platform/LabelList.h
index 4d610e4..9809644 100644
--- a/src/include/platform/LabelList.h
+++ b/src/include/platform/LabelList.h
@@ -31,7 +31,7 @@
static constexpr size_t kMaxFixedLabels = 10;
static constexpr size_t kMaxUserLabels = 10;
-template <size_t N>
+template <typename T, size_t N>
class LabelList
{
public:
@@ -39,13 +39,13 @@
class Iterator
{
public:
- Iterator(const LabelList<N> * LabelList, int index);
- app::Clusters::FixedLabel::Structs::LabelStruct::Type operator*() const;
+ Iterator(const LabelList<T, N> * LabelList, int index);
+ T operator*() const;
Iterator & operator++();
bool operator!=(const Iterator & other) const;
private:
- const LabelList<N> * mLabelListPtr;
+ const LabelList<T, N> * mLabelListPtr;
int mIndex = -1;
};
@@ -53,24 +53,24 @@
LabelList() = default;
~LabelList() { mSize = 0; }
- CHIP_ERROR add(const app::Clusters::FixedLabel::Structs::LabelStruct::Type & label);
+ CHIP_ERROR add(const T & label);
size_t size() const;
- const app::Clusters::FixedLabel::Structs::LabelStruct::Type & operator[](int index) const;
+ const T & operator[](int index) const;
Iterator begin() const;
Iterator end() const;
private:
- app::Clusters::FixedLabel::Structs::LabelStruct::Type mList[N];
+ T mList[N];
int mSize = 0;
};
/*
* LabelList methods
**/
-template <size_t N>
-inline CHIP_ERROR LabelList<N>::add(const app::Clusters::FixedLabel::Structs::LabelStruct::Type & label)
+template <typename T, size_t N>
+inline CHIP_ERROR LabelList<T, N>::add(const T & label)
{
if (mSize == N)
{
@@ -83,53 +83,53 @@
return CHIP_NO_ERROR;
}
-template <size_t N>
-inline size_t LabelList<N>::size() const
+template <typename T, size_t N>
+inline size_t LabelList<T, N>::size() const
{
return static_cast<size_t>(mSize);
}
-template <size_t N>
-inline const app::Clusters::FixedLabel::Structs::LabelStruct::Type & LabelList<N>::operator[](int index) const
+template <typename T, size_t N>
+inline const T & LabelList<T, N>::operator[](int index) const
{
VerifyOrDie(index < mSize);
return mList[index];
}
-template <size_t N>
-inline typename LabelList<N>::Iterator LabelList<N>::begin() const
+template <typename T, size_t N>
+inline typename LabelList<T, N>::Iterator LabelList<T, N>::begin() const
{
- return LabelList<N>::Iterator{ this, 0 };
+ return LabelList<T, N>::Iterator{ this, 0 };
}
-template <size_t N>
-inline typename LabelList<N>::Iterator LabelList<N>::end() const
+template <typename T, size_t N>
+inline typename LabelList<T, N>::Iterator LabelList<T, N>::end() const
{
- return LabelList<N>::Iterator{ this, mSize };
+ return LabelList<T, N>::Iterator{ this, mSize };
}
/*
* Iterator methods
**/
-template <size_t N>
-inline LabelList<N>::Iterator::Iterator(const LabelList<N> * pLabelList, int index) : mLabelListPtr(pLabelList), mIndex(index)
+template <typename T, size_t N>
+inline LabelList<T, N>::Iterator::Iterator(const LabelList<T, N> * pLabelList, int index) : mLabelListPtr(pLabelList), mIndex(index)
{}
-template <size_t N>
-inline app::Clusters::FixedLabel::Structs::LabelStruct::Type LabelList<N>::Iterator::operator*() const
+template <typename T, size_t N>
+inline T LabelList<T, N>::Iterator::operator*() const
{
return mLabelListPtr->operator[](mIndex);
}
-template <size_t N>
-inline typename LabelList<N>::Iterator & LabelList<N>::Iterator::operator++()
+template <typename T, size_t N>
+inline typename LabelList<T, N>::Iterator & LabelList<T, N>::Iterator::operator++()
{
++mIndex;
return *this;
}
-template <size_t N>
-inline bool LabelList<N>::Iterator::operator!=(const LabelList<N>::Iterator & other) const
+template <typename T, size_t N>
+inline bool LabelList<T, N>::Iterator::operator!=(const LabelList<T, N>::Iterator & other) const
{
return mIndex != other.mIndex;
}
diff --git a/src/include/platform/PlatformManager.h b/src/include/platform/PlatformManager.h
index 9a80002..b90a609 100644
--- a/src/include/platform/PlatformManager.h
+++ b/src/include/platform/PlatformManager.h
@@ -180,7 +180,10 @@
bool IsChipStackLockedByCurrentThread() const;
#endif
- CHIP_ERROR GetFixedLabelList(EndpointId endpoint, LabelList<kMaxFixedLabels> & labelList);
+ CHIP_ERROR GetFixedLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, kMaxFixedLabels> & labelList);
+ CHIP_ERROR GetUserLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, kMaxUserLabels> & labelList);
private:
bool mInitialized = false;
@@ -424,10 +427,19 @@
return static_cast<ImplClass *>(this)->_StartChipTimer(duration);
}
-inline CHIP_ERROR PlatformManager::GetFixedLabelList(EndpointId endpoint, LabelList<kMaxFixedLabels> & labelList)
+inline CHIP_ERROR
+PlatformManager::GetFixedLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, kMaxFixedLabels> & labelList)
{
return static_cast<ImplClass *>(this)->_GetFixedLabelList(endpoint, labelList);
}
+inline CHIP_ERROR
+PlatformManager::GetUserLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, kMaxUserLabels> & labelList)
+{
+ return static_cast<ImplClass *>(this)->_GetUserLabelList(endpoint, labelList);
+}
+
} // namespace DeviceLayer
} // namespace chip
diff --git a/src/include/platform/internal/GenericPlatformManagerImpl.h b/src/include/platform/internal/GenericPlatformManagerImpl.h
index 890deb1..d4444df 100644
--- a/src/include/platform/internal/GenericPlatformManagerImpl.h
+++ b/src/include/platform/internal/GenericPlatformManagerImpl.h
@@ -58,7 +58,10 @@
void _ScheduleWork(AsyncWorkFunct workFunct, intptr_t arg);
void _DispatchEvent(const ChipDeviceEvent * event);
- CHIP_ERROR _GetFixedLabelList(EndpointId endpoint, LabelList<kMaxFixedLabels> & labelList);
+ CHIP_ERROR _GetFixedLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, kMaxFixedLabels> & labelList);
+ CHIP_ERROR _GetUserLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, kMaxUserLabels> & labelList);
// ===== Support methods that can be overridden by the implementation subclass.
@@ -76,8 +79,15 @@
extern template class GenericPlatformManagerImpl<PlatformManagerImpl>;
template <class ImplClass>
-inline CHIP_ERROR GenericPlatformManagerImpl<ImplClass>::_GetFixedLabelList(EndpointId endpoint,
- LabelList<kMaxFixedLabels> & labelList)
+inline CHIP_ERROR GenericPlatformManagerImpl<ImplClass>::_GetFixedLabelList(
+ EndpointId endpoint, LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, kMaxFixedLabels> & labelList)
+{
+ return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE;
+}
+
+template <class ImplClass>
+inline CHIP_ERROR GenericPlatformManagerImpl<ImplClass>::_GetUserLabelList(
+ EndpointId endpoint, LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, kMaxUserLabels> & labelList)
{
return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE;
}
diff --git a/src/platform/Linux/PlatformManagerImpl.cpp b/src/platform/Linux/PlatformManagerImpl.cpp
index 0f1a6db..574a8ce 100644
--- a/src/platform/Linux/PlatformManagerImpl.cpp
+++ b/src/platform/Linux/PlatformManagerImpl.cpp
@@ -268,7 +268,8 @@
return Internal::GenericPlatformManagerImpl_POSIX<PlatformManagerImpl>::_Shutdown();
}
-CHIP_ERROR PlatformManagerImpl::_GetFixedLabelList(EndpointId endpoint, LabelList<kMaxFixedLabels> & labelList)
+CHIP_ERROR PlatformManagerImpl::_GetFixedLabelList(
+ EndpointId endpoint, LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, kMaxFixedLabels> & labelList)
{
// In Linux simulation, return following hardcoded labelList on all endpoints.
FixedLabel::Structs::LabelStruct::Type room;
@@ -296,6 +297,36 @@
return CHIP_NO_ERROR;
}
+CHIP_ERROR
+PlatformManagerImpl::_GetUserLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, kMaxUserLabels> & labelList)
+{
+ // In Linux simulation, return following hardcoded labelList on all endpoints.
+ UserLabel::Structs::LabelStruct::Type room;
+ UserLabel::Structs::LabelStruct::Type orientation;
+ UserLabel::Structs::LabelStruct::Type floor;
+ UserLabel::Structs::LabelStruct::Type direction;
+
+ room.label = CharSpan("room", strlen("room"));
+ room.value = CharSpan("bedroom 2", strlen("bedroom 2"));
+
+ orientation.label = CharSpan("orientation", strlen("orientation"));
+ orientation.value = CharSpan("North", strlen("North"));
+
+ floor.label = CharSpan("floor", strlen("floor"));
+ floor.value = CharSpan("2", strlen("2"));
+
+ direction.label = CharSpan("direction", strlen("direction"));
+ direction.value = CharSpan("up", strlen("up"));
+
+ labelList.add(room);
+ labelList.add(orientation);
+ labelList.add(floor);
+ labelList.add(direction);
+
+ return CHIP_NO_ERROR;
+}
+
void PlatformManagerImpl::HandleDeviceRebooted(intptr_t arg)
{
PlatformManagerDelegate * platformManagerDelegate = PlatformMgr().GetDelegate();
diff --git a/src/platform/Linux/PlatformManagerImpl.h b/src/platform/Linux/PlatformManagerImpl.h
index 884f2e1..a3017e9 100644
--- a/src/platform/Linux/PlatformManagerImpl.h
+++ b/src/platform/Linux/PlatformManagerImpl.h
@@ -64,7 +64,10 @@
CHIP_ERROR _InitChipStack();
CHIP_ERROR _Shutdown();
- CHIP_ERROR _GetFixedLabelList(EndpointId endpoint, LabelList<kMaxFixedLabels> & labelList);
+ CHIP_ERROR _GetFixedLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, kMaxFixedLabels> & labelList);
+ CHIP_ERROR _GetUserLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, kMaxUserLabels> & labelList);
// ===== Members for internal use by the following friends.
diff --git a/src/platform/fake/PlatformManagerImpl.h b/src/platform/fake/PlatformManagerImpl.h
index 2769421..204b49e 100644
--- a/src/platform/fake/PlatformManagerImpl.h
+++ b/src/platform/fake/PlatformManagerImpl.h
@@ -97,7 +97,15 @@
}
CHIP_ERROR _StartChipTimer(System::Clock::Timeout duration) { return CHIP_ERROR_NOT_IMPLEMENTED; }
- CHIP_ERROR _GetFixedLabelList(EndpointId endpoint, LabelList<kMaxFixedLabels> & labelList)
+
+ CHIP_ERROR _GetFixedLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::FixedLabel::Structs::LabelStruct::Type, kMaxFixedLabels> & labelList)
+ {
+ return CHIP_ERROR_NOT_IMPLEMENTED;
+ }
+
+ CHIP_ERROR _GetUserLabelList(EndpointId endpoint,
+ LabelList<app::Clusters::UserLabel::Structs::LabelStruct::Type, kMaxUserLabels> & labelList)
{
return CHIP_ERROR_NOT_IMPLEMENTED;
}
diff --git a/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h
index 82034fa..680e395 100644
--- a/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/all-clusters-app/zap-generated/PluginApplicationCallbacks.h
@@ -79,6 +79,7 @@
MatterThermostatPluginServerInitCallback(); \
MatterThermostatUserInterfaceConfigurationPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWakeOnLanPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback(); \
MatterWindowCoveringPluginServerInitCallback();
diff --git a/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp b/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
index f55af8b..e3bf840 100644
--- a/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/all-clusters-app/zap-generated/callback-stub.cpp
@@ -200,6 +200,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WAKE_ON_LAN_CLUSTER_ID:
emberAfWakeOnLanClusterInitCallback(endpoint);
break;
@@ -500,6 +503,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWakeOnLanClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
index f322f1c..962979b 100644
--- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
@@ -1460,7 +1460,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 582
+#define GENERATED_ATTRIBUTE_COUNT 586
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -1694,6 +1694,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* measured value */ \
{ 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* min measured value */ \
@@ -1807,6 +1811,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(1168) }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \
\
+ /* Endpoint: 1, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: Boolean State (server) */ \
{ 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0) }, /* StateValue */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
@@ -2340,7 +2348,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 70
+#define GENERATED_CLUSTER_COUNT 72
#define GENERATED_CLUSTERS \
{ \
{ 0x0003, \
@@ -2416,198 +2424,204 @@
0x0040, ZAP_ATTRIBUTE_INDEX(175), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ \
- 0x0405, ZAP_ATTRIBUTE_INDEX(177), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(177), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
+ { \
+ 0x0405, ZAP_ATTRIBUTE_INDEX(179), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0003, \
- ZAP_ATTRIBUTE_INDEX(181), \
+ ZAP_ATTRIBUTE_INDEX(183), \
3, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayIdentifyServer }, /* Endpoint: 1, Cluster: Identify (server) */ \
{ 0x0004, \
- ZAP_ATTRIBUTE_INDEX(184), \
+ ZAP_ATTRIBUTE_INDEX(186), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayGroupsServer }, /* Endpoint: 1, Cluster: Groups (server) */ \
{ 0x0005, \
- ZAP_ATTRIBUTE_INDEX(186), \
+ ZAP_ATTRIBUTE_INDEX(188), \
6, \
8, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayScenesServer }, /* Endpoint: 1, Cluster: Scenes (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(192), \
+ ZAP_ATTRIBUTE_INDEX(194), \
7, \
13, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/Off (server) */ \
{ \
- 0x0007, ZAP_ATTRIBUTE_INDEX(199), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0007, ZAP_ATTRIBUTE_INDEX(201), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: On/off Switch Configuration (server) */ \
{ 0x0008, \
- ZAP_ATTRIBUTE_INDEX(202), \
+ ZAP_ATTRIBUTE_INDEX(204), \
15, \
23, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */ \
{ \
- 0x000F, ZAP_ATTRIBUTE_INDEX(217), 4, 5, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x000F, ZAP_ATTRIBUTE_INDEX(219), 4, 5, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Binary Input (Basic) (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(221), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(223), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x001E, ZAP_ATTRIBUTE_INDEX(226), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001E, ZAP_ATTRIBUTE_INDEX(228), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Binding (server) */ \
{ \
- 0x0025, ZAP_ATTRIBUTE_INDEX(227), 4, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0025, ZAP_ATTRIBUTE_INDEX(229), 4, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Bridged Actions (server) */ \
{ \
- 0x002F, ZAP_ATTRIBUTE_INDEX(231), 11, 88, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x002F, ZAP_ATTRIBUTE_INDEX(233), 11, 88, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Power Source (server) */ \
{ \
- 0x0039, ZAP_ATTRIBUTE_INDEX(242), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0039, ZAP_ATTRIBUTE_INDEX(244), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Bridged Device Basic (server) */ \
{ \
- 0x003B, ZAP_ATTRIBUTE_INDEX(243), 5, 9, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x003B, ZAP_ATTRIBUTE_INDEX(245), 5, 9, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Switch (server) */ \
{ \
- 0x0040, ZAP_ATTRIBUTE_INDEX(248), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0040, ZAP_ATTRIBUTE_INDEX(250), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Fixed Label (server) */ \
{ \
- 0x0045, ZAP_ATTRIBUTE_INDEX(250), 2, 3, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(252), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 1, Cluster: User Label (server) */ \
+ { \
+ 0x0045, ZAP_ATTRIBUTE_INDEX(254), 2, 3, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Boolean State (server) */ \
{ \
- 0x0050, ZAP_ATTRIBUTE_INDEX(252), 6, 38, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0050, ZAP_ATTRIBUTE_INDEX(256), 6, 38, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Mode Select (server) */ \
{ 0x0101, \
- ZAP_ATTRIBUTE_INDEX(258), \
+ ZAP_ATTRIBUTE_INDEX(262), \
19, \
29, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayDoorLockServer }, /* Endpoint: 1, Cluster: Door Lock (server) */ \
{ \
- 0x0102, ZAP_ATTRIBUTE_INDEX(277), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0102, ZAP_ATTRIBUTE_INDEX(281), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Window Covering (server) */ \
{ \
- 0x0103, ZAP_ATTRIBUTE_INDEX(297), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0103, ZAP_ATTRIBUTE_INDEX(301), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Barrier Control (server) */ \
{ \
0x0200, \
- ZAP_ATTRIBUTE_INDEX(302), \
+ ZAP_ATTRIBUTE_INDEX(306), \
26, \
54, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayPumpConfigurationAndControlServer \
}, /* Endpoint: 1, Cluster: Pump Configuration and Control (server) */ \
{ 0x0201, \
- ZAP_ATTRIBUTE_INDEX(328), \
+ ZAP_ATTRIBUTE_INDEX(332), \
19, \
34, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayThermostatServer }, /* Endpoint: 1, Cluster: Thermostat (server) */ \
{ \
0x0204, \
- ZAP_ATTRIBUTE_INDEX(347), \
+ ZAP_ATTRIBUTE_INDEX(351), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayThermostatUserInterfaceConfigurationServer \
}, /* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \
{ 0x0300, \
- ZAP_ATTRIBUTE_INDEX(351), \
+ ZAP_ATTRIBUTE_INDEX(355), \
53, \
341, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayColorControlServer }, /* Endpoint: 1, Cluster: Color Control (server) */ \
{ \
- 0x0400, ZAP_ATTRIBUTE_INDEX(404), 6, 11, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0400, ZAP_ATTRIBUTE_INDEX(408), 6, 11, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Illuminance Measurement (server) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(410), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(414), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \
{ \
- 0x0403, ZAP_ATTRIBUTE_INDEX(415), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0403, ZAP_ATTRIBUTE_INDEX(419), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \
{ \
- 0x0404, ZAP_ATTRIBUTE_INDEX(419), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0404, ZAP_ATTRIBUTE_INDEX(423), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Flow Measurement (server) */ \
{ \
- 0x0405, ZAP_ATTRIBUTE_INDEX(424), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0405, ZAP_ATTRIBUTE_INDEX(428), 5, 10, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0406, \
- ZAP_ATTRIBUTE_INDEX(429), \
+ ZAP_ATTRIBUTE_INDEX(433), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOccupancySensingServer }, /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \
{ 0x0500, \
- ZAP_ATTRIBUTE_INDEX(433), \
+ ZAP_ATTRIBUTE_INDEX(437), \
6, \
16, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | \
ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \
chipFuncArrayIasZoneServer }, /* Endpoint: 1, Cluster: IAS Zone (server) */ \
{ \
- 0x0503, ZAP_ATTRIBUTE_INDEX(439), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0503, ZAP_ATTRIBUTE_INDEX(443), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Wake on LAN (server) */ \
{ \
- 0x0504, ZAP_ATTRIBUTE_INDEX(441), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0504, ZAP_ATTRIBUTE_INDEX(445), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: TV Channel (server) */ \
{ \
- 0x0505, ZAP_ATTRIBUTE_INDEX(443), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0505, ZAP_ATTRIBUTE_INDEX(447), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Target Navigator (server) */ \
{ \
- 0x0506, ZAP_ATTRIBUTE_INDEX(446), 7, 39, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0506, ZAP_ATTRIBUTE_INDEX(450), 7, 39, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Media Playback (server) */ \
{ \
- 0x0507, ZAP_ATTRIBUTE_INDEX(453), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0507, ZAP_ATTRIBUTE_INDEX(457), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Media Input (server) */ \
{ \
- 0x0508, ZAP_ATTRIBUTE_INDEX(456), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0508, ZAP_ATTRIBUTE_INDEX(460), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Low Power (server) */ \
{ \
- 0x0509, ZAP_ATTRIBUTE_INDEX(457), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0509, ZAP_ATTRIBUTE_INDEX(461), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Keypad Input (server) */ \
{ \
- 0x050A, ZAP_ATTRIBUTE_INDEX(458), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050A, ZAP_ATTRIBUTE_INDEX(462), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Content Launcher (server) */ \
{ \
- 0x050B, ZAP_ATTRIBUTE_INDEX(461), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050B, ZAP_ATTRIBUTE_INDEX(465), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Audio Output (server) */ \
{ \
- 0x050C, ZAP_ATTRIBUTE_INDEX(464), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050C, ZAP_ATTRIBUTE_INDEX(468), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Application Launcher (server) */ \
{ \
- 0x050D, ZAP_ATTRIBUTE_INDEX(466), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050D, ZAP_ATTRIBUTE_INDEX(470), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Application Basic (server) */ \
{ \
- 0x050E, ZAP_ATTRIBUTE_INDEX(473), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050E, ZAP_ATTRIBUTE_INDEX(477), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Account Login (server) */ \
{ \
- 0x050F, ZAP_ATTRIBUTE_INDEX(474), 78, 3285, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050F, ZAP_ATTRIBUTE_INDEX(478), 78, 3285, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Test Cluster (server) */ \
{ \
- 0x0B04, ZAP_ATTRIBUTE_INDEX(552), 12, 28, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0B04, ZAP_ATTRIBUTE_INDEX(556), 12, 28, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Electrical Measurement (server) */ \
{ 0x0004, \
- ZAP_ATTRIBUTE_INDEX(564), \
+ ZAP_ATTRIBUTE_INDEX(568), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayGroupsServer }, /* Endpoint: 2, Cluster: Groups (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(566), \
+ ZAP_ATTRIBUTE_INDEX(570), \
7, \
13, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 2, Cluster: On/Off (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(573), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(577), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: Descriptor (server) */ \
{ 0x0406, \
- ZAP_ATTRIBUTE_INDEX(578), \
+ ZAP_ATTRIBUTE_INDEX(582), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -2619,7 +2633,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 22, 1986 }, { ZAP_CLUSTER_INDEX(22), 44, 6076 }, { ZAP_CLUSTER_INDEX(66), 4, 21 }, \
+ { ZAP_CLUSTER_INDEX(0), 23, 1988 }, { ZAP_CLUSTER_INDEX(23), 45, 6078 }, { ZAP_CLUSTER_INDEX(68), 4, 21 }, \
}
// Largest attribute size is needed for various buffers
@@ -2629,7 +2643,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (689)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (8083)
+#define ATTRIBUTE_MAX_SIZE (8087)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (3)
diff --git a/zzz_generated/all-clusters-app/zap-generated/gen_config.h b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
index 330ea74..146562c 100644
--- a/zzz_generated/all-clusters-app/zap-generated/gen_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
@@ -86,6 +86,7 @@
#define EMBER_AF_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THERMOSTAT_UI_CONFIG_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (2)
#define EMBER_AF_WAKE_ON_LAN_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WINDOW_COVERING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -389,6 +390,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the Wake on LAN cluster is included
#define ZCL_USING_WAKE_ON_LAN_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WAKE_ON_LAN_SERVER
diff --git a/zzz_generated/bridge-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/bridge-app/zap-generated/PluginApplicationCallbacks.h
index 0df0421..a396b01 100644
--- a/zzz_generated/bridge-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/bridge-app/zap-generated/PluginApplicationCallbacks.h
@@ -37,4 +37,5 @@
MatterSoftwareDiagnosticsPluginServerInitCallback(); \
MatterSwitchPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/bridge-app/zap-generated/callback-stub.cpp b/zzz_generated/bridge-app/zap-generated/callback-stub.cpp
index 53d252f..d56d561 100644
--- a/zzz_generated/bridge-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/bridge-app/zap-generated/callback-stub.cpp
@@ -74,6 +74,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -158,6 +161,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/bridge-app/zap-generated/endpoint_config.h b/zzz_generated/bridge-app/zap-generated/endpoint_config.h
index 3c99406..ace95aa 100644
--- a/zzz_generated/bridge-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/bridge-app/zap-generated/endpoint_config.h
@@ -604,7 +604,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 180
+#define GENERATED_ATTRIBUTE_COUNT 182
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -791,6 +791,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: On/Off (server) */ \
{ 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* OnOff */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(4) }, /* ClusterRevision */ \
@@ -853,7 +857,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 18
+#define GENERATED_CLUSTER_COUNT 19
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -896,26 +900,29 @@
{ \
0x0040, ZAP_ATTRIBUTE_INDEX(149), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
+ { \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(151), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(151), \
+ ZAP_ATTRIBUTE_INDEX(153), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/Off (server) */ \
{ 0x0008, \
- ZAP_ATTRIBUTE_INDEX(153), \
+ ZAP_ATTRIBUTE_INDEX(155), \
15, \
23, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(168), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(170), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x003B, ZAP_ATTRIBUTE_INDEX(173), 5, 9, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x003B, ZAP_ATTRIBUTE_INDEX(175), 5, 9, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Switch (server) */ \
{ \
- 0x0040, ZAP_ATTRIBUTE_INDEX(178), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0040, ZAP_ATTRIBUTE_INDEX(180), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Fixed Label (server) */ \
}
@@ -924,7 +931,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 13, 993 }, { ZAP_CLUSTER_INDEX(13), 5, 291 }, \
+ { ZAP_CLUSTER_INDEX(0), 14, 995 }, { ZAP_CLUSTER_INDEX(14), 5, 291 }, \
}
// Largest attribute size is needed for various buffers
@@ -934,7 +941,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (246)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (1284)
+#define ATTRIBUTE_MAX_SIZE (1286)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (2)
diff --git a/zzz_generated/bridge-app/zap-generated/gen_config.h b/zzz_generated/bridge-app/zap-generated/gen_config.h
index 63d0c84..9803e3f 100644
--- a/zzz_generated/bridge-app/zap-generated/gen_config.h
+++ b/zzz_generated/bridge-app/zap-generated/gen_config.h
@@ -44,6 +44,7 @@
#define EMBER_AF_SOFTWARE_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_SWITCH_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -127,6 +128,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
index 79266bd..c6e5348 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
@@ -3563,6 +3563,7 @@
| Thermostat | 0x0201 |
| ThermostatUserInterfaceConfiguration | 0x0204 |
| ThreadNetworkDiagnostics | 0x0035 |
+| UserLabel | 0x0041 |
| WakeOnLan | 0x0503 |
| WiFiNetworkDiagnostics | 0x0036 |
| WindowCovering | 0x0102 |
@@ -47762,6 +47763,78 @@
};
/*----------------------------------------------------------------------------*\
+| Cluster UserLabel | 0x0041 |
+|------------------------------------------------------------------------------|
+| Commands: | |
+|------------------------------------------------------------------------------|
+| Attributes: | |
+| * LabelList | 0x0000 |
+| * ClusterRevision | 0xFFFD |
+\*----------------------------------------------------------------------------*/
+
+/*
+ * Attribute LabelList
+ */
+class ReadUserLabelLabelList : public ModelCommand
+{
+public:
+ ReadUserLabelLabelList() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "label-list");
+ ModelCommand::AddArguments();
+ }
+
+ ~ReadUserLabelLabelList() {}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0041) command (0x00) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::UserLabelCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttribute<chip::app::Clusters::UserLabel::Attributes::LabelList::TypeInfo>(this, OnAttributeResponse,
+ OnDefaultFailure);
+ }
+
+ static void OnAttributeResponse(
+ void * context,
+ const chip::app::DataModel::DecodableList<chip::app::Clusters::UserLabel::Structs::LabelStruct::DecodableType> & value)
+ {
+ OnGeneralAttributeResponse(context, "UserLabel.LabelList response", value);
+ }
+};
+
+/*
+ * Attribute ClusterRevision
+ */
+class ReadUserLabelClusterRevision : public ModelCommand
+{
+public:
+ ReadUserLabelClusterRevision() : ModelCommand("read")
+ {
+ AddArgument("attr-name", "cluster-revision");
+ ModelCommand::AddArguments();
+ }
+
+ ~ReadUserLabelClusterRevision() {}
+
+ CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override
+ {
+ ChipLogProgress(chipTool, "Sending cluster (0x0041) command (0x00) on endpoint %" PRIu8, endpointId);
+
+ chip::Controller::UserLabelCluster cluster;
+ cluster.Associate(device, endpointId);
+ return cluster.ReadAttribute<chip::app::Clusters::UserLabel::Attributes::ClusterRevision::TypeInfo>(
+ this, OnAttributeResponse, OnDefaultFailure);
+ }
+
+ static void OnAttributeResponse(void * context, uint16_t value)
+ {
+ OnGeneralAttributeResponse(context, "UserLabel.ClusterRevision response", value);
+ }
+};
+
+/*----------------------------------------------------------------------------*\
| Cluster WakeOnLan | 0x0503 |
|------------------------------------------------------------------------------|
| Commands: | |
@@ -52482,6 +52555,17 @@
commands.Register(clusterName, clusterCommands);
}
+void registerClusterUserLabel(Commands & commands)
+{
+ const char * clusterName = "UserLabel";
+
+ commands_list clusterCommands = {
+ make_unique<ReadUserLabelLabelList>(), //
+ make_unique<ReadUserLabelClusterRevision>(), //
+ };
+
+ commands.Register(clusterName, clusterCommands);
+}
void registerClusterWakeOnLan(Commands & commands)
{
const char * clusterName = "WakeOnLan";
@@ -52653,6 +52737,7 @@
registerClusterThermostat(commands);
registerClusterThermostatUserInterfaceConfiguration(commands);
registerClusterThreadNetworkDiagnostics(commands);
+ registerClusterUserLabel(commands);
registerClusterWakeOnLan(commands);
registerClusterWiFiNetworkDiagnostics(commands);
registerClusterWindowCovering(commands);
diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h
index 497a812..163a654 100644
--- a/zzz_generated/chip-tool/zap-generated/test/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h
@@ -48948,8 +48948,10 @@
VerifyOrReturn(CheckNextListItemDecodes<decltype(serverList)>("serverList", iter, 20));
VerifyOrReturn(CheckValue("serverList[20]", iter.GetValue(), 64UL));
VerifyOrReturn(CheckNextListItemDecodes<decltype(serverList)>("serverList", iter, 21));
- VerifyOrReturn(CheckValue("serverList[21]", iter.GetValue(), 1029UL));
- VerifyOrReturn(CheckNoMoreListItems<decltype(serverList)>("serverList", iter, 22));
+ VerifyOrReturn(CheckValue("serverList[21]", iter.GetValue(), 65UL));
+ VerifyOrReturn(CheckNextListItemDecodes<decltype(serverList)>("serverList", iter, 22));
+ VerifyOrReturn(CheckValue("serverList[22]", iter.GetValue(), 1029UL));
+ VerifyOrReturn(CheckNoMoreListItems<decltype(serverList)>("serverList", iter, 23));
NextTest();
}
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp
index 5eac6a0..2df9174 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp
@@ -2140,6 +2140,27 @@
cb->mCall(cb->mContext, list);
}
+void UserLabelClusterLabelListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback,
+ Callback::Cancelable * onFailureCallback)
+{
+ chip::app::DataModel::DecodableList<chip::app::Clusters::UserLabel::Structs::LabelStruct::DecodableType> list;
+ CHIP_ERROR err = Decode(*tlvData, list);
+ if (err != CHIP_NO_ERROR)
+ {
+ if (onFailureCallback != nullptr)
+ {
+ Callback::Callback<DefaultFailureCallback> * cb =
+ Callback::Callback<DefaultFailureCallback>::FromCancelable(onFailureCallback);
+ cb->mCall(cb->mContext, EMBER_ZCL_STATUS_INVALID_VALUE);
+ }
+ return;
+ }
+
+ Callback::Callback<UserLabelLabelListListAttributeCallback> * cb =
+ Callback::Callback<UserLabelLabelListListAttributeCallback>::FromCancelable(onSuccessCallback);
+ cb->mCall(cb->mContext, list);
+}
+
void WakeOnLanClusterAttributeListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback,
Callback::Cancelable * onFailureCallback)
{
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
index f2a70a9..63c28f7 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
@@ -602,6 +602,11 @@
chip::Callback::Cancelable * onFailureCallback);
typedef void (*ThreadNetworkDiagnosticsAttributeListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
+void UserLabelClusterLabelListListAttributeFilter(chip::TLV::TLVReader * data, chip::Callback::Cancelable * onSuccessCallback,
+ chip::Callback::Cancelable * onFailureCallback);
+typedef void (*UserLabelLabelListListAttributeCallback)(
+ void * context,
+ const chip::app::DataModel::DecodableList<chip::app::Clusters::UserLabel::Structs::LabelStruct::DecodableType> & data);
void WakeOnLanClusterAttributeListListAttributeFilter(chip::TLV::TLVReader * data, chip::Callback::Cancelable * onSuccessCallback,
chip::Callback::Cancelable * onFailureCallback);
typedef void (*WakeOnLanAttributeListListAttributeCallback)(void * context,
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp
index 0821629..9fb89cf 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.cpp
@@ -14491,6 +14491,9 @@
BasicAttributeFilter<Int16uAttributeCallback>);
}
+// UserLabel Cluster Commands
+// UserLabel Cluster Attributes
+
// WakeOnLan Cluster Commands
// WakeOnLan Cluster Attributes
CHIP_ERROR WakeOnLanCluster::SubscribeAttributeWakeOnLanMacAddress(Callback::Cancelable * onSuccessCallback,
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
index f506386..a0a5651 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
@@ -2401,6 +2401,15 @@
private:
};
+class DLL_EXPORT UserLabelCluster : public ClusterBase
+{
+public:
+ UserLabelCluster() : ClusterBase(app::Clusters::UserLabel::Id) {}
+ ~UserLabelCluster() {}
+
+ // Cluster Attributes
+};
+
class DLL_EXPORT WakeOnLanCluster : public ClusterBase
{
public:
diff --git a/zzz_generated/controller-clusters/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/controller-clusters/zap-generated/PluginApplicationCallbacks.h
index 4146faa..2f85009 100644
--- a/zzz_generated/controller-clusters/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/controller-clusters/zap-generated/PluginApplicationCallbacks.h
@@ -78,6 +78,7 @@
MatterThermostatPluginClientInitCallback(); \
MatterThermostatUserInterfaceConfigurationPluginClientInitCallback(); \
MatterThreadNetworkDiagnosticsPluginClientInitCallback(); \
+ MatterUserLabelPluginClientInitCallback(); \
MatterWakeOnLanPluginClientInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginClientInitCallback(); \
MatterWindowCoveringPluginClientInitCallback();
diff --git a/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp b/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp
index facaa03..cce54b2 100644
--- a/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp
+++ b/zzz_generated/controller-clusters/zap-generated/callback-stub.cpp
@@ -197,6 +197,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WAKE_ON_LAN_CLUSTER_ID:
emberAfWakeOnLanClusterInitCallback(endpoint);
break;
@@ -492,6 +495,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWakeOnLanClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/controller-clusters/zap-generated/endpoint_config.h b/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
index 0157cf9..ca02d5a 100644
--- a/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
+++ b/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
@@ -318,7 +318,7 @@
#define GENERATED_FUNCTION_ARRAYS
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 59
+#define GENERATED_CLUSTER_COUNT 60
#define GENERATED_CLUSTERS \
{ \
{ 0x0003, ZAP_ATTRIBUTE_INDEX(0), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Identify (client) */ \
@@ -398,6 +398,9 @@
0x0040, ZAP_ATTRIBUTE_INDEX(33), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Fixed Label (client) */ \
{ \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(34), 0, 0, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ }, /* Endpoint: 1, Cluster: User Label (client) */ \
+ { \
0x0045, ZAP_ATTRIBUTE_INDEX(34), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Boolean State (client) */ \
{ \
@@ -491,7 +494,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 59, 138 }, \
+ { ZAP_CLUSTER_INDEX(0), 60, 138 }, \
}
// Largest attribute size is needed for various buffers
diff --git a/zzz_generated/controller-clusters/zap-generated/gen_config.h b/zzz_generated/controller-clusters/zap-generated/gen_config.h
index 7a8812f..0a03eea 100644
--- a/zzz_generated/controller-clusters/zap-generated/gen_config.h
+++ b/zzz_generated/controller-clusters/zap-generated/gen_config.h
@@ -85,6 +85,7 @@
#define EMBER_AF_THERMOSTAT_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_THERMOSTAT_UI_CONFIG_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_WAKE_ON_LAN_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_WINDOW_COVERING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
@@ -315,6 +316,10 @@
#define ZCL_USING_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_CLIENT
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_CLIENT
+// Use this macro to check if the client side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_USER_LABEL_CLIENT
+
// Use this macro to check if the client side of the Wake on LAN cluster is included
#define ZCL_USING_WAKE_ON_LAN_CLUSTER_CLIENT
#define EMBER_AF_PLUGIN_WAKE_ON_LAN_CLIENT
diff --git a/zzz_generated/controller-clusters/zap-generated/tests/CHIPClustersTest.h b/zzz_generated/controller-clusters/zap-generated/tests/CHIPClustersTest.h
index 5d08ee0..7ef1a5c 100644
--- a/zzz_generated/controller-clusters/zap-generated/tests/CHIPClustersTest.h
+++ b/zzz_generated/controller-clusters/zap-generated/tests/CHIPClustersTest.h
@@ -416,6 +416,13 @@
~ThreadNetworkDiagnosticsClusterTest() {}
};
+class DLL_EXPORT UserLabelClusterTest : public UserLabelCluster
+{
+public:
+ UserLabelClusterTest() : UserLabelCluster() {}
+ ~UserLabelClusterTest() {}
+};
+
class DLL_EXPORT WakeOnLanClusterTest : public WakeOnLanCluster
{
public:
diff --git a/zzz_generated/lighting-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/lighting-app/zap-generated/PluginApplicationCallbacks.h
index 83b1566..7a74288 100644
--- a/zzz_generated/lighting-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/lighting-app/zap-generated/PluginApplicationCallbacks.h
@@ -42,4 +42,5 @@
MatterOperationalCredentialsPluginServerInitCallback(); \
MatterSoftwareDiagnosticsPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/lighting-app/zap-generated/callback-stub.cpp b/zzz_generated/lighting-app/zap-generated/callback-stub.cpp
index 5023426..68b30d1 100644
--- a/zzz_generated/lighting-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/lighting-app/zap-generated/callback-stub.cpp
@@ -86,6 +86,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -190,6 +193,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h
index 708660f..d908e44 100644
--- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h
@@ -577,7 +577,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 219
+#define GENERATED_ATTRIBUTE_COUNT 221
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -772,6 +772,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: Identify (server) */ \
{ 0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \
ZAP_MIN_MAX_DEFAULTS_INDEX(0) }, /* identify time */ \
@@ -884,7 +888,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 22
+#define GENERATED_CLUSTER_COUNT 23
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -930,44 +934,47 @@
{ \
0x0040, ZAP_ATTRIBUTE_INDEX(157), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
+ { \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(159), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
{ 0x0003, \
- ZAP_ATTRIBUTE_INDEX(159), \
+ ZAP_ATTRIBUTE_INDEX(161), \
3, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayIdentifyServer }, /* Endpoint: 1, Cluster: Identify (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(162), \
+ ZAP_ATTRIBUTE_INDEX(164), \
7, \
13, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/Off (server) */ \
{ 0x0008, \
- ZAP_ATTRIBUTE_INDEX(169), \
+ ZAP_ATTRIBUTE_INDEX(171), \
15, \
23, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(184), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(186), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ 0x0300, \
- ZAP_ATTRIBUTE_INDEX(189), \
+ ZAP_ATTRIBUTE_INDEX(191), \
22, \
36, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayColorControlServer }, /* Endpoint: 1, Cluster: Color Control (server) */ \
{ 0x0406, \
- ZAP_ATTRIBUTE_INDEX(211), \
+ ZAP_ATTRIBUTE_INDEX(213), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOccupancySensingServer }, /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \
{ \
- 0x0006, ZAP_ATTRIBUTE_INDEX(215), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0006, ZAP_ATTRIBUTE_INDEX(217), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 2, Cluster: On/Off (client) */ \
{ \
- 0x0007, ZAP_ATTRIBUTE_INDEX(216), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0007, ZAP_ATTRIBUTE_INDEX(218), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: On/off Switch Configuration (server) */ \
}
@@ -976,7 +983,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 14, 1434 }, { ZAP_CLUSTER_INDEX(14), 6, 82 }, { ZAP_CLUSTER_INDEX(20), 2, 6 }, \
+ { ZAP_CLUSTER_INDEX(0), 15, 1436 }, { ZAP_CLUSTER_INDEX(15), 6, 82 }, { ZAP_CLUSTER_INDEX(21), 2, 6 }, \
}
// Largest attribute size is needed for various buffers
@@ -986,7 +993,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (687)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (1522)
+#define ATTRIBUTE_MAX_SIZE (1524)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (3)
diff --git a/zzz_generated/lighting-app/zap-generated/gen_config.h b/zzz_generated/lighting-app/zap-generated/gen_config.h
index 7e597d7..1b3c5ed 100644
--- a/zzz_generated/lighting-app/zap-generated/gen_config.h
+++ b/zzz_generated/lighting-app/zap-generated/gen_config.h
@@ -49,6 +49,7 @@
#define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_SOFTWARE_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -159,6 +160,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER
diff --git a/zzz_generated/lock-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/lock-app/zap-generated/PluginApplicationCallbacks.h
index 21bc133..9a4bb6e 100644
--- a/zzz_generated/lock-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/lock-app/zap-generated/PluginApplicationCallbacks.h
@@ -37,4 +37,5 @@
MatterPowerSourceConfigurationPluginServerInitCallback(); \
MatterSoftwareDiagnosticsPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/lock-app/zap-generated/callback-stub.cpp b/zzz_generated/lock-app/zap-generated/callback-stub.cpp
index e40d5ad..ab25a52 100644
--- a/zzz_generated/lock-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/lock-app/zap-generated/callback-stub.cpp
@@ -74,6 +74,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -158,6 +161,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/lock-app/zap-generated/endpoint_config.h b/zzz_generated/lock-app/zap-generated/endpoint_config.h
index 53d35ef..e033827 100644
--- a/zzz_generated/lock-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/lock-app/zap-generated/endpoint_config.h
@@ -601,7 +601,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 180
+#define GENERATED_ATTRIBUTE_COUNT 182
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -799,6 +799,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: On/Off (server) */ \
{ 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* OnOff */ \
{ 0x4000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(1) }, /* GlobalSceneControl */ \
@@ -840,7 +844,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 18
+#define GENERATED_CLUSTER_COUNT 19
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -889,17 +893,20 @@
{ \
0x0040, ZAP_ATTRIBUTE_INDEX(157), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
+ { \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(159), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(159), \
+ ZAP_ATTRIBUTE_INDEX(161), \
7, \
13, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/Off (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(166), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(168), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x002F, ZAP_ATTRIBUTE_INDEX(171), 9, 133, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x002F, ZAP_ATTRIBUTE_INDEX(173), 9, 133, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Power Source (server) */ \
}
@@ -908,7 +915,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 15, 1068 }, { ZAP_CLUSTER_INDEX(15), 3, 146 }, \
+ { ZAP_CLUSTER_INDEX(0), 16, 1070 }, { ZAP_CLUSTER_INDEX(16), 3, 146 }, \
}
// Largest attribute size is needed for various buffers
@@ -918,7 +925,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (246)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (1214)
+#define ATTRIBUTE_MAX_SIZE (1216)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (2)
diff --git a/zzz_generated/lock-app/zap-generated/gen_config.h b/zzz_generated/lock-app/zap-generated/gen_config.h
index 02b87bb..39b4ce0 100644
--- a/zzz_generated/lock-app/zap-generated/gen_config.h
+++ b/zzz_generated/lock-app/zap-generated/gen_config.h
@@ -44,6 +44,7 @@
#define EMBER_AF_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_SOFTWARE_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -123,6 +124,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER
diff --git a/zzz_generated/ota-provider-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/ota-provider-app/zap-generated/PluginApplicationCallbacks.h
index aec9847..fad0ef9 100644
--- a/zzz_generated/ota-provider-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/ota-provider-app/zap-generated/PluginApplicationCallbacks.h
@@ -26,4 +26,5 @@
MatterGeneralCommissioningPluginServerInitCallback(); \
MatterNetworkCommissioningPluginServerInitCallback(); \
MatterOtaSoftwareUpdateProviderPluginServerInitCallback(); \
- MatterOperationalCredentialsPluginServerInitCallback();
+ MatterOperationalCredentialsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback();
diff --git a/zzz_generated/ota-provider-app/zap-generated/callback-stub.cpp b/zzz_generated/ota-provider-app/zap-generated/callback-stub.cpp
index 2168775..38d0520 100644
--- a/zzz_generated/ota-provider-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/ota-provider-app/zap-generated/callback-stub.cpp
@@ -44,6 +44,9 @@
case ZCL_OPERATIONAL_CREDENTIALS_CLUSTER_ID:
emberAfOperationalCredentialsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
default:
// Unrecognized cluster ID
break;
@@ -75,6 +78,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
//
// Non-Cluster Related Callbacks
diff --git a/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h b/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h
index 08889c6..7fd4bfc 100644
--- a/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h
@@ -133,7 +133,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 25
+#define GENERATED_ATTRIBUTE_COUNT 27
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -173,6 +173,10 @@
/* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
}
// This is an array of EmberAfCluster structures.
@@ -182,7 +186,7 @@
#define GENERATED_FUNCTION_ARRAYS
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 5
+#define GENERATED_CLUSTER_COUNT 6
#define GENERATED_CLUSTERS \
{ \
{ \
@@ -200,6 +204,9 @@
{ \
0x0040, ZAP_ATTRIBUTE_INDEX(23), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
+ { \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(25), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
}
#define ZAP_CLUSTER_INDEX(index) ((EmberAfCluster *) (&generatedClusters[index]))
@@ -207,7 +214,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 5, 338 }, \
+ { ZAP_CLUSTER_INDEX(0), 6, 340 }, \
}
// Largest attribute size is needed for various buffers
@@ -217,7 +224,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (0)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (338)
+#define ATTRIBUTE_MAX_SIZE (340)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (1)
diff --git a/zzz_generated/ota-provider-app/zap-generated/gen_config.h b/zzz_generated/ota-provider-app/zap-generated/gen_config.h
index 97b0d32..9f87a95 100644
--- a/zzz_generated/ota-provider-app/zap-generated/gen_config.h
+++ b/zzz_generated/ota-provider-app/zap-generated/gen_config.h
@@ -34,6 +34,7 @@
#define EMBER_AF_NETWORK_COMMISSIONING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_OTA_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -61,3 +62,8 @@
#define ZCL_USING_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_OPERATIONAL_CREDENTIALS_SERVER
#define EMBER_AF_PLUGIN_OPERATIONAL_CREDENTIALS
+
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
diff --git a/zzz_generated/ota-requestor-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/ota-requestor-app/zap-generated/PluginApplicationCallbacks.h
index 751199e..3bbd9e5 100644
--- a/zzz_generated/ota-requestor-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/ota-requestor-app/zap-generated/PluginApplicationCallbacks.h
@@ -28,4 +28,5 @@
MatterNetworkCommissioningPluginServerInitCallback(); \
MatterOtaSoftwareUpdateProviderPluginClientInitCallback(); \
MatterOtaSoftwareUpdateRequestorPluginServerInitCallback(); \
- MatterOperationalCredentialsPluginServerInitCallback();
+ MatterOperationalCredentialsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback();
diff --git a/zzz_generated/ota-requestor-app/zap-generated/callback-stub.cpp b/zzz_generated/ota-requestor-app/zap-generated/callback-stub.cpp
index 0b2cfd8..10c525b 100644
--- a/zzz_generated/ota-requestor-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/ota-requestor-app/zap-generated/callback-stub.cpp
@@ -50,6 +50,9 @@
case ZCL_OPERATIONAL_CREDENTIALS_CLUSTER_ID:
emberAfOperationalCredentialsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
default:
// Unrecognized cluster ID
break;
@@ -91,6 +94,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
//
// Non-Cluster Related Callbacks
diff --git a/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h b/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h
index fa1969d..7ad4ffc 100644
--- a/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h
@@ -143,7 +143,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 40
+#define GENERATED_ATTRIBUTE_COUNT 42
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -204,6 +204,10 @@
/* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
}
// This is an array of EmberAfCluster structures.
@@ -216,7 +220,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 7
+#define GENERATED_CLUSTER_COUNT 8
#define GENERATED_CLUSTERS \
{ \
{ 0x0028, \
@@ -243,6 +247,9 @@
{ \
0x0040, ZAP_ATTRIBUTE_INDEX(38), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
+ { \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(40), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
}
#define ZAP_CLUSTER_INDEX(index) ((EmberAfCluster *) (&generatedClusters[index]))
@@ -250,7 +257,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 7, 604 }, \
+ { ZAP_CLUSTER_INDEX(0), 8, 606 }, \
}
// Largest attribute size is needed for various buffers
@@ -260,7 +267,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (246)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (604)
+#define ATTRIBUTE_MAX_SIZE (606)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (1)
diff --git a/zzz_generated/ota-requestor-app/zap-generated/gen_config.h b/zzz_generated/ota-requestor-app/zap-generated/gen_config.h
index 2f13047..d317f39 100644
--- a/zzz_generated/ota-requestor-app/zap-generated/gen_config.h
+++ b/zzz_generated/ota-requestor-app/zap-generated/gen_config.h
@@ -36,6 +36,7 @@
#define EMBER_AF_OTA_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_OTA_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -72,3 +73,8 @@
#define ZCL_USING_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_OPERATIONAL_CREDENTIALS_SERVER
#define EMBER_AF_PLUGIN_OPERATIONAL_CREDENTIALS
+
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
diff --git a/zzz_generated/pump-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/pump-app/zap-generated/PluginApplicationCallbacks.h
index a0d76e2..80bf851 100644
--- a/zzz_generated/pump-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/pump-app/zap-generated/PluginApplicationCallbacks.h
@@ -43,4 +43,5 @@
MatterTemperatureMeasurementPluginClientInitCallback(); \
MatterTemperatureMeasurementPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/pump-app/zap-generated/callback-stub.cpp b/zzz_generated/pump-app/zap-generated/callback-stub.cpp
index d78842c..bf672f6 100644
--- a/zzz_generated/pump-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/pump-app/zap-generated/callback-stub.cpp
@@ -83,6 +83,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -182,6 +185,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/pump-app/zap-generated/endpoint_config.h b/zzz_generated/pump-app/zap-generated/endpoint_config.h
index d7c53f2..ce516cc 100644
--- a/zzz_generated/pump-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/pump-app/zap-generated/endpoint_config.h
@@ -587,7 +587,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 201
+#define GENERATED_ATTRIBUTE_COUNT 203
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -773,6 +773,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: On/Off (server) */ \
{ 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* OnOff */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(4) }, /* ClusterRevision */ \
@@ -868,7 +872,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 23
+#define GENERATED_CLUSTER_COUNT 24
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -911,46 +915,49 @@
{ \
0x0040, ZAP_ATTRIBUTE_INDEX(149), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
+ { \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(151), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(151), \
+ ZAP_ATTRIBUTE_INDEX(153), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/Off (server) */ \
{ 0x0008, \
- ZAP_ATTRIBUTE_INDEX(153), \
+ ZAP_ATTRIBUTE_INDEX(155), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(155), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(157), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
0x0200, \
- ZAP_ATTRIBUTE_INDEX(160), \
+ ZAP_ATTRIBUTE_INDEX(162), \
26, \
54, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayPumpConfigurationAndControlServer \
}, /* Endpoint: 1, Cluster: Pump Configuration and Control (server) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(186), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(188), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(187), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(189), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \
{ \
- 0x0403, ZAP_ATTRIBUTE_INDEX(191), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0403, ZAP_ATTRIBUTE_INDEX(193), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Pressure Measurement (client) */ \
{ \
- 0x0403, ZAP_ATTRIBUTE_INDEX(192), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0403, ZAP_ATTRIBUTE_INDEX(194), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \
{ \
- 0x0404, ZAP_ATTRIBUTE_INDEX(196), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0404, ZAP_ATTRIBUTE_INDEX(198), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Flow Measurement (client) */ \
{ \
- 0x0404, ZAP_ATTRIBUTE_INDEX(197), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0404, ZAP_ATTRIBUTE_INDEX(199), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Flow Measurement (server) */ \
}
@@ -959,7 +966,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 13, 993 }, { ZAP_CLUSTER_INDEX(13), 10, 90 }, \
+ { ZAP_CLUSTER_INDEX(0), 14, 995 }, { ZAP_CLUSTER_INDEX(14), 10, 90 }, \
}
// Largest attribute size is needed for various buffers
@@ -969,7 +976,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (246)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (1083)
+#define ATTRIBUTE_MAX_SIZE (1085)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (2)
diff --git a/zzz_generated/pump-app/zap-generated/gen_config.h b/zzz_generated/pump-app/zap-generated/gen_config.h
index 46fa028..8a9ff77 100644
--- a/zzz_generated/pump-app/zap-generated/gen_config.h
+++ b/zzz_generated/pump-app/zap-generated/gen_config.h
@@ -50,6 +50,7 @@
#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -160,6 +161,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER
diff --git a/zzz_generated/pump-controller-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/pump-controller-app/zap-generated/PluginApplicationCallbacks.h
index b08531c..1421697 100644
--- a/zzz_generated/pump-controller-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/pump-controller-app/zap-generated/PluginApplicationCallbacks.h
@@ -40,4 +40,5 @@
MatterSoftwareDiagnosticsPluginServerInitCallback(); \
MatterTemperatureMeasurementPluginClientInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/pump-controller-app/zap-generated/callback-stub.cpp b/zzz_generated/pump-controller-app/zap-generated/callback-stub.cpp
index d78842c..bf672f6 100644
--- a/zzz_generated/pump-controller-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/pump-controller-app/zap-generated/callback-stub.cpp
@@ -83,6 +83,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -182,6 +185,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
index f5c466c..825bde5 100644
--- a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
@@ -553,7 +553,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 162
+#define GENERATED_ATTRIBUTE_COUNT 164
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -742,6 +742,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: On/Off (client) */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(2) }, /* ClusterRevision */ \
\
@@ -775,7 +779,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 20
+#define GENERATED_CLUSTER_COUNT 21
#define GENERATED_CLUSTERS \
{ \
{ \
@@ -824,22 +828,25 @@
0x0040, ZAP_ATTRIBUTE_INDEX(150), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ \
- 0x0006, ZAP_ATTRIBUTE_INDEX(152), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(152), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
+ { \
+ 0x0006, ZAP_ATTRIBUTE_INDEX(154), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: On/Off (client) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(153), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(155), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x0200, ZAP_ATTRIBUTE_INDEX(158), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0200, ZAP_ATTRIBUTE_INDEX(160), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Pump Configuration and Control (client) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(159), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(161), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \
{ \
- 0x0403, ZAP_ATTRIBUTE_INDEX(160), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0403, ZAP_ATTRIBUTE_INDEX(162), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Pressure Measurement (client) */ \
{ \
- 0x0404, ZAP_ATTRIBUTE_INDEX(161), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0404, ZAP_ATTRIBUTE_INDEX(163), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Flow Measurement (client) */ \
}
@@ -848,7 +855,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 14, 995 }, { ZAP_CLUSTER_INDEX(14), 6, 10 }, \
+ { ZAP_CLUSTER_INDEX(0), 15, 997 }, { ZAP_CLUSTER_INDEX(15), 6, 10 }, \
}
// Largest attribute size is needed for various buffers
@@ -858,7 +865,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (246)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (1005)
+#define ATTRIBUTE_MAX_SIZE (1007)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (2)
diff --git a/zzz_generated/pump-controller-app/zap-generated/gen_config.h b/zzz_generated/pump-controller-app/zap-generated/gen_config.h
index cc87f1d..718e956 100644
--- a/zzz_generated/pump-controller-app/zap-generated/gen_config.h
+++ b/zzz_generated/pump-controller-app/zap-generated/gen_config.h
@@ -47,6 +47,7 @@
#define EMBER_AF_SOFTWARE_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -135,6 +136,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER
diff --git a/zzz_generated/temperature-measurement-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/temperature-measurement-app/zap-generated/PluginApplicationCallbacks.h
index be5a468..b6ef4d1 100644
--- a/zzz_generated/temperature-measurement-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/temperature-measurement-app/zap-generated/PluginApplicationCallbacks.h
@@ -34,4 +34,5 @@
MatterOperationalCredentialsPluginServerInitCallback(); \
MatterSoftwareDiagnosticsPluginServerInitCallback(); \
MatterTemperatureMeasurementPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/temperature-measurement-app/zap-generated/callback-stub.cpp b/zzz_generated/temperature-measurement-app/zap-generated/callback-stub.cpp
index 5930143..b5982df 100644
--- a/zzz_generated/temperature-measurement-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/temperature-measurement-app/zap-generated/callback-stub.cpp
@@ -65,6 +65,9 @@
case ZCL_TEMP_MEASUREMENT_CLUSTER_ID:
emberAfTemperatureMeasurementClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -134,6 +137,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h
index c79a69c..1c080af 100644
--- a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h
@@ -279,7 +279,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 92
+#define GENERATED_ATTRIBUTE_COUNT 94
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -393,6 +393,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: Descriptor (server) */ \
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* device list */ \
{ 0x0001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* server list */ \
@@ -417,7 +421,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 14
+#define GENERATED_CLUSTER_COUNT 15
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -458,10 +462,13 @@
0x0040, ZAP_ATTRIBUTE_INDEX(81), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(83), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(83), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
+ { \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(85), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(88), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(90), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \
}
@@ -470,7 +477,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 12, 730 }, { ZAP_CLUSTER_INDEX(12), 2, 8 }, \
+ { ZAP_CLUSTER_INDEX(0), 13, 732 }, { ZAP_CLUSTER_INDEX(13), 2, 8 }, \
}
// Largest attribute size is needed for various buffers
@@ -480,7 +487,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (246)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (738)
+#define ATTRIBUTE_MAX_SIZE (740)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (2)
diff --git a/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h b/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h
index 51cfe86..60f8d01 100644
--- a/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h
+++ b/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h
@@ -41,6 +41,7 @@
#define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_SOFTWARE_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -105,6 +106,11 @@
#define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT_SERVER
#define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER
diff --git a/zzz_generated/thermostat/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/thermostat/zap-generated/PluginApplicationCallbacks.h
index a84fd22..ddf961a 100644
--- a/zzz_generated/thermostat/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/thermostat/zap-generated/PluginApplicationCallbacks.h
@@ -42,4 +42,5 @@
MatterSoftwareDiagnosticsPluginServerInitCallback(); \
MatterThermostatPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/thermostat/zap-generated/callback-stub.cpp b/zzz_generated/thermostat/zap-generated/callback-stub.cpp
index 1f87b6c..19e86e1 100644
--- a/zzz_generated/thermostat/zap-generated/callback-stub.cpp
+++ b/zzz_generated/thermostat/zap-generated/callback-stub.cpp
@@ -86,6 +86,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -190,6 +193,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/thermostat/zap-generated/endpoint_config.h b/zzz_generated/thermostat/zap-generated/endpoint_config.h
index 133223b..31e99d2 100644
--- a/zzz_generated/thermostat/zap-generated/endpoint_config.h
+++ b/zzz_generated/thermostat/zap-generated/endpoint_config.h
@@ -664,7 +664,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 209
+#define GENERATED_ATTRIBUTE_COUNT 211
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -877,6 +877,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: Identify (client) */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(2) }, /* ClusterRevision */ \
\
@@ -968,7 +972,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 23
+#define GENERATED_CLUSTER_COUNT 24
#define GENERATED_CLUSTERS \
{ \
{ 0x0003, \
@@ -1027,34 +1031,37 @@
0x0040, ZAP_ATTRIBUTE_INDEX(164), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ \
- 0x0003, ZAP_ATTRIBUTE_INDEX(166), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(166), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
+ { \
+ 0x0003, ZAP_ATTRIBUTE_INDEX(168), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \
}, /* Endpoint: 1, Cluster: Identify (client) */ \
{ 0x0003, \
- ZAP_ATTRIBUTE_INDEX(167), \
+ ZAP_ATTRIBUTE_INDEX(169), \
3, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayIdentifyServer }, /* Endpoint: 1, Cluster: Identify (server) */ \
{ 0x0004, \
- ZAP_ATTRIBUTE_INDEX(170), \
+ ZAP_ATTRIBUTE_INDEX(172), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayGroupsServer }, /* Endpoint: 1, Cluster: Groups (server) */ \
{ 0x0005, \
- ZAP_ATTRIBUTE_INDEX(172), \
+ ZAP_ATTRIBUTE_INDEX(174), \
6, \
8, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayScenesServer }, /* Endpoint: 1, Cluster: Scenes (server) */ \
{ 0x0028, \
- ZAP_ATTRIBUTE_INDEX(178), \
+ ZAP_ATTRIBUTE_INDEX(180), \
12, \
246, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayBasicServer }, /* Endpoint: 1, Cluster: Basic (server) */ \
{ 0x0201, \
- ZAP_ATTRIBUTE_INDEX(190), \
+ ZAP_ATTRIBUTE_INDEX(192), \
19, \
34, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -1066,7 +1073,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 17, 1952 }, { ZAP_CLUSTER_INDEX(17), 6, 298 }, \
+ { ZAP_CLUSTER_INDEX(0), 18, 1954 }, { ZAP_CLUSTER_INDEX(18), 6, 298 }, \
}
// Largest attribute size is needed for various buffers
@@ -1076,7 +1083,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (933)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (2250)
+#define ATTRIBUTE_MAX_SIZE (2252)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (2)
diff --git a/zzz_generated/thermostat/zap-generated/gen_config.h b/zzz_generated/thermostat/zap-generated/gen_config.h
index a4ac6db..2b56c70 100644
--- a/zzz_generated/thermostat/zap-generated/gen_config.h
+++ b/zzz_generated/thermostat/zap-generated/gen_config.h
@@ -49,6 +49,7 @@
#define EMBER_AF_SOFTWARE_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
/**** Cluster Plugins ****/
@@ -154,6 +155,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER
diff --git a/zzz_generated/tv-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/tv-app/zap-generated/PluginApplicationCallbacks.h
index edfd135..3a08594 100644
--- a/zzz_generated/tv-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/tv-app/zap-generated/PluginApplicationCallbacks.h
@@ -54,5 +54,6 @@
MatterTvChannelPluginServerInitCallback(); \
MatterTargetNavigatorPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWakeOnLanPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback();
diff --git a/zzz_generated/tv-app/zap-generated/callback-stub.cpp b/zzz_generated/tv-app/zap-generated/callback-stub.cpp
index b008bb2..5e13a06 100644
--- a/zzz_generated/tv-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/tv-app/zap-generated/callback-stub.cpp
@@ -116,6 +116,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WAKE_ON_LAN_CLUSTER_ID:
emberAfWakeOnLanClusterInitCallback(endpoint);
break;
@@ -273,6 +276,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWakeOnLanClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/tv-app/zap-generated/endpoint_config.h b/zzz_generated/tv-app/zap-generated/endpoint_config.h
index 9d60eae..69ffa9c 100644
--- a/zzz_generated/tv-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/tv-app/zap-generated/endpoint_config.h
@@ -976,7 +976,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 274
+#define GENERATED_ATTRIBUTE_COUNT 276
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -1192,6 +1192,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* measured value */ \
{ 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* min measured value */ \
@@ -1379,7 +1383,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 44
+#define GENERATED_CLUSTER_COUNT 45
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -1439,88 +1443,91 @@
0x0040, ZAP_ATTRIBUTE_INDEX(165), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ \
- 0x0405, ZAP_ATTRIBUTE_INDEX(167), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(167), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
+ { \
+ 0x0405, ZAP_ATTRIBUTE_INDEX(169), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(171), \
+ ZAP_ATTRIBUTE_INDEX(173), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/Off (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(173), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(175), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x0503, ZAP_ATTRIBUTE_INDEX(178), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0503, ZAP_ATTRIBUTE_INDEX(180), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Wake on LAN (server) */ \
{ \
- 0x0504, ZAP_ATTRIBUTE_INDEX(180), 4, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0504, ZAP_ATTRIBUTE_INDEX(182), 4, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: TV Channel (server) */ \
{ \
- 0x0505, ZAP_ATTRIBUTE_INDEX(184), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0505, ZAP_ATTRIBUTE_INDEX(186), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Target Navigator (server) */ \
{ \
- 0x0507, ZAP_ATTRIBUTE_INDEX(187), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0507, ZAP_ATTRIBUTE_INDEX(189), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Media Input (server) */ \
{ \
- 0x0508, ZAP_ATTRIBUTE_INDEX(190), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0508, ZAP_ATTRIBUTE_INDEX(192), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Low Power (server) */ \
{ \
- 0x0509, ZAP_ATTRIBUTE_INDEX(191), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0509, ZAP_ATTRIBUTE_INDEX(193), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Keypad Input (server) */ \
{ \
- 0x050A, ZAP_ATTRIBUTE_INDEX(192), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050A, ZAP_ATTRIBUTE_INDEX(194), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Content Launcher (server) */ \
{ \
- 0x050C, ZAP_ATTRIBUTE_INDEX(195), 3, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050C, ZAP_ATTRIBUTE_INDEX(197), 3, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Application Launcher (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(198), \
+ ZAP_ATTRIBUTE_INDEX(200), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 2, Cluster: On/Off (server) */ \
{ 0x0008, \
- ZAP_ATTRIBUTE_INDEX(200), \
+ ZAP_ATTRIBUTE_INDEX(202), \
15, \
23, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayLevelControlServer }, /* Endpoint: 2, Cluster: Level Control (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(215), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(217), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: Descriptor (server) */ \
{ \
- 0x050B, ZAP_ATTRIBUTE_INDEX(220), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050B, ZAP_ATTRIBUTE_INDEX(222), 3, 257, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: Audio Output (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(223), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(225), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 3, Cluster: Descriptor (server) */ \
{ \
- 0x0506, ZAP_ATTRIBUTE_INDEX(228), 8, 39, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0506, ZAP_ATTRIBUTE_INDEX(230), 8, 39, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 3, Cluster: Media Playback (server) */ \
{ \
- 0x050A, ZAP_ATTRIBUTE_INDEX(236), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050A, ZAP_ATTRIBUTE_INDEX(238), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 3, Cluster: Content Launcher (server) */ \
{ \
- 0x050D, ZAP_ATTRIBUTE_INDEX(239), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050D, ZAP_ATTRIBUTE_INDEX(241), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 3, Cluster: Application Basic (server) */ \
{ \
- 0x050E, ZAP_ATTRIBUTE_INDEX(246), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050E, ZAP_ATTRIBUTE_INDEX(248), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 3, Cluster: Account Login (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(247), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(249), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 4, Cluster: Descriptor (server) */ \
{ \
- 0x050A, ZAP_ATTRIBUTE_INDEX(252), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050A, ZAP_ATTRIBUTE_INDEX(254), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 4, Cluster: Content Launcher (server) */ \
{ \
- 0x050D, ZAP_ATTRIBUTE_INDEX(255), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050D, ZAP_ATTRIBUTE_INDEX(257), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 4, Cluster: Application Basic (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(262), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(264), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 5, Cluster: Descriptor (server) */ \
{ \
- 0x050D, ZAP_ATTRIBUTE_INDEX(267), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050D, ZAP_ATTRIBUTE_INDEX(269), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 5, Cluster: Application Basic (server) */ \
}
@@ -1529,8 +1536,8 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 20, 1965 }, { ZAP_CLUSTER_INDEX(20), 10, 1328 }, { ZAP_CLUSTER_INDEX(30), 4, 283 }, \
- { ZAP_CLUSTER_INDEX(34), 5, 407 }, { ZAP_CLUSTER_INDEX(39), 3, 366 }, { ZAP_CLUSTER_INDEX(42), 2, 106 }, \
+ { ZAP_CLUSTER_INDEX(0), 21, 1967 }, { ZAP_CLUSTER_INDEX(21), 10, 1328 }, { ZAP_CLUSTER_INDEX(31), 4, 283 }, \
+ { ZAP_CLUSTER_INDEX(35), 5, 407 }, { ZAP_CLUSTER_INDEX(40), 3, 366 }, { ZAP_CLUSTER_INDEX(43), 2, 106 }, \
}
// Largest attribute size is needed for various buffers
@@ -1540,7 +1547,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (686)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (4455)
+#define ATTRIBUTE_MAX_SIZE (4457)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (6)
diff --git a/zzz_generated/tv-app/zap-generated/gen_config.h b/zzz_generated/tv-app/zap-generated/gen_config.h
index d2d2f70..34ff070 100644
--- a/zzz_generated/tv-app/zap-generated/gen_config.h
+++ b/zzz_generated/tv-app/zap-generated/gen_config.h
@@ -61,6 +61,7 @@
#define EMBER_AF_TV_CHANNEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WAKE_ON_LAN_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -227,6 +228,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the Wake on LAN cluster is included
#define ZCL_USING_WAKE_ON_LAN_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WAKE_ON_LAN_SERVER
diff --git a/zzz_generated/tv-casting-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/tv-casting-app/zap-generated/PluginApplicationCallbacks.h
index b8af4a5..3510899 100644
--- a/zzz_generated/tv-casting-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/tv-casting-app/zap-generated/PluginApplicationCallbacks.h
@@ -66,6 +66,7 @@
MatterTestClusterPluginServerInitCallback(); \
MatterThermostatPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWakeOnLanPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback(); \
MatterWindowCoveringPluginServerInitCallback();
diff --git a/zzz_generated/tv-casting-app/zap-generated/callback-stub.cpp b/zzz_generated/tv-casting-app/zap-generated/callback-stub.cpp
index 65fc2d2..4c60160 100644
--- a/zzz_generated/tv-casting-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/tv-casting-app/zap-generated/callback-stub.cpp
@@ -161,6 +161,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WAKE_ON_LAN_CLUSTER_ID:
emberAfWakeOnLanClusterInitCallback(endpoint);
break;
@@ -396,6 +399,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWakeOnLanClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
index 7720521..7b99fc7 100644
--- a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
@@ -1086,7 +1086,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 415
+#define GENERATED_ATTRIBUTE_COUNT 417
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -1294,6 +1294,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* measured value */ \
{ 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* min measured value */ \
@@ -1697,7 +1701,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 53
+#define GENERATED_CLUSTER_COUNT 54
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -1748,146 +1752,149 @@
0x0040, ZAP_ATTRIBUTE_INDEX(162), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
{ \
- 0x0405, ZAP_ATTRIBUTE_INDEX(164), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(164), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
+ { \
+ 0x0405, ZAP_ATTRIBUTE_INDEX(166), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0003, \
- ZAP_ATTRIBUTE_INDEX(168), \
+ ZAP_ATTRIBUTE_INDEX(170), \
2, \
4, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayIdentifyServer }, /* Endpoint: 1, Cluster: Identify (server) */ \
{ 0x0004, \
- ZAP_ATTRIBUTE_INDEX(170), \
+ ZAP_ATTRIBUTE_INDEX(172), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayGroupsServer }, /* Endpoint: 1, Cluster: Groups (server) */ \
{ 0x0005, \
- ZAP_ATTRIBUTE_INDEX(172), \
+ ZAP_ATTRIBUTE_INDEX(174), \
6, \
8, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayScenesServer }, /* Endpoint: 1, Cluster: Scenes (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(178), \
+ ZAP_ATTRIBUTE_INDEX(180), \
7, \
13, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/Off (server) */ \
{ 0x0008, \
- ZAP_ATTRIBUTE_INDEX(185), \
+ ZAP_ATTRIBUTE_INDEX(187), \
15, \
23, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */ \
{ \
- 0x000F, ZAP_ATTRIBUTE_INDEX(200), 4, 5, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x000F, ZAP_ATTRIBUTE_INDEX(202), 4, 5, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Binary Input (Basic) (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(204), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(206), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x001E, ZAP_ATTRIBUTE_INDEX(209), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001E, ZAP_ATTRIBUTE_INDEX(211), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Binding (server) */ \
{ \
- 0x0039, ZAP_ATTRIBUTE_INDEX(210), 15, 646, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0039, ZAP_ATTRIBUTE_INDEX(212), 15, 646, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Bridged Device Basic (server) */ \
{ \
- 0x003B, ZAP_ATTRIBUTE_INDEX(225), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x003B, ZAP_ATTRIBUTE_INDEX(227), 3, 4, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Switch (server) */ \
{ \
- 0x0040, ZAP_ATTRIBUTE_INDEX(228), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0040, ZAP_ATTRIBUTE_INDEX(230), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Fixed Label (server) */ \
{ 0x0101, \
- ZAP_ATTRIBUTE_INDEX(230), \
+ ZAP_ATTRIBUTE_INDEX(232), \
19, \
29, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayDoorLockServer }, /* Endpoint: 1, Cluster: Door Lock (server) */ \
{ \
- 0x0102, ZAP_ATTRIBUTE_INDEX(249), 19, 31, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0102, ZAP_ATTRIBUTE_INDEX(251), 19, 31, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Window Covering (server) */ \
{ \
- 0x0103, ZAP_ATTRIBUTE_INDEX(268), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0103, ZAP_ATTRIBUTE_INDEX(270), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Barrier Control (server) */ \
{ 0x0201, \
- ZAP_ATTRIBUTE_INDEX(273), \
+ ZAP_ATTRIBUTE_INDEX(275), \
10, \
17, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayThermostatServer }, /* Endpoint: 1, Cluster: Thermostat (server) */ \
{ 0x0300, \
- ZAP_ATTRIBUTE_INDEX(283), \
+ ZAP_ATTRIBUTE_INDEX(285), \
51, \
337, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayColorControlServer }, /* Endpoint: 1, Cluster: Color Control (server) */ \
{ \
- 0x0402, ZAP_ATTRIBUTE_INDEX(334), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0402, ZAP_ATTRIBUTE_INDEX(336), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \
{ \
- 0x0403, ZAP_ATTRIBUTE_INDEX(338), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0403, ZAP_ATTRIBUTE_INDEX(340), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \
{ \
- 0x0404, ZAP_ATTRIBUTE_INDEX(342), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0404, ZAP_ATTRIBUTE_INDEX(344), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Flow Measurement (server) */ \
{ \
- 0x0405, ZAP_ATTRIBUTE_INDEX(346), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0405, ZAP_ATTRIBUTE_INDEX(348), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \
{ 0x0500, \
- ZAP_ATTRIBUTE_INDEX(350), \
+ ZAP_ATTRIBUTE_INDEX(352), \
6, \
16, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | \
ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \
chipFuncArrayIasZoneServer }, /* Endpoint: 1, Cluster: IAS Zone (server) */ \
{ \
- 0x0503, ZAP_ATTRIBUTE_INDEX(356), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0503, ZAP_ATTRIBUTE_INDEX(358), 2, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Wake on LAN (server) */ \
{ \
- 0x0504, ZAP_ATTRIBUTE_INDEX(358), 4, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0504, ZAP_ATTRIBUTE_INDEX(360), 4, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: TV Channel (server) */ \
{ \
- 0x0505, ZAP_ATTRIBUTE_INDEX(362), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0505, ZAP_ATTRIBUTE_INDEX(364), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Target Navigator (server) */ \
{ \
- 0x0506, ZAP_ATTRIBUTE_INDEX(364), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0506, ZAP_ATTRIBUTE_INDEX(366), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Media Playback (server) */ \
{ \
- 0x0507, ZAP_ATTRIBUTE_INDEX(365), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0507, ZAP_ATTRIBUTE_INDEX(367), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Media Input (server) */ \
{ \
- 0x0509, ZAP_ATTRIBUTE_INDEX(367), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0509, ZAP_ATTRIBUTE_INDEX(369), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Keypad Input (server) */ \
{ \
- 0x050A, ZAP_ATTRIBUTE_INDEX(368), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050A, ZAP_ATTRIBUTE_INDEX(370), 3, 260, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Content Launcher (server) */ \
{ \
- 0x050B, ZAP_ATTRIBUTE_INDEX(371), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050B, ZAP_ATTRIBUTE_INDEX(373), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Audio Output (server) */ \
{ \
- 0x050C, ZAP_ATTRIBUTE_INDEX(373), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050C, ZAP_ATTRIBUTE_INDEX(375), 2, 256, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Application Launcher (server) */ \
{ \
- 0x050D, ZAP_ATTRIBUTE_INDEX(375), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050D, ZAP_ATTRIBUTE_INDEX(377), 7, 106, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Application Basic (server) */ \
{ \
- 0x050E, ZAP_ATTRIBUTE_INDEX(382), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050E, ZAP_ATTRIBUTE_INDEX(384), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Account Login (server) */ \
{ \
- 0x050F, ZAP_ATTRIBUTE_INDEX(383), 21, 1582, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x050F, ZAP_ATTRIBUTE_INDEX(385), 21, 1582, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Test Cluster (server) */ \
{ 0x0006, \
- ZAP_ATTRIBUTE_INDEX(404), \
+ ZAP_ATTRIBUTE_INDEX(406), \
2, \
3, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
chipFuncArrayOnOffServer }, /* Endpoint: 2, Cluster: On/Off (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(406), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(408), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: Descriptor (server) */ \
{ 0x0406, \
- ZAP_ATTRIBUTE_INDEX(411), \
+ ZAP_ATTRIBUTE_INDEX(413), \
4, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -1899,7 +1906,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 17, 1956 }, { ZAP_CLUSTER_INDEX(17), 33, 4702 }, { ZAP_CLUSTER_INDEX(50), 3, 8 }, \
+ { ZAP_CLUSTER_INDEX(0), 18, 1958 }, { ZAP_CLUSTER_INDEX(18), 33, 4702 }, { ZAP_CLUSTER_INDEX(51), 3, 8 }, \
}
// Largest attribute size is needed for various buffers
@@ -1909,7 +1916,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (1333)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (6666)
+#define ATTRIBUTE_MAX_SIZE (6668)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (3)
diff --git a/zzz_generated/tv-casting-app/zap-generated/gen_config.h b/zzz_generated/tv-casting-app/zap-generated/gen_config.h
index 4a26ee1..221c4e0 100644
--- a/zzz_generated/tv-casting-app/zap-generated/gen_config.h
+++ b/zzz_generated/tv-casting-app/zap-generated/gen_config.h
@@ -73,6 +73,7 @@
#define EMBER_AF_TEST_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WAKE_ON_LAN_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WINDOW_COVERING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -311,6 +312,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the Wake on LAN cluster is included
#define ZCL_USING_WAKE_ON_LAN_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WAKE_ON_LAN_SERVER
diff --git a/zzz_generated/window-app/zap-generated/PluginApplicationCallbacks.h b/zzz_generated/window-app/zap-generated/PluginApplicationCallbacks.h
index e21e76f..711efcc 100644
--- a/zzz_generated/window-app/zap-generated/PluginApplicationCallbacks.h
+++ b/zzz_generated/window-app/zap-generated/PluginApplicationCallbacks.h
@@ -35,5 +35,6 @@
MatterPowerSourcePluginServerInitCallback(); \
MatterSoftwareDiagnosticsPluginServerInitCallback(); \
MatterThreadNetworkDiagnosticsPluginServerInitCallback(); \
+ MatterUserLabelPluginServerInitCallback(); \
MatterWiFiNetworkDiagnosticsPluginServerInitCallback(); \
MatterWindowCoveringPluginServerInitCallback();
diff --git a/zzz_generated/window-app/zap-generated/callback-stub.cpp b/zzz_generated/window-app/zap-generated/callback-stub.cpp
index 139f5b3..797dda2 100644
--- a/zzz_generated/window-app/zap-generated/callback-stub.cpp
+++ b/zzz_generated/window-app/zap-generated/callback-stub.cpp
@@ -68,6 +68,9 @@
case ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfThreadNetworkDiagnosticsClusterInitCallback(endpoint);
break;
+ case ZCL_USER_LABEL_CLUSTER_ID:
+ emberAfUserLabelClusterInitCallback(endpoint);
+ break;
case ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID:
emberAfWiFiNetworkDiagnosticsClusterInitCallback(endpoint);
break;
@@ -145,6 +148,11 @@
// To prevent warning
(void) endpoint;
}
+void __attribute__((weak)) emberAfUserLabelClusterInitCallback(EndpointId endpoint)
+{
+ // To prevent warning
+ (void) endpoint;
+}
void __attribute__((weak)) emberAfWiFiNetworkDiagnosticsClusterInitCallback(EndpointId endpoint)
{
// To prevent warning
diff --git a/zzz_generated/window-app/zap-generated/endpoint_config.h b/zzz_generated/window-app/zap-generated/endpoint_config.h
index 5677bed..6774540 100644
--- a/zzz_generated/window-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/window-app/zap-generated/endpoint_config.h
@@ -609,7 +609,7 @@
#define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 222
+#define GENERATED_ATTRIBUTE_COUNT 224
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -816,6 +816,10 @@
{ 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
{ 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
+ /* Endpoint: 0, Cluster: User Label (server) */ \
+ { 0x0000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* label list */ \
+ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
+ \
/* Endpoint: 1, Cluster: Identify (server) */ \
{ 0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE), \
ZAP_MIN_MAX_DEFAULTS_INDEX(0) }, /* identify time */ \
@@ -897,7 +901,7 @@
};
#define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask
-#define GENERATED_CLUSTER_COUNT 18
+#define GENERATED_CLUSTER_COUNT 19
#define GENERATED_CLUSTERS \
{ \
{ 0x001D, ZAP_ATTRIBUTE_INDEX(0), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL }, /* Endpoint: 0, Cluster: Descriptor (server) */ \
@@ -940,23 +944,26 @@
{ \
0x0040, ZAP_ATTRIBUTE_INDEX(167), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 0, Cluster: Fixed Label (server) */ \
+ { \
+ 0x0041, ZAP_ATTRIBUTE_INDEX(169), 2, 2, ZAP_CLUSTER_MASK(SERVER), NULL \
+ }, /* Endpoint: 0, Cluster: User Label (server) */ \
{ 0x0003, \
- ZAP_ATTRIBUTE_INDEX(169), \
+ ZAP_ATTRIBUTE_INDEX(171), \
3, \
5, \
ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
chipFuncArrayIdentifyServer }, /* Endpoint: 1, Cluster: Identify (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(172), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(174), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Descriptor (server) */ \
{ \
- 0x0102, ZAP_ATTRIBUTE_INDEX(177), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0102, ZAP_ATTRIBUTE_INDEX(179), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 1, Cluster: Window Covering (server) */ \
{ \
- 0x001D, ZAP_ATTRIBUTE_INDEX(197), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x001D, ZAP_ATTRIBUTE_INDEX(199), 5, 0, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: Descriptor (server) */ \
{ \
- 0x0102, ZAP_ATTRIBUTE_INDEX(202), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
+ 0x0102, ZAP_ATTRIBUTE_INDEX(204), 20, 35, ZAP_CLUSTER_MASK(SERVER), NULL \
}, /* Endpoint: 2, Cluster: Window Covering (server) */ \
}
@@ -965,7 +972,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 13, 1489 }, { ZAP_CLUSTER_INDEX(13), 3, 40 }, { ZAP_CLUSTER_INDEX(16), 2, 35 }, \
+ { ZAP_CLUSTER_INDEX(0), 14, 1491 }, { ZAP_CLUSTER_INDEX(14), 3, 40 }, { ZAP_CLUSTER_INDEX(17), 2, 35 }, \
}
// Largest attribute size is needed for various buffers
@@ -975,7 +982,7 @@
#define ATTRIBUTE_SINGLETONS_SIZE (654)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (1564)
+#define ATTRIBUTE_MAX_SIZE (1566)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (3)
diff --git a/zzz_generated/window-app/zap-generated/gen_config.h b/zzz_generated/window-app/zap-generated/gen_config.h
index 861ee27..35647a0 100644
--- a/zzz_generated/window-app/zap-generated/gen_config.h
+++ b/zzz_generated/window-app/zap-generated/gen_config.h
@@ -42,6 +42,7 @@
#define EMBER_AF_POWER_SOURCE_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_SOFTWARE_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_USER_LABEL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
#define EMBER_AF_WINDOW_COVERING_CLUSTER_SERVER_ENDPOINT_COUNT (2)
@@ -112,6 +113,11 @@
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS_SERVER
#define EMBER_AF_PLUGIN_THREAD_NETWORK_DIAGNOSTICS
+// Use this macro to check if the server side of the User Label cluster is included
+#define ZCL_USING_USER_LABEL_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL_SERVER
+#define EMBER_AF_PLUGIN_USER_LABEL
+
// Use this macro to check if the server side of the WiFi Network Diagnostics cluster is included
#define ZCL_USING_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_SERVER
#define EMBER_AF_PLUGIN_WI_FI_NETWORK_DIAGNOSTICS_SERVER