Mark attributes nullable as needed for Thread Network Diagnostics cluster (#18531)
* Mark attributes nullable as needed for Thread Network Diagnostics cluster
* Run codegen
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index e87a25d..33bbbb1 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -3398,8 +3398,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -3445,12 +3445,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter
index d1e0a0c..38b18dd 100644
--- a/examples/bridge-app/bridge-common/bridge-app.matter
+++ b/examples/bridge-app/bridge-common/bridge-app.matter
@@ -908,8 +908,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -955,12 +955,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter
index 0c8a841..538fb49 100644
--- a/examples/light-switch-app/light-switch-common/light-switch-app.matter
+++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter
@@ -1444,8 +1444,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1491,12 +1491,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter
index f0bcf6c..879c4e1 100644
--- a/examples/lighting-app/lighting-common/lighting-app.matter
+++ b/examples/lighting-app/lighting-common/lighting-app.matter
@@ -1431,8 +1431,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1478,12 +1478,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index 92e158b..63885aa 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -1593,8 +1593,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1640,12 +1640,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter
index f1686b0..94831e1 100644
--- a/examples/pump-app/pump-common/pump-app.matter
+++ b/examples/pump-app/pump-common/pump-app.matter
@@ -1400,8 +1400,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1447,12 +1447,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
index 739cf8d..4e9b645 100644
--- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
+++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
@@ -1127,8 +1127,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1174,12 +1174,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter
index 63e8213..0ca30c4 100644
--- a/examples/thermostat/thermostat-common/thermostat.matter
+++ b/examples/thermostat/thermostat-common/thermostat.matter
@@ -1136,8 +1136,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1183,12 +1183,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter
index 98c2bf7..5cb1d7e 100644
--- a/examples/tv-app/tv-common/tv-app.matter
+++ b/examples/tv-app/tv-common/tv-app.matter
@@ -1766,8 +1766,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1813,12 +1813,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
index fd5fbde..314542e 100644
--- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
+++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
@@ -1943,8 +1943,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1990,12 +1990,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter
index 05d50de..ea3aea6 100644
--- a/examples/window-app/common/window-app.matter
+++ b/examples/window-app/common/window-app.matter
@@ -1164,8 +1164,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -1211,12 +1211,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/src/app/tests/suites/certification/Test_TC_DIAG_TH_NW_1_2.yaml b/src/app/tests/suites/certification/Test_TC_DIAG_TH_NW_1_2.yaml
index 73b69d7..d5d24da 100644
--- a/src/app/tests/suites/certification/Test_TC_DIAG_TH_NW_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DIAG_TH_NW_1_2.yaml
@@ -57,9 +57,7 @@
command: "readAttribute"
attribute: "NetworkName"
response:
- constraints:
- type: string
- maxLength: 16
+ value: ""
- label:
"read NetworkName attribute from DUT and verify response value, If
diff --git a/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml
index 9f82743..25d4317 100644
--- a/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/thread-network-diagnostics-cluster.xml
@@ -43,8 +43,8 @@
<item name="LinkFrameCounter" type="INT32U"/>
<item name="MleFrameCounter" type="INT32U"/>
<item name="LQI" type="INT8U"/>
- <item name="AverageRssi" type="INT8S"/>
- <item name="LastRssi" type="INT8S"/>
+ <item name="AverageRssi" type="INT8S" isNullable="true"/>
+ <item name="LastRssi" type="INT8S" isNullable="true"/>
<item name="FrameErrorRate" type="INT8U"/>
<item name="MessageErrorRate" type="INT8U"/>
<item name="RxOnWhenIdle" type="BOOLEAN"/>
@@ -91,12 +91,12 @@
<code>0x0035</code>
<define>THREAD_NETWORK_DIAGNOSTICS_CLUSTER</define>
<description>The Thread Network Diagnostics Cluster provides a means to acquire standardized diagnostics metrics that MAY be used by a Node to assist a user or Administrative Node in diagnosing potential problems</description>
- <attribute side="server" code="0x00" define="CHANNEL" type="INT16U" min="0x00" max="0xFFFF" writable="false" optional="false">channel</attribute>
- <attribute side="server" code="0x01" define="ROUTING_ROLE" type="ENUM8" writable="false" optional="false">RoutingRole</attribute>
- <attribute side="server" code="0x02" define="NETWORK_NAME" type="CHAR_STRING" length="16" writable="false" default="" optional="false">NetworkName</attribute>
- <attribute side="server" code="0x03" define="DIAG_PAN_ID" type="INT16U" min="0x0000" max="0xFFFF" writable="false" default="0x0000" optional="false">PanId</attribute>
- <attribute side="server" code="0x04" define="DIAG_EXTENDED_PAN_ID" type="INT64U" min="0x0000000000000000" max="0xFFFFFFFFFFFFFFFF" writable="false" default="0x0000000000000000" optional="false">ExtendedPanId</attribute>
- <attribute side="server" code="0x05" define="MESH_LOCAL_PREFIX" type="OCTET_STRING" length="17" writable="false" optional="false">MeshLocalPrefix</attribute>
+ <attribute side="server" code="0x00" define="CHANNEL" type="INT16U" min="0x00" max="0xFFFF" writable="false" isNullable="true" optional="false">channel</attribute>
+ <attribute side="server" code="0x01" define="ROUTING_ROLE" type="ENUM8" writable="false" isNullable="true" optional="false">RoutingRole</attribute>
+ <attribute side="server" code="0x02" define="NETWORK_NAME" type="CHAR_STRING" length="16" writable="false" default="" isNullable="true" optional="false">NetworkName</attribute>
+ <attribute side="server" code="0x03" define="DIAG_PAN_ID" type="INT16U" min="0x0000" max="0xFFFF" writable="false" default="0x0000" isNullable="true" optional="false">PanId</attribute>
+ <attribute side="server" code="0x04" define="DIAG_EXTENDED_PAN_ID" type="INT64U" min="0x0000000000000000" max="0xFFFFFFFFFFFFFFFF" writable="false" default="0x0000000000000000" isNullable="true" optional="false">ExtendedPanId</attribute>
+ <attribute side="server" code="0x05" define="MESH_LOCAL_PREFIX" type="OCTET_STRING" length="17" writable="false" isNullable="true" optional="false">MeshLocalPrefix</attribute>
<!-- OVERRUN_COUNT Conformance feature [ERRCNT] - for now mandatory -->
<attribute side="server" code="0x06" define="DIAG_OVERRUN_COUNT" type="INT64U" min="0x0000000000000000" max="0xFFFFFFFFFFFFFFFF" writable="false" default="0x0000000000000000" optional="true">OverrunCount</attribute>
<attribute side="server" code="0x07" define="NEIGHBOR_TABLE" type="ARRAY" entryType="NeighborTable" length="254" writable="false" optional="false">NeighborTableList</attribute>
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index f4b220a..f65952e 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -3911,8 +3911,8 @@
int32u linkFrameCounter = 3;
int32u mleFrameCounter = 4;
int8u lqi = 5;
- int8s averageRssi = 6;
- int8s lastRssi = 7;
+ nullable int8s averageRssi = 6;
+ nullable int8s lastRssi = 7;
int8u frameErrorRate = 8;
int8u messageErrorRate = 9;
boolean rxOnWhenIdle = 10;
@@ -3958,12 +3958,12 @@
ThreadConnectionStatus connectionStatus = 0;
}
- readonly attribute int16u channel = 0;
- readonly attribute enum8 routingRole = 1;
- readonly attribute char_string<16> networkName = 2;
- readonly attribute int16u panId = 3;
- readonly attribute int64u extendedPanId = 4;
- readonly attribute octet_string<17> meshLocalPrefix = 5;
+ readonly attribute nullable int16u channel = 0;
+ readonly attribute nullable enum8 routingRole = 1;
+ readonly attribute nullable char_string<16> networkName = 2;
+ readonly attribute nullable int16u panId = 3;
+ readonly attribute nullable int64u extendedPanId = 4;
+ readonly attribute nullable octet_string<17> meshLocalPrefix = 5;
readonly attribute int64u overrunCount = 6;
readonly attribute NeighborTable neighborTableList[] = 7;
readonly attribute RouteTable routeTableList[] = 8;
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index a64fc9d..2cbd135 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -15339,10 +15339,17 @@
return nullptr;
}
jobject value;
- std::string valueClassName = "java/lang/Integer";
- std::string valueCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<uint16_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
- cppValue, value);
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint16_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue.Value(), value);
+ }
return value;
}
case Attributes::RoutingRole::Id: {
@@ -15354,10 +15361,17 @@
return nullptr;
}
jobject value;
- std::string valueClassName = "java/lang/Integer";
- std::string valueCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<uint8_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
- cppValue, value);
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint8_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue.Value(), value);
+ }
return value;
}
case Attributes::NetworkName::Id: {
@@ -15369,7 +15383,14 @@
return nullptr;
}
jobject value;
- value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str());
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ value = env->NewStringUTF(std::string(cppValue.Value().data(), cppValue.Value().size()).c_str());
+ }
return value;
}
case Attributes::PanId::Id: {
@@ -15381,10 +15402,17 @@
return nullptr;
}
jobject value;
- std::string valueClassName = "java/lang/Integer";
- std::string valueCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<uint16_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
- cppValue, value);
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint16_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue.Value(), value);
+ }
return value;
}
case Attributes::ExtendedPanId::Id: {
@@ -15396,10 +15424,17 @@
return nullptr;
}
jobject value;
- std::string valueClassName = "java/lang/Long";
- std::string valueCtorSignature = "(J)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<uint64_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
- cppValue, value);
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ std::string valueClassName = "java/lang/Long";
+ std::string valueCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint64_t>(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue.Value(), value);
+ }
return value;
}
case Attributes::MeshLocalPrefix::Id: {
@@ -15411,10 +15446,17 @@
return nullptr;
}
jobject value;
- jbyteArray valueByteArray = env->NewByteArray(static_cast<jsize>(cppValue.size()));
- env->SetByteArrayRegion(valueByteArray, 0, static_cast<jsize>(cppValue.size()),
- reinterpret_cast<const jbyte *>(cppValue.data()));
- value = valueByteArray;
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ jbyteArray valueByteArray = env->NewByteArray(static_cast<jsize>(cppValue.Value().size()));
+ env->SetByteArrayRegion(valueByteArray, 0, static_cast<jsize>(cppValue.Value().size()),
+ reinterpret_cast<const jbyte *>(cppValue.Value().data()));
+ value = valueByteArray;
+ }
return value;
}
case Attributes::OverrunCount::Id: {
@@ -15483,17 +15525,31 @@
chip::JniReferences::GetInstance().CreateBoxedObject<uint8_t>(
newElement_0_lqiClassName.c_str(), newElement_0_lqiCtorSignature.c_str(), entry_0.lqi, newElement_0_lqi);
jobject newElement_0_averageRssi;
- std::string newElement_0_averageRssiClassName = "java/lang/Integer";
- std::string newElement_0_averageRssiCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(newElement_0_averageRssiClassName.c_str(),
- newElement_0_averageRssiCtorSignature.c_str(),
- entry_0.averageRssi, newElement_0_averageRssi);
+ if (entry_0.averageRssi.IsNull())
+ {
+ newElement_0_averageRssi = nullptr;
+ }
+ else
+ {
+ std::string newElement_0_averageRssiClassName = "java/lang/Integer";
+ std::string newElement_0_averageRssiCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(
+ newElement_0_averageRssiClassName.c_str(), newElement_0_averageRssiCtorSignature.c_str(),
+ entry_0.averageRssi.Value(), newElement_0_averageRssi);
+ }
jobject newElement_0_lastRssi;
- std::string newElement_0_lastRssiClassName = "java/lang/Integer";
- std::string newElement_0_lastRssiCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(newElement_0_lastRssiClassName.c_str(),
- newElement_0_lastRssiCtorSignature.c_str(),
- entry_0.lastRssi, newElement_0_lastRssi);
+ if (entry_0.lastRssi.IsNull())
+ {
+ newElement_0_lastRssi = nullptr;
+ }
+ else
+ {
+ std::string newElement_0_lastRssiClassName = "java/lang/Integer";
+ std::string newElement_0_lastRssiCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(newElement_0_lastRssiClassName.c_str(),
+ newElement_0_lastRssiCtorSignature.c_str(),
+ entry_0.lastRssi.Value(), newElement_0_lastRssi);
+ }
jobject newElement_0_frameErrorRate;
std::string newElement_0_frameErrorRateClassName = "java/lang/Integer";
std::string newElement_0_frameErrorRateCtorSignature = "(I)V";
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
index 01e8206..4f3fef2 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
@@ -22950,6 +22950,405 @@
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
+CHIPThreadNetworkDiagnosticsChannelAttributeCallback::CHIPThreadNetworkDiagnosticsChannelAttributeCallback(jobject javaCallback,
+ bool keepAlive) :
+ chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterChannelAttributeCallbackType>(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");
+ }
+}
+
+CHIPThreadNetworkDiagnosticsChannelAttributeCallback::~CHIPThreadNetworkDiagnosticsChannelAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPThreadNetworkDiagnosticsChannelAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::Nullable<uint16_t> & value)
+{
+ 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<CHIPThreadNetworkDiagnosticsChannelAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsChannelAttributeCallback *>(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Integer;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ std::string javaValueClassName = "java/lang/Integer";
+ std::string javaValueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint16_t>(javaValueClassName.c_str(), javaValueCtorSignature.c_str(),
+ value.Value(), javaValue);
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
+CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback::CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackType>(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");
+ }
+}
+
+CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback::~CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::Nullable<uint8_t> & value)
+{
+ 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<CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback *>(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Integer;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ std::string javaValueClassName = "java/lang/Integer";
+ std::string javaValueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint8_t>(javaValueClassName.c_str(), javaValueCtorSignature.c_str(),
+ value.Value(), javaValue);
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
+CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback::CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterNetworkNameAttributeCallbackType>(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");
+ }
+}
+
+CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback::~CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::Nullable<chip::CharSpan> & value)
+{
+ 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<CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback *>(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/String;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ javaValue = env->NewStringUTF(std::string(value.Value().data(), value.Value().size()).c_str());
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
+CHIPThreadNetworkDiagnosticsPanIdAttributeCallback::CHIPThreadNetworkDiagnosticsPanIdAttributeCallback(jobject javaCallback,
+ bool keepAlive) :
+ chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterPanIdAttributeCallbackType>(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");
+ }
+}
+
+CHIPThreadNetworkDiagnosticsPanIdAttributeCallback::~CHIPThreadNetworkDiagnosticsPanIdAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPThreadNetworkDiagnosticsPanIdAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::Nullable<uint16_t> & value)
+{
+ 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<CHIPThreadNetworkDiagnosticsPanIdAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsPanIdAttributeCallback *>(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Integer;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ std::string javaValueClassName = "java/lang/Integer";
+ std::string javaValueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint16_t>(javaValueClassName.c_str(), javaValueCtorSignature.c_str(),
+ value.Value(), javaValue);
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
+CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback::CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterExtendedPanIdAttributeCallbackType>(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");
+ }
+}
+
+CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback::~CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::Nullable<uint64_t> & value)
+{
+ 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<CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback *>(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Long;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ std::string javaValueClassName = "java/lang/Long";
+ std::string javaValueCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<uint64_t>(javaValueClassName.c_str(), javaValueCtorSignature.c_str(),
+ value.Value(), javaValue);
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
+CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback::CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterMeshLocalPrefixAttributeCallbackType>(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");
+ }
+}
+
+CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback::~CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::Nullable<chip::ByteSpan> & value)
+{
+ 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<CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback *>(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "([B)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ jbyteArray javaValueByteArray = env->NewByteArray(static_cast<jsize>(value.Value().size()));
+ env->SetByteArrayRegion(javaValueByteArray, 0, static_cast<jsize>(value.Value().size()),
+ reinterpret_cast<const jbyte *>(value.Value().data()));
+ javaValue = javaValueByteArray;
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback::CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback(
jobject javaCallback, bool keepAlive) :
chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterNeighborTableListAttributeCallbackType>(CallbackFn, this),
@@ -23046,17 +23445,31 @@
chip::JniReferences::GetInstance().CreateBoxedObject<uint8_t>(
newElement_0_lqiClassName.c_str(), newElement_0_lqiCtorSignature.c_str(), entry_0.lqi, newElement_0_lqi);
jobject newElement_0_averageRssi;
- std::string newElement_0_averageRssiClassName = "java/lang/Integer";
- std::string newElement_0_averageRssiCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(newElement_0_averageRssiClassName.c_str(),
- newElement_0_averageRssiCtorSignature.c_str(),
- entry_0.averageRssi, newElement_0_averageRssi);
+ if (entry_0.averageRssi.IsNull())
+ {
+ newElement_0_averageRssi = nullptr;
+ }
+ else
+ {
+ std::string newElement_0_averageRssiClassName = "java/lang/Integer";
+ std::string newElement_0_averageRssiCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(newElement_0_averageRssiClassName.c_str(),
+ newElement_0_averageRssiCtorSignature.c_str(),
+ entry_0.averageRssi.Value(), newElement_0_averageRssi);
+ }
jobject newElement_0_lastRssi;
- std::string newElement_0_lastRssiClassName = "java/lang/Integer";
- std::string newElement_0_lastRssiCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(newElement_0_lastRssiClassName.c_str(),
- newElement_0_lastRssiCtorSignature.c_str(), entry_0.lastRssi,
- newElement_0_lastRssi);
+ if (entry_0.lastRssi.IsNull())
+ {
+ newElement_0_lastRssi = nullptr;
+ }
+ else
+ {
+ std::string newElement_0_lastRssiClassName = "java/lang/Integer";
+ std::string newElement_0_lastRssiCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject<int8_t>(newElement_0_lastRssiClassName.c_str(),
+ newElement_0_lastRssiCtorSignature.c_str(),
+ entry_0.lastRssi.Value(), newElement_0_lastRssi);
+ }
jobject newElement_0_frameErrorRate;
std::string newElement_0_frameErrorRateClassName = "java/lang/Integer";
std::string newElement_0_frameErrorRateCtorSignature = "(I)V";
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h
index 1e5da59..2572272 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h
@@ -9393,6 +9393,186 @@
bool keepAlive;
};
+class CHIPThreadNetworkDiagnosticsChannelAttributeCallback
+ : public chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterChannelAttributeCallbackType>
+{
+public:
+ CHIPThreadNetworkDiagnosticsChannelAttributeCallback(jobject javaCallback, bool keepAlive = false);
+
+ ~CHIPThreadNetworkDiagnosticsChannelAttributeCallback();
+
+ static void maybeDestroy(CHIPThreadNetworkDiagnosticsChannelAttributeCallback * callback)
+ {
+ if (!callback->keepAlive)
+ {
+ callback->Cancel();
+ chip::Platform::Delete<CHIPThreadNetworkDiagnosticsChannelAttributeCallback>(callback);
+ }
+ }
+
+ static void CallbackFn(void * context, const chip::app::DataModel::Nullable<uint16_t> & value);
+ static void OnSubscriptionEstablished(void * context)
+ {
+ CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsChannelAttributeCallback *>(context)->javaCallbackRef);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
+ };
+
+private:
+ jobject javaCallbackRef;
+ bool keepAlive;
+};
+
+class CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback
+ : public chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterRoutingRoleAttributeCallbackType>
+{
+public:
+ CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback(jobject javaCallback, bool keepAlive = false);
+
+ ~CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback();
+
+ static void maybeDestroy(CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback * callback)
+ {
+ if (!callback->keepAlive)
+ {
+ callback->Cancel();
+ chip::Platform::Delete<CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback>(callback);
+ }
+ }
+
+ static void CallbackFn(void * context, const chip::app::DataModel::Nullable<uint8_t> & value);
+ static void OnSubscriptionEstablished(void * context)
+ {
+ CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsRoutingRoleAttributeCallback *>(context)->javaCallbackRef);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
+ };
+
+private:
+ jobject javaCallbackRef;
+ bool keepAlive;
+};
+
+class CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback
+ : public chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterNetworkNameAttributeCallbackType>
+{
+public:
+ CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback(jobject javaCallback, bool keepAlive = false);
+
+ ~CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback();
+
+ static void maybeDestroy(CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback * callback)
+ {
+ if (!callback->keepAlive)
+ {
+ callback->Cancel();
+ chip::Platform::Delete<CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback>(callback);
+ }
+ }
+
+ static void CallbackFn(void * context, const chip::app::DataModel::Nullable<chip::CharSpan> & value);
+ static void OnSubscriptionEstablished(void * context)
+ {
+ CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsNetworkNameAttributeCallback *>(context)->javaCallbackRef);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
+ };
+
+private:
+ jobject javaCallbackRef;
+ bool keepAlive;
+};
+
+class CHIPThreadNetworkDiagnosticsPanIdAttributeCallback
+ : public chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterPanIdAttributeCallbackType>
+{
+public:
+ CHIPThreadNetworkDiagnosticsPanIdAttributeCallback(jobject javaCallback, bool keepAlive = false);
+
+ ~CHIPThreadNetworkDiagnosticsPanIdAttributeCallback();
+
+ static void maybeDestroy(CHIPThreadNetworkDiagnosticsPanIdAttributeCallback * callback)
+ {
+ if (!callback->keepAlive)
+ {
+ callback->Cancel();
+ chip::Platform::Delete<CHIPThreadNetworkDiagnosticsPanIdAttributeCallback>(callback);
+ }
+ }
+
+ static void CallbackFn(void * context, const chip::app::DataModel::Nullable<uint16_t> & value);
+ static void OnSubscriptionEstablished(void * context)
+ {
+ CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsPanIdAttributeCallback *>(context)->javaCallbackRef);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
+ };
+
+private:
+ jobject javaCallbackRef;
+ bool keepAlive;
+};
+
+class CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback
+ : public chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterExtendedPanIdAttributeCallbackType>
+{
+public:
+ CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback(jobject javaCallback, bool keepAlive = false);
+
+ ~CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback();
+
+ static void maybeDestroy(CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback * callback)
+ {
+ if (!callback->keepAlive)
+ {
+ callback->Cancel();
+ chip::Platform::Delete<CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback>(callback);
+ }
+ }
+
+ static void CallbackFn(void * context, const chip::app::DataModel::Nullable<uint64_t> & value);
+ static void OnSubscriptionEstablished(void * context)
+ {
+ CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsExtendedPanIdAttributeCallback *>(context)->javaCallbackRef);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
+ };
+
+private:
+ jobject javaCallbackRef;
+ bool keepAlive;
+};
+
+class CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback
+ : public chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterMeshLocalPrefixAttributeCallbackType>
+{
+public:
+ CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback(jobject javaCallback, bool keepAlive = false);
+
+ ~CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback();
+
+ static void maybeDestroy(CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback * callback)
+ {
+ if (!callback->keepAlive)
+ {
+ callback->Cancel();
+ chip::Platform::Delete<CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback>(callback);
+ }
+ }
+
+ static void CallbackFn(void * context, const chip::app::DataModel::Nullable<chip::ByteSpan> & value);
+ static void OnSubscriptionEstablished(void * context)
+ {
+ CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
+ reinterpret_cast<CHIPThreadNetworkDiagnosticsMeshLocalPrefixAttributeCallback *>(context)->javaCallbackRef);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
+ };
+
+private:
+ jobject javaCallbackRef;
+ bool keepAlive;
+};
+
class CHIPThreadNetworkDiagnosticsNeighborTableListAttributeCallback
: public chip::Callback::Callback<CHIPThreadNetworkDiagnosticsClusterNeighborTableListAttributeCallbackType>
{
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index 1cc32e7..a7e7af6 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -20750,6 +20750,54 @@
DefaultClusterCallback Callback,
@Nullable Integer timedInvokeTimeoutMs);
+ public interface ChannelAttributeCallback {
+ void onSuccess(@Nullable Integer value);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished() {}
+ }
+
+ public interface RoutingRoleAttributeCallback {
+ void onSuccess(@Nullable Integer value);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished() {}
+ }
+
+ public interface NetworkNameAttributeCallback {
+ void onSuccess(@Nullable String value);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished() {}
+ }
+
+ public interface PanIdAttributeCallback {
+ void onSuccess(@Nullable Integer value);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished() {}
+ }
+
+ public interface ExtendedPanIdAttributeCallback {
+ void onSuccess(@Nullable Long value);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished() {}
+ }
+
+ public interface MeshLocalPrefixAttributeCallback {
+ void onSuccess(@Nullable byte[] value);
+
+ void onError(Exception ex);
+
+ default void onSubscriptionEstablished() {}
+ }
+
public interface NeighborTableListAttributeCallback {
void onSuccess(List<ChipStructs.ThreadNetworkDiagnosticsClusterNeighborTable> valueList);
@@ -20815,57 +20863,57 @@
default void onSubscriptionEstablished() {}
}
- public void readChannelAttribute(IntegerAttributeCallback callback) {
+ public void readChannelAttribute(ChannelAttributeCallback callback) {
readChannelAttribute(chipClusterPtr, callback);
}
public void subscribeChannelAttribute(
- IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ ChannelAttributeCallback callback, int minInterval, int maxInterval) {
subscribeChannelAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
- public void readRoutingRoleAttribute(IntegerAttributeCallback callback) {
+ public void readRoutingRoleAttribute(RoutingRoleAttributeCallback callback) {
readRoutingRoleAttribute(chipClusterPtr, callback);
}
public void subscribeRoutingRoleAttribute(
- IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ RoutingRoleAttributeCallback callback, int minInterval, int maxInterval) {
subscribeRoutingRoleAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
- public void readNetworkNameAttribute(CharStringAttributeCallback callback) {
+ public void readNetworkNameAttribute(NetworkNameAttributeCallback callback) {
readNetworkNameAttribute(chipClusterPtr, callback);
}
public void subscribeNetworkNameAttribute(
- CharStringAttributeCallback callback, int minInterval, int maxInterval) {
+ NetworkNameAttributeCallback callback, int minInterval, int maxInterval) {
subscribeNetworkNameAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
- public void readPanIdAttribute(IntegerAttributeCallback callback) {
+ public void readPanIdAttribute(PanIdAttributeCallback callback) {
readPanIdAttribute(chipClusterPtr, callback);
}
public void subscribePanIdAttribute(
- IntegerAttributeCallback callback, int minInterval, int maxInterval) {
+ PanIdAttributeCallback callback, int minInterval, int maxInterval) {
subscribePanIdAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
- public void readExtendedPanIdAttribute(LongAttributeCallback callback) {
+ public void readExtendedPanIdAttribute(ExtendedPanIdAttributeCallback callback) {
readExtendedPanIdAttribute(chipClusterPtr, callback);
}
public void subscribeExtendedPanIdAttribute(
- LongAttributeCallback callback, int minInterval, int maxInterval) {
+ ExtendedPanIdAttributeCallback callback, int minInterval, int maxInterval) {
subscribeExtendedPanIdAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
- public void readMeshLocalPrefixAttribute(OctetStringAttributeCallback callback) {
+ public void readMeshLocalPrefixAttribute(MeshLocalPrefixAttributeCallback callback) {
readMeshLocalPrefixAttribute(chipClusterPtr, callback);
}
public void subscribeMeshLocalPrefixAttribute(
- OctetStringAttributeCallback callback, int minInterval, int maxInterval) {
+ MeshLocalPrefixAttributeCallback callback, int minInterval, int maxInterval) {
subscribeMeshLocalPrefixAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
@@ -21436,43 +21484,49 @@
}
private native void readChannelAttribute(
- long chipClusterPtr, IntegerAttributeCallback callback);
+ long chipClusterPtr, ChannelAttributeCallback callback);
private native void subscribeChannelAttribute(
- long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+ long chipClusterPtr, ChannelAttributeCallback callback, int minInterval, int maxInterval);
private native void readRoutingRoleAttribute(
- long chipClusterPtr, IntegerAttributeCallback callback);
+ long chipClusterPtr, RoutingRoleAttributeCallback callback);
private native void subscribeRoutingRoleAttribute(
- long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
-
- private native void readNetworkNameAttribute(
- long chipClusterPtr, CharStringAttributeCallback callback);
-
- private native void subscribeNetworkNameAttribute(
long chipClusterPtr,
- CharStringAttributeCallback callback,
+ RoutingRoleAttributeCallback callback,
int minInterval,
int maxInterval);
- private native void readPanIdAttribute(long chipClusterPtr, IntegerAttributeCallback callback);
+ private native void readNetworkNameAttribute(
+ long chipClusterPtr, NetworkNameAttributeCallback callback);
+
+ private native void subscribeNetworkNameAttribute(
+ long chipClusterPtr,
+ NetworkNameAttributeCallback callback,
+ int minInterval,
+ int maxInterval);
+
+ private native void readPanIdAttribute(long chipClusterPtr, PanIdAttributeCallback callback);
private native void subscribePanIdAttribute(
- long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
+ long chipClusterPtr, PanIdAttributeCallback callback, int minInterval, int maxInterval);
private native void readExtendedPanIdAttribute(
- long chipClusterPtr, LongAttributeCallback callback);
+ long chipClusterPtr, ExtendedPanIdAttributeCallback callback);
private native void subscribeExtendedPanIdAttribute(
- long chipClusterPtr, LongAttributeCallback callback, int minInterval, int maxInterval);
+ long chipClusterPtr,
+ ExtendedPanIdAttributeCallback callback,
+ int minInterval,
+ int maxInterval);
private native void readMeshLocalPrefixAttribute(
- long chipClusterPtr, OctetStringAttributeCallback callback);
+ long chipClusterPtr, MeshLocalPrefixAttributeCallback callback);
private native void subscribeMeshLocalPrefixAttribute(
long chipClusterPtr,
- OctetStringAttributeCallback callback,
+ MeshLocalPrefixAttributeCallback callback,
int minInterval,
int maxInterval);
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
index 07b4d35..b386f82 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
@@ -1830,8 +1830,8 @@
public Long linkFrameCounter;
public Long mleFrameCounter;
public Integer lqi;
- public Integer averageRssi;
- public Integer lastRssi;
+ public @Nullable Integer averageRssi;
+ public @Nullable Integer lastRssi;
public Integer frameErrorRate;
public Integer messageErrorRate;
public Boolean rxOnWhenIdle;
@@ -1846,8 +1846,8 @@
Long linkFrameCounter,
Long mleFrameCounter,
Integer lqi,
- Integer averageRssi,
- Integer lastRssi,
+ @Nullable Integer averageRssi,
+ @Nullable Integer lastRssi,
Integer frameErrorRate,
Integer messageErrorRate,
Boolean rxOnWhenIdle,
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
index 060ec0f..ea07e01 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
@@ -9643,7 +9643,9 @@
new InteractionInfo(
(cluster, callback, commandArguments) -> {
((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster)
- .readChannelAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ .readChannelAttribute(
+ (ChipClusters.ThreadNetworkDiagnosticsCluster.ChannelAttributeCallback)
+ callback);
},
() -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
readThreadNetworkDiagnosticsChannelCommandParams);
@@ -9655,7 +9657,9 @@
new InteractionInfo(
(cluster, callback, commandArguments) -> {
((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster)
- .readRoutingRoleAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ .readRoutingRoleAttribute(
+ (ChipClusters.ThreadNetworkDiagnosticsCluster.RoutingRoleAttributeCallback)
+ callback);
},
() -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
readThreadNetworkDiagnosticsRoutingRoleCommandParams);
@@ -9668,7 +9672,9 @@
new InteractionInfo(
(cluster, callback, commandArguments) -> {
((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster)
- .readNetworkNameAttribute((ChipClusters.CharStringAttributeCallback) callback);
+ .readNetworkNameAttribute(
+ (ChipClusters.ThreadNetworkDiagnosticsCluster.NetworkNameAttributeCallback)
+ callback);
},
() -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
readThreadNetworkDiagnosticsNetworkNameCommandParams);
@@ -9681,7 +9687,9 @@
new InteractionInfo(
(cluster, callback, commandArguments) -> {
((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster)
- .readPanIdAttribute((ChipClusters.IntegerAttributeCallback) callback);
+ .readPanIdAttribute(
+ (ChipClusters.ThreadNetworkDiagnosticsCluster.PanIdAttributeCallback)
+ callback);
},
() -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
readThreadNetworkDiagnosticsPanIdCommandParams);
@@ -9693,7 +9701,9 @@
new InteractionInfo(
(cluster, callback, commandArguments) -> {
((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster)
- .readExtendedPanIdAttribute((ChipClusters.LongAttributeCallback) callback);
+ .readExtendedPanIdAttribute(
+ (ChipClusters.ThreadNetworkDiagnosticsCluster.ExtendedPanIdAttributeCallback)
+ callback);
},
() -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
readThreadNetworkDiagnosticsExtendedPanIdCommandParams);
@@ -9707,7 +9717,9 @@
(cluster, callback, commandArguments) -> {
((ChipClusters.ThreadNetworkDiagnosticsCluster) cluster)
.readMeshLocalPrefixAttribute(
- (ChipClusters.OctetStringAttributeCallback) callback);
+ (ChipClusters.ThreadNetworkDiagnosticsCluster
+ .MeshLocalPrefixAttributeCallback)
+ callback);
},
() -> new ClusterInfoMapping.DelegatedOctetStringAttributeCallback(),
readThreadNetworkDiagnosticsMeshLocalPrefixCommandParams);
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index d0d4d76..7651b96 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -10910,12 +10910,12 @@
def descriptor(cls) -> ClusterObjectDescriptor:
return ClusterObjectDescriptor(
Fields = [
- ClusterObjectFieldDescriptor(Label="channel", Tag=0x00000000, Type=uint),
- ClusterObjectFieldDescriptor(Label="routingRole", Tag=0x00000001, Type=uint),
- ClusterObjectFieldDescriptor(Label="networkName", Tag=0x00000002, Type=str),
- ClusterObjectFieldDescriptor(Label="panId", Tag=0x00000003, Type=uint),
- ClusterObjectFieldDescriptor(Label="extendedPanId", Tag=0x00000004, Type=uint),
- ClusterObjectFieldDescriptor(Label="meshLocalPrefix", Tag=0x00000005, Type=bytes),
+ ClusterObjectFieldDescriptor(Label="channel", Tag=0x00000000, Type=typing.Union[Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="routingRole", Tag=0x00000001, Type=typing.Union[Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="networkName", Tag=0x00000002, Type=typing.Union[Nullable, str]),
+ ClusterObjectFieldDescriptor(Label="panId", Tag=0x00000003, Type=typing.Union[Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="extendedPanId", Tag=0x00000004, Type=typing.Union[Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="meshLocalPrefix", Tag=0x00000005, Type=typing.Union[Nullable, bytes]),
ClusterObjectFieldDescriptor(Label="overrunCount", Tag=0x00000006, Type=typing.Optional[uint]),
ClusterObjectFieldDescriptor(Label="neighborTableList", Tag=0x00000007, Type=typing.List[ThreadNetworkDiagnostics.Structs.NeighborTable]),
ClusterObjectFieldDescriptor(Label="routeTableList", Tag=0x00000008, Type=typing.List[ThreadNetworkDiagnostics.Structs.RouteTable]),
@@ -10980,12 +10980,12 @@
ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
])
- channel: 'uint' = None
- routingRole: 'uint' = None
- networkName: 'str' = None
- panId: 'uint' = None
- extendedPanId: 'uint' = None
- meshLocalPrefix: 'bytes' = None
+ channel: 'typing.Union[Nullable, uint]' = None
+ routingRole: 'typing.Union[Nullable, uint]' = None
+ networkName: 'typing.Union[Nullable, str]' = None
+ panId: 'typing.Union[Nullable, uint]' = None
+ extendedPanId: 'typing.Union[Nullable, uint]' = None
+ meshLocalPrefix: 'typing.Union[Nullable, bytes]' = None
overrunCount: 'typing.Optional[uint]' = None
neighborTableList: 'typing.List[ThreadNetworkDiagnostics.Structs.NeighborTable]' = None
routeTableList: 'typing.List[ThreadNetworkDiagnostics.Structs.RouteTable]' = None
@@ -11083,8 +11083,8 @@
ClusterObjectFieldDescriptor(Label="linkFrameCounter", Tag=3, Type=uint),
ClusterObjectFieldDescriptor(Label="mleFrameCounter", Tag=4, Type=uint),
ClusterObjectFieldDescriptor(Label="lqi", Tag=5, Type=uint),
- ClusterObjectFieldDescriptor(Label="averageRssi", Tag=6, Type=int),
- ClusterObjectFieldDescriptor(Label="lastRssi", Tag=7, Type=int),
+ ClusterObjectFieldDescriptor(Label="averageRssi", Tag=6, Type=typing.Union[Nullable, int]),
+ ClusterObjectFieldDescriptor(Label="lastRssi", Tag=7, Type=typing.Union[Nullable, int]),
ClusterObjectFieldDescriptor(Label="frameErrorRate", Tag=8, Type=uint),
ClusterObjectFieldDescriptor(Label="messageErrorRate", Tag=9, Type=uint),
ClusterObjectFieldDescriptor(Label="rxOnWhenIdle", Tag=10, Type=bool),
@@ -11099,8 +11099,8 @@
linkFrameCounter: 'uint' = 0
mleFrameCounter: 'uint' = 0
lqi: 'uint' = 0
- averageRssi: 'int' = 0
- lastRssi: 'int' = 0
+ averageRssi: 'typing.Union[Nullable, int]' = NullValue
+ lastRssi: 'typing.Union[Nullable, int]' = NullValue
frameErrorRate: 'uint' = 0
messageErrorRate: 'uint' = 0
rxOnWhenIdle: 'bool' = False
@@ -11213,9 +11213,9 @@
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=uint)
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint])
- value: 'uint' = 0
+ value: 'typing.Union[Nullable, uint]' = NullValue
@dataclass
class RoutingRole(ClusterAttributeDescriptor):
@@ -11229,9 +11229,9 @@
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=uint)
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint])
- value: 'uint' = 0
+ value: 'typing.Union[Nullable, uint]' = NullValue
@dataclass
class NetworkName(ClusterAttributeDescriptor):
@@ -11245,9 +11245,9 @@
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=str)
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, str])
- value: 'str' = ""
+ value: 'typing.Union[Nullable, str]' = NullValue
@dataclass
class PanId(ClusterAttributeDescriptor):
@@ -11261,9 +11261,9 @@
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=uint)
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint])
- value: 'uint' = 0
+ value: 'typing.Union[Nullable, uint]' = NullValue
@dataclass
class ExtendedPanId(ClusterAttributeDescriptor):
@@ -11277,9 +11277,9 @@
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=uint)
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint])
- value: 'uint' = 0
+ value: 'typing.Union[Nullable, uint]' = NullValue
@dataclass
class MeshLocalPrefix(ClusterAttributeDescriptor):
@@ -11293,9 +11293,9 @@
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=bytes)
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, bytes])
- value: 'bytes' = b""
+ value: 'typing.Union[Nullable, bytes]' = NullValue
@dataclass
class OverrunCount(ClusterAttributeDescriptor):
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm
index 0717744..f57888d 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm
@@ -14988,8 +14988,12 @@
if (*aError != CHIP_NO_ERROR) {
return nil;
}
- NSNumber * _Nonnull value;
- value = [NSNumber numberWithUnsignedShort:cppValue];
+ NSNumber * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [NSNumber numberWithUnsignedShort:cppValue.Value()];
+ }
return value;
}
case Attributes::RoutingRole::Id: {
@@ -14999,8 +15003,12 @@
if (*aError != CHIP_NO_ERROR) {
return nil;
}
- NSNumber * _Nonnull value;
- value = [NSNumber numberWithUnsignedChar:cppValue];
+ NSNumber * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [NSNumber numberWithUnsignedChar:cppValue.Value()];
+ }
return value;
}
case Attributes::NetworkName::Id: {
@@ -15010,8 +15018,14 @@
if (*aError != CHIP_NO_ERROR) {
return nil;
}
- NSString * _Nonnull value;
- value = [[NSString alloc] initWithBytes:cppValue.data() length:cppValue.size() encoding:NSUTF8StringEncoding];
+ NSString * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [[NSString alloc] initWithBytes:cppValue.Value().data()
+ length:cppValue.Value().size()
+ encoding:NSUTF8StringEncoding];
+ }
return value;
}
case Attributes::PanId::Id: {
@@ -15021,8 +15035,12 @@
if (*aError != CHIP_NO_ERROR) {
return nil;
}
- NSNumber * _Nonnull value;
- value = [NSNumber numberWithUnsignedShort:cppValue];
+ NSNumber * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [NSNumber numberWithUnsignedShort:cppValue.Value()];
+ }
return value;
}
case Attributes::ExtendedPanId::Id: {
@@ -15032,8 +15050,12 @@
if (*aError != CHIP_NO_ERROR) {
return nil;
}
- NSNumber * _Nonnull value;
- value = [NSNumber numberWithUnsignedLongLong:cppValue];
+ NSNumber * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [NSNumber numberWithUnsignedLongLong:cppValue.Value()];
+ }
return value;
}
case Attributes::MeshLocalPrefix::Id: {
@@ -15043,8 +15065,12 @@
if (*aError != CHIP_NO_ERROR) {
return nil;
}
- NSData * _Nonnull value;
- value = [NSData dataWithBytes:cppValue.data() length:cppValue.size()];
+ NSData * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [NSData dataWithBytes:cppValue.Value().data() length:cppValue.Value().size()];
+ }
return value;
}
case Attributes::OverrunCount::Id: {
@@ -15079,8 +15105,16 @@
newElement_0.linkFrameCounter = [NSNumber numberWithUnsignedInt:entry_0.linkFrameCounter];
newElement_0.mleFrameCounter = [NSNumber numberWithUnsignedInt:entry_0.mleFrameCounter];
newElement_0.lqi = [NSNumber numberWithUnsignedChar:entry_0.lqi];
- newElement_0.averageRssi = [NSNumber numberWithChar:entry_0.averageRssi];
- newElement_0.lastRssi = [NSNumber numberWithChar:entry_0.lastRssi];
+ if (entry_0.averageRssi.IsNull()) {
+ newElement_0.averageRssi = nil;
+ } else {
+ newElement_0.averageRssi = [NSNumber numberWithChar:entry_0.averageRssi.Value()];
+ }
+ if (entry_0.lastRssi.IsNull()) {
+ newElement_0.lastRssi = nil;
+ } else {
+ newElement_0.lastRssi = [NSNumber numberWithChar:entry_0.lastRssi.Value()];
+ }
newElement_0.frameErrorRate = [NSNumber numberWithUnsignedChar:entry_0.frameErrorRate];
newElement_0.messageErrorRate = [NSNumber numberWithUnsignedChar:entry_0.messageErrorRate];
newElement_0.rxOnWhenIdle = [NSNumber numberWithBool:entry_0.rxOnWhenIdle];
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
index f3bf004..080c591 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm
@@ -10396,8 +10396,16 @@
newElement_0.linkFrameCounter = [NSNumber numberWithUnsignedInt:entry_0.linkFrameCounter];
newElement_0.mleFrameCounter = [NSNumber numberWithUnsignedInt:entry_0.mleFrameCounter];
newElement_0.lqi = [NSNumber numberWithUnsignedChar:entry_0.lqi];
- newElement_0.averageRssi = [NSNumber numberWithChar:entry_0.averageRssi];
- newElement_0.lastRssi = [NSNumber numberWithChar:entry_0.lastRssi];
+ if (entry_0.averageRssi.IsNull()) {
+ newElement_0.averageRssi = nil;
+ } else {
+ newElement_0.averageRssi = [NSNumber numberWithChar:entry_0.averageRssi.Value()];
+ }
+ if (entry_0.lastRssi.IsNull()) {
+ newElement_0.lastRssi = nil;
+ } else {
+ newElement_0.lastRssi = [NSNumber numberWithChar:entry_0.lastRssi.Value()];
+ }
newElement_0.frameErrorRate = [NSNumber numberWithUnsignedChar:entry_0.frameErrorRate];
newElement_0.messageErrorRate = [NSNumber numberWithUnsignedChar:entry_0.messageErrorRate];
newElement_0.rxOnWhenIdle = [NSNumber numberWithBool:entry_0.rxOnWhenIdle];
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
index 517780b..b4a000c 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm
@@ -73042,12 +73042,13 @@
- (void)readAttributeChannelWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
- using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
- auto successFn = Callback<Int16uAttributeCallback>::FromCancelable(success);
- auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
- return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
- });
+ new CHIPNullableInt16uAttributeCallbackBridge(
+ self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
+ auto successFn = Callback<NullableInt16uAttributeCallback>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
}
- (void)subscribeAttributeChannelWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -73056,7 +73057,7 @@
subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
{
- new CHIPInt16uAttributeCallbackSubscriptionBridge(
+ new CHIPNullableInt16uAttributeCallbackSubscriptionBridge(
self.callbackQueue, reportHandler,
^(Cancelable * success, Cancelable * failure) {
if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) {
@@ -73064,11 +73065,11 @@
return CHIP_ERROR_INVALID_ARGUMENT;
}
using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
- auto successFn = Callback<Int16uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt16uAttributeCallback>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.SubscribeAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall,
[minInterval unsignedShortValue], [maxInterval unsignedShortValue],
- CHIPInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
+ CHIPNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue],
params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]);
},
@@ -73080,7 +73081,7 @@
queue:(dispatch_queue_t)queue
completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ new CHIPNullableInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
if (attributeCacheContainer.cppAttributeCache) {
chip::app::ConcreteAttributePath path;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
@@ -73089,7 +73090,7 @@
path.mAttributeId = TypeInfo::GetAttributeId();
TypeInfo::DecodableType value;
CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get<TypeInfo>(path, value);
- auto successFn = Callback<Int16uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt16uAttributeCallback>::FromCancelable(success);
if (err == CHIP_NO_ERROR) {
successFn->mCall(successFn->mContext, value);
}
@@ -73102,12 +73103,13 @@
- (void)readAttributeRoutingRoleWithCompletionHandler:(void (^)(
NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt8uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
- using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
- auto successFn = Callback<Int8uAttributeCallback>::FromCancelable(success);
- auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
- return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
- });
+ new CHIPNullableInt8uAttributeCallbackBridge(
+ self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
+ auto successFn = Callback<NullableInt8uAttributeCallback>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
}
- (void)subscribeAttributeRoutingRoleWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -73116,7 +73118,7 @@
subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
{
- new CHIPInt8uAttributeCallbackSubscriptionBridge(
+ new CHIPNullableInt8uAttributeCallbackSubscriptionBridge(
self.callbackQueue, reportHandler,
^(Cancelable * success, Cancelable * failure) {
if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) {
@@ -73124,11 +73126,11 @@
return CHIP_ERROR_INVALID_ARGUMENT;
}
using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
- auto successFn = Callback<Int8uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt8uAttributeCallback>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.SubscribeAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall,
[minInterval unsignedShortValue], [maxInterval unsignedShortValue],
- CHIPInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
+ CHIPNullableInt8uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue],
params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]);
},
@@ -73141,7 +73143,7 @@
completionHandler:
(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt8uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ new CHIPNullableInt8uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
if (attributeCacheContainer.cppAttributeCache) {
chip::app::ConcreteAttributePath path;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
@@ -73150,7 +73152,7 @@
path.mAttributeId = TypeInfo::GetAttributeId();
TypeInfo::DecodableType value;
CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get<TypeInfo>(path, value);
- auto successFn = Callback<Int8uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt8uAttributeCallback>::FromCancelable(success);
if (err == CHIP_NO_ERROR) {
successFn->mCall(successFn->mContext, value);
}
@@ -73163,12 +73165,13 @@
- (void)readAttributeNetworkNameWithCompletionHandler:(void (^)(
NSString * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPCharStringAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
- using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
- auto successFn = Callback<CharStringAttributeCallback>::FromCancelable(success);
- auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
- return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
- });
+ new CHIPNullableCharStringAttributeCallbackBridge(
+ self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
+ auto successFn = Callback<NullableCharStringAttributeCallback>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
}
- (void)subscribeAttributeNetworkNameWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -73177,7 +73180,7 @@
subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
{
- new CHIPCharStringAttributeCallbackSubscriptionBridge(
+ new CHIPNullableCharStringAttributeCallbackSubscriptionBridge(
self.callbackQueue, reportHandler,
^(Cancelable * success, Cancelable * failure) {
if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) {
@@ -73185,11 +73188,11 @@
return CHIP_ERROR_INVALID_ARGUMENT;
}
using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
- auto successFn = Callback<CharStringAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableCharStringAttributeCallback>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.SubscribeAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall,
[minInterval unsignedShortValue], [maxInterval unsignedShortValue],
- CHIPCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
+ CHIPNullableCharStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue],
params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]);
},
@@ -73202,7 +73205,7 @@
completionHandler:
(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPCharStringAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ new CHIPNullableCharStringAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
if (attributeCacheContainer.cppAttributeCache) {
chip::app::ConcreteAttributePath path;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
@@ -73211,7 +73214,7 @@
path.mAttributeId = TypeInfo::GetAttributeId();
TypeInfo::DecodableType value;
CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get<TypeInfo>(path, value);
- auto successFn = Callback<CharStringAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableCharStringAttributeCallback>::FromCancelable(success);
if (err == CHIP_NO_ERROR) {
successFn->mCall(successFn->mContext, value);
}
@@ -73223,12 +73226,13 @@
- (void)readAttributePanIdWithCompletionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
- using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
- auto successFn = Callback<Int16uAttributeCallback>::FromCancelable(success);
- auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
- return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
- });
+ new CHIPNullableInt16uAttributeCallbackBridge(
+ self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
+ auto successFn = Callback<NullableInt16uAttributeCallback>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
}
- (void)subscribeAttributePanIdWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -73237,7 +73241,7 @@
subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler
reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
{
- new CHIPInt16uAttributeCallbackSubscriptionBridge(
+ new CHIPNullableInt16uAttributeCallbackSubscriptionBridge(
self.callbackQueue, reportHandler,
^(Cancelable * success, Cancelable * failure) {
if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) {
@@ -73245,11 +73249,11 @@
return CHIP_ERROR_INVALID_ARGUMENT;
}
using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
- auto successFn = Callback<Int16uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt16uAttributeCallback>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.SubscribeAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall,
[minInterval unsignedShortValue], [maxInterval unsignedShortValue],
- CHIPInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
+ CHIPNullableInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue],
params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]);
},
@@ -73261,7 +73265,7 @@
queue:(dispatch_queue_t)queue
completionHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ new CHIPNullableInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
if (attributeCacheContainer.cppAttributeCache) {
chip::app::ConcreteAttributePath path;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
@@ -73270,7 +73274,7 @@
path.mAttributeId = TypeInfo::GetAttributeId();
TypeInfo::DecodableType value;
CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get<TypeInfo>(path, value);
- auto successFn = Callback<Int16uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt16uAttributeCallback>::FromCancelable(success);
if (err == CHIP_NO_ERROR) {
successFn->mCall(successFn->mContext, value);
}
@@ -73283,12 +73287,13 @@
- (void)readAttributeExtendedPanIdWithCompletionHandler:(void (^)(
NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt64uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
- using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
- auto successFn = Callback<Int64uAttributeCallback>::FromCancelable(success);
- auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
- return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
- });
+ new CHIPNullableInt64uAttributeCallbackBridge(
+ self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
+ auto successFn = Callback<NullableInt64uAttributeCallback>::FromCancelable(success);
+ auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
+ return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
+ });
}
- (void)subscribeAttributeExtendedPanIdWithMinInterval:(NSNumber * _Nonnull)minInterval
@@ -73298,7 +73303,7 @@
reportHandler:
(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
{
- new CHIPInt64uAttributeCallbackSubscriptionBridge(
+ new CHIPNullableInt64uAttributeCallbackSubscriptionBridge(
self.callbackQueue, reportHandler,
^(Cancelable * success, Cancelable * failure) {
if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) {
@@ -73306,11 +73311,11 @@
return CHIP_ERROR_INVALID_ARGUMENT;
}
using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
- auto successFn = Callback<Int64uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt64uAttributeCallback>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.SubscribeAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall,
[minInterval unsignedShortValue], [maxInterval unsignedShortValue],
- CHIPInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
+ CHIPNullableInt64uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue],
params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]);
},
@@ -73323,7 +73328,7 @@
completionHandler:
(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPInt64uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ new CHIPNullableInt64uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
if (attributeCacheContainer.cppAttributeCache) {
chip::app::ConcreteAttributePath path;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
@@ -73332,7 +73337,7 @@
path.mAttributeId = TypeInfo::GetAttributeId();
TypeInfo::DecodableType value;
CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get<TypeInfo>(path, value);
- auto successFn = Callback<Int64uAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableInt64uAttributeCallback>::FromCancelable(success);
if (err == CHIP_NO_ERROR) {
successFn->mCall(successFn->mContext, value);
}
@@ -73345,10 +73350,10 @@
- (void)readAttributeMeshLocalPrefixWithCompletionHandler:(void (^)(
NSData * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPOctetStringAttributeCallbackBridge(
+ new CHIPNullableOctetStringAttributeCallbackBridge(
self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
- auto successFn = Callback<OctetStringAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableOctetStringAttributeCallback>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.ReadAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall);
});
@@ -73361,7 +73366,7 @@
reportHandler:
(void (^)(NSData * _Nullable value, NSError * _Nullable error))reportHandler
{
- new CHIPOctetStringAttributeCallbackSubscriptionBridge(
+ new CHIPNullableOctetStringAttributeCallbackSubscriptionBridge(
self.callbackQueue, reportHandler,
^(Cancelable * success, Cancelable * failure) {
if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) {
@@ -73369,11 +73374,11 @@
return CHIP_ERROR_INVALID_ARGUMENT;
}
using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
- auto successFn = Callback<OctetStringAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableOctetStringAttributeCallback>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.SubscribeAttribute<TypeInfo>(successFn->mContext, successFn->mCall, failureFn->mCall,
[minInterval unsignedShortValue], [maxInterval unsignedShortValue],
- CHIPOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
+ CHIPNullableOctetStringAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished,
params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue],
params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]);
},
@@ -73386,7 +73391,7 @@
completionHandler:
(void (^)(NSData * _Nullable value, NSError * _Nullable error))completionHandler
{
- new CHIPOctetStringAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
+ new CHIPNullableOctetStringAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) {
if (attributeCacheContainer.cppAttributeCache) {
chip::app::ConcreteAttributePath path;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
@@ -73395,7 +73400,7 @@
path.mAttributeId = TypeInfo::GetAttributeId();
TypeInfo::DecodableType value;
CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get<TypeInfo>(path, value);
- auto successFn = Callback<OctetStringAttributeCallback>::FromCancelable(success);
+ auto successFn = Callback<NullableOctetStringAttributeCallback>::FromCancelable(success);
if (err == CHIP_NO_ERROR) {
successFn->mCall(successFn->mContext, value);
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h
index 8130f24..3a44e17 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h
@@ -294,8 +294,8 @@
@property (strong, nonatomic) NSNumber * _Nonnull linkFrameCounter;
@property (strong, nonatomic) NSNumber * _Nonnull mleFrameCounter;
@property (strong, nonatomic) NSNumber * _Nonnull lqi;
-@property (strong, nonatomic) NSNumber * _Nonnull averageRssi;
-@property (strong, nonatomic) NSNumber * _Nonnull lastRssi;
+@property (strong, nonatomic) NSNumber * _Nullable averageRssi;
+@property (strong, nonatomic) NSNumber * _Nullable lastRssi;
@property (strong, nonatomic) NSNumber * _Nonnull frameErrorRate;
@property (strong, nonatomic) NSNumber * _Nonnull messageErrorRate;
@property (strong, nonatomic) NSNumber * _Nonnull rxOnWhenIdle;
diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm
index 1c6297a..745f0bb 100644
--- a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm
@@ -635,9 +635,9 @@
_lqi = @(0);
- _averageRssi = @(0);
+ _averageRssi = nil;
- _lastRssi = @(0);
+ _lastRssi = nil;
_frameErrorRate = @(0);
diff --git a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp
index 53f0314..b7a22d1 100644
--- a/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp
+++ b/src/platform/OpenThread/GenericThreadStackManagerImpl_OpenThread.cpp
@@ -1098,15 +1098,20 @@
while (otThreadGetNextNeighborInfo(mOTInst, &iterator, &neighInfo) == OT_ERROR_NONE)
{
ThreadNetworkDiagnostics::Structs::NeighborTable::Type neighborTable;
+ app::DataModel::Nullable<int8_t> averageRssi;
+ app::DataModel::Nullable<int8_t> lastRssi;
+ averageRssi.SetNonNull(neighInfo.mAverageRssi);
+ lastRssi.SetNonNull(neighInfo.mLastRssi);
+
+ neighborTable.averageRssi = averageRssi;
+ neighborTable.lastRssi = lastRssi;
neighborTable.extAddress = Encoding::BigEndian::Get64(neighInfo.mExtAddress.m8);
neighborTable.age = neighInfo.mAge;
neighborTable.rloc16 = neighInfo.mRloc16;
neighborTable.linkFrameCounter = neighInfo.mLinkFrameCounter;
neighborTable.mleFrameCounter = neighInfo.mMleFrameCounter;
neighborTable.lqi = neighInfo.mLinkQualityIn;
- neighborTable.averageRssi = neighInfo.mAverageRssi;
- neighborTable.lastRssi = neighInfo.mLastRssi;
neighborTable.frameErrorRate = neighInfo.mFrameErrorRate;
neighborTable.messageErrorRate = neighInfo.mMessageErrorRate;
neighborTable.rxOnWhenIdle = neighInfo.mRxOnWhenIdle;
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 29c4655..21bb459 100644
--- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
@@ -590,13 +590,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(17) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(19) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(27) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(17) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(19) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(27) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
index fcb0c64..ccd1ec7 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
@@ -8868,24 +8868,27 @@
namespace Channel {
-EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value)
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint16_t> & value)
{
using Traits = NumericAttributeTraits<uint16_t>;
Traits::StorageType temp;
uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, readable, sizeof(temp));
VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
- if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
+ if (Traits::IsNullValue(temp))
{
- return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
+ value.SetNull();
}
- *value = Traits::StorageToWorking(temp);
+ else
+ {
+ value.SetNonNull() = Traits::StorageToWorking(temp);
+ }
return status;
}
EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
{
using Traits = NumericAttributeTraits<uint16_t>;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
+ if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
{
return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
}
@@ -8895,28 +8898,50 @@
return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
}
+EmberAfStatus SetNull(chip::EndpointId endpoint)
+{
+ using Traits = NumericAttributeTraits<uint16_t>;
+ Traits::StorageType value;
+ Traits::SetNull(value);
+ uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
+ return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+}
+
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint16_t> & value)
+{
+ if (value.IsNull())
+ {
+ return SetNull(endpoint);
+ }
+
+ return Set(endpoint, value.Value());
+}
+
} // namespace Channel
namespace RoutingRole {
-EmberAfStatus Get(chip::EndpointId endpoint, uint8_t * value)
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint8_t> & value)
{
using Traits = NumericAttributeTraits<uint8_t>;
Traits::StorageType temp;
uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, readable, sizeof(temp));
VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
- if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
+ if (Traits::IsNullValue(temp))
{
- return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
+ value.SetNull();
}
- *value = Traits::StorageToWorking(temp);
+ else
+ {
+ value.SetNonNull() = Traits::StorageToWorking(temp);
+ }
return status;
}
EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value)
{
using Traits = NumericAttributeTraits<uint8_t>;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
+ if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
{
return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
}
@@ -8926,11 +8951,30 @@
return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
}
+EmberAfStatus SetNull(chip::EndpointId endpoint)
+{
+ using Traits = NumericAttributeTraits<uint8_t>;
+ Traits::StorageType value;
+ Traits::SetNull(value);
+ uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
+ return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
+}
+
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint8_t> & value)
+{
+ if (value.IsNull())
+ {
+ return SetNull(endpoint);
+ }
+
+ return Set(endpoint, value.Value());
+}
+
} // namespace RoutingRole
namespace NetworkName {
-EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<chip::MutableCharSpan> & value)
{
uint8_t zclString[16 + 1];
EmberAfStatus status =
@@ -8939,12 +8983,14 @@
size_t length = emberAfStringLength(zclString);
if (length == NumericAttributeTraits<uint8_t>::kNullValue)
{
- return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
+ value.SetNull();
+ return EMBER_ZCL_STATUS_SUCCESS;
}
+ auto & span = value.SetNonNull();
- VerifyOrReturnError(value.size() == 16, EMBER_ZCL_STATUS_INVALID_DATA_TYPE);
- memcpy(value.data(), &zclString[1], 16);
- value.reduce_size(length);
+ VerifyOrReturnError(span.size() == 16, EMBER_ZCL_STATUS_INVALID_DATA_TYPE);
+ memcpy(span.data(), &zclString[1], 16);
+ span.reduce_size(length);
return status;
}
EmberAfStatus Set(chip::EndpointId endpoint, chip::CharSpan value)
@@ -8958,28 +9004,48 @@
ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
}
+EmberAfStatus SetNull(chip::EndpointId endpoint)
+{
+ uint8_t zclString[1] = { 0xFF };
+ return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, zclString,
+ ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+}
+
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<chip::CharSpan> & value)
+{
+ if (value.IsNull())
+ {
+ return SetNull(endpoint);
+ }
+
+ return Set(endpoint, value.Value());
+}
+
} // namespace NetworkName
namespace PanId {
-EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value)
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint16_t> & value)
{
using Traits = NumericAttributeTraits<uint16_t>;
Traits::StorageType temp;
uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, readable, sizeof(temp));
VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
- if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
+ if (Traits::IsNullValue(temp))
{
- return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
+ value.SetNull();
}
- *value = Traits::StorageToWorking(temp);
+ else
+ {
+ value.SetNonNull() = Traits::StorageToWorking(temp);
+ }
return status;
}
EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value)
{
using Traits = NumericAttributeTraits<uint16_t>;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
+ if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
{
return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
}
@@ -8989,28 +9055,50 @@
return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
}
+EmberAfStatus SetNull(chip::EndpointId endpoint)
+{
+ using Traits = NumericAttributeTraits<uint16_t>;
+ Traits::StorageType value;
+ Traits::SetNull(value);
+ uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
+ return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+}
+
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint16_t> & value)
+{
+ if (value.IsNull())
+ {
+ return SetNull(endpoint);
+ }
+
+ return Set(endpoint, value.Value());
+}
+
} // namespace PanId
namespace ExtendedPanId {
-EmberAfStatus Get(chip::EndpointId endpoint, uint64_t * value)
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint64_t> & value)
{
using Traits = NumericAttributeTraits<uint64_t>;
Traits::StorageType temp;
uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, readable, sizeof(temp));
VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
- if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
+ if (Traits::IsNullValue(temp))
{
- return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
+ value.SetNull();
}
- *value = Traits::StorageToWorking(temp);
+ else
+ {
+ value.SetNonNull() = Traits::StorageToWorking(temp);
+ }
return status;
}
EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value)
{
using Traits = NumericAttributeTraits<uint64_t>;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
+ if (!Traits::CanRepresentValue(/* isNullable = */ true, value))
{
return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
}
@@ -9020,11 +9108,30 @@
return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
}
+EmberAfStatus SetNull(chip::EndpointId endpoint)
+{
+ using Traits = NumericAttributeTraits<uint64_t>;
+ Traits::StorageType value;
+ Traits::SetNull(value);
+ uint8_t * writable = Traits::ToAttributeStoreRepresentation(value);
+ return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, writable, ZCL_INT64U_ATTRIBUTE_TYPE);
+}
+
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint64_t> & value)
+{
+ if (value.IsNull())
+ {
+ return SetNull(endpoint);
+ }
+
+ return Set(endpoint, value.Value());
+}
+
} // namespace ExtendedPanId
namespace MeshLocalPrefix {
-EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableByteSpan value)
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<chip::MutableByteSpan> & value)
{
uint8_t zclString[17 + 1];
EmberAfStatus status =
@@ -9033,12 +9140,14 @@
size_t length = emberAfStringLength(zclString);
if (length == NumericAttributeTraits<uint8_t>::kNullValue)
{
- return EMBER_ZCL_STATUS_CONSTRAINT_ERROR;
+ value.SetNull();
+ return EMBER_ZCL_STATUS_SUCCESS;
}
+ auto & span = value.SetNonNull();
- VerifyOrReturnError(value.size() == 17, EMBER_ZCL_STATUS_INVALID_DATA_TYPE);
- memcpy(value.data(), &zclString[1], 17);
- value.reduce_size(length);
+ VerifyOrReturnError(span.size() == 17, EMBER_ZCL_STATUS_INVALID_DATA_TYPE);
+ memcpy(span.data(), &zclString[1], 17);
+ span.reduce_size(length);
return status;
}
EmberAfStatus Set(chip::EndpointId endpoint, chip::ByteSpan value)
@@ -9052,6 +9161,23 @@
ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
}
+EmberAfStatus SetNull(chip::EndpointId endpoint)
+{
+ uint8_t zclString[1] = { 0xFF };
+ return emberAfWriteServerAttribute(endpoint, Clusters::ThreadNetworkDiagnostics::Id, Id, zclString,
+ ZCL_OCTET_STRING_ATTRIBUTE_TYPE);
+}
+
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<chip::ByteSpan> & value)
+{
+ if (value.IsNull())
+ {
+ return SetNull(endpoint);
+ }
+
+ return Set(endpoint, value.Value());
+}
+
} // namespace MeshLocalPrefix
namespace OverrunCount {
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
index 78e157d..4d812a7 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
@@ -1613,33 +1613,45 @@
namespace Attributes {
namespace Channel {
-EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value); // int16u
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint16_t> & value); // int16u
EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value);
+EmberAfStatus SetNull(chip::EndpointId endpoint);
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint16_t> & value);
} // namespace Channel
namespace RoutingRole {
-EmberAfStatus Get(chip::EndpointId endpoint, uint8_t * value); // enum8
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint8_t> & value); // enum8
EmberAfStatus Set(chip::EndpointId endpoint, uint8_t value);
+EmberAfStatus SetNull(chip::EndpointId endpoint);
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint8_t> & value);
} // namespace RoutingRole
namespace NetworkName {
-EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value); // char_string
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<chip::MutableCharSpan> & value); // char_string
EmberAfStatus Set(chip::EndpointId endpoint, chip::CharSpan value);
+EmberAfStatus SetNull(chip::EndpointId endpoint);
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<chip::CharSpan> & value);
} // namespace NetworkName
namespace PanId {
-EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value); // int16u
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint16_t> & value); // int16u
EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value);
+EmberAfStatus SetNull(chip::EndpointId endpoint);
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint16_t> & value);
} // namespace PanId
namespace ExtendedPanId {
-EmberAfStatus Get(chip::EndpointId endpoint, uint64_t * value); // int64u
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<uint64_t> & value); // int64u
EmberAfStatus Set(chip::EndpointId endpoint, uint64_t value);
+EmberAfStatus SetNull(chip::EndpointId endpoint);
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<uint64_t> & value);
} // namespace ExtendedPanId
namespace MeshLocalPrefix {
-EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableByteSpan value); // octet_string
+EmberAfStatus Get(chip::EndpointId endpoint, DataModel::Nullable<chip::MutableByteSpan> & value); // octet_string
EmberAfStatus Set(chip::EndpointId endpoint, chip::ByteSpan value);
+EmberAfStatus SetNull(chip::EndpointId endpoint);
+EmberAfStatus Set(chip::EndpointId endpoint, const chip::app::DataModel::Nullable<chip::ByteSpan> & value);
} // namespace MeshLocalPrefix
namespace OverrunCount {
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index ca95913..2020f1c 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -12278,14 +12278,14 @@
uint32_t linkFrameCounter = static_cast<uint32_t>(0);
uint32_t mleFrameCounter = static_cast<uint32_t>(0);
uint8_t lqi = static_cast<uint8_t>(0);
- int8_t averageRssi = static_cast<int8_t>(0);
- int8_t lastRssi = static_cast<int8_t>(0);
- uint8_t frameErrorRate = static_cast<uint8_t>(0);
- uint8_t messageErrorRate = static_cast<uint8_t>(0);
- bool rxOnWhenIdle = static_cast<bool>(0);
- bool fullThreadDevice = static_cast<bool>(0);
- bool fullNetworkData = static_cast<bool>(0);
- bool isChild = static_cast<bool>(0);
+ DataModel::Nullable<int8_t> averageRssi;
+ DataModel::Nullable<int8_t> lastRssi;
+ uint8_t frameErrorRate = static_cast<uint8_t>(0);
+ uint8_t messageErrorRate = static_cast<uint8_t>(0);
+ bool rxOnWhenIdle = static_cast<bool>(0);
+ bool fullThreadDevice = static_cast<bool>(0);
+ bool fullNetworkData = static_cast<bool>(0);
+ bool isChild = static_cast<bool>(0);
CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -12450,9 +12450,9 @@
namespace Channel {
struct TypeInfo
{
- using Type = uint16_t;
- using DecodableType = uint16_t;
- using DecodableArgType = uint16_t;
+ using Type = chip::app::DataModel::Nullable<uint16_t>;
+ using DecodableType = chip::app::DataModel::Nullable<uint16_t>;
+ using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &;
static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::Channel::Id; }
@@ -12462,9 +12462,9 @@
namespace RoutingRole {
struct TypeInfo
{
- using Type = uint8_t;
- using DecodableType = uint8_t;
- using DecodableArgType = uint8_t;
+ using Type = chip::app::DataModel::Nullable<uint8_t>;
+ using DecodableType = chip::app::DataModel::Nullable<uint8_t>;
+ using DecodableArgType = const chip::app::DataModel::Nullable<uint8_t> &;
static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::RoutingRole::Id; }
@@ -12474,9 +12474,9 @@
namespace NetworkName {
struct TypeInfo
{
- using Type = chip::CharSpan;
- using DecodableType = chip::CharSpan;
- using DecodableArgType = chip::CharSpan;
+ using Type = chip::app::DataModel::Nullable<chip::CharSpan>;
+ using DecodableType = chip::app::DataModel::Nullable<chip::CharSpan>;
+ using DecodableArgType = const chip::app::DataModel::Nullable<chip::CharSpan> &;
static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::NetworkName::Id; }
@@ -12487,9 +12487,9 @@
namespace PanId {
struct TypeInfo
{
- using Type = uint16_t;
- using DecodableType = uint16_t;
- using DecodableArgType = uint16_t;
+ using Type = chip::app::DataModel::Nullable<uint16_t>;
+ using DecodableType = chip::app::DataModel::Nullable<uint16_t>;
+ using DecodableArgType = const chip::app::DataModel::Nullable<uint16_t> &;
static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::PanId::Id; }
@@ -12499,9 +12499,9 @@
namespace ExtendedPanId {
struct TypeInfo
{
- using Type = uint64_t;
- using DecodableType = uint64_t;
- using DecodableArgType = uint64_t;
+ using Type = chip::app::DataModel::Nullable<uint64_t>;
+ using DecodableType = chip::app::DataModel::Nullable<uint64_t>;
+ using DecodableArgType = const chip::app::DataModel::Nullable<uint64_t> &;
static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::ExtendedPanId::Id; }
@@ -12511,9 +12511,9 @@
namespace MeshLocalPrefix {
struct TypeInfo
{
- using Type = chip::ByteSpan;
- using DecodableType = chip::ByteSpan;
- using DecodableArgType = chip::ByteSpan;
+ using Type = chip::app::DataModel::Nullable<chip::ByteSpan>;
+ using DecodableType = chip::app::DataModel::Nullable<chip::ByteSpan>;
+ using DecodableArgType = const chip::app::DataModel::Nullable<chip::ByteSpan> &;
static constexpr ClusterId GetClusterId() { return Clusters::ThreadNetworkDiagnostics::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::MeshLocalPrefix::Id; }
@@ -13285,11 +13285,11 @@
CHIP_ERROR Decode(TLV::TLVReader & reader, const ConcreteAttributePath & path);
- Attributes::Channel::TypeInfo::DecodableType channel = static_cast<uint16_t>(0);
- Attributes::RoutingRole::TypeInfo::DecodableType routingRole = static_cast<uint8_t>(0);
+ Attributes::Channel::TypeInfo::DecodableType channel;
+ Attributes::RoutingRole::TypeInfo::DecodableType routingRole;
Attributes::NetworkName::TypeInfo::DecodableType networkName;
- Attributes::PanId::TypeInfo::DecodableType panId = static_cast<uint16_t>(0);
- Attributes::ExtendedPanId::TypeInfo::DecodableType extendedPanId = static_cast<uint64_t>(0);
+ Attributes::PanId::TypeInfo::DecodableType panId;
+ Attributes::ExtendedPanId::TypeInfo::DecodableType extendedPanId;
Attributes::MeshLocalPrefix::TypeInfo::DecodableType meshLocalPrefix;
Attributes::OverrunCount::TypeInfo::DecodableType overrunCount = static_cast<uint64_t>(0);
Attributes::NeighborTableList::TypeInfo::DecodableType neighborTableList;
diff --git a/zzz_generated/bridge-app/zap-generated/endpoint_config.h b/zzz_generated/bridge-app/zap-generated/endpoint_config.h
index a67f41b..9674dcf 100644
--- a/zzz_generated/bridge-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/bridge-app/zap-generated/endpoint_config.h
@@ -268,13 +268,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h
index b6812af..e5ed207 100644
--- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h
+++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h
@@ -1372,12 +1372,12 @@
*/
@interface CHIPTestThreadNetworkDiagnostics : CHIPThreadNetworkDiagnostics
-- (void)writeAttributeChannelWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
-- (void)writeAttributeRoutingRoleWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
-- (void)writeAttributeNetworkNameWithValue:(NSString * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
-- (void)writeAttributePanIdWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
-- (void)writeAttributeExtendedPanIdWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
-- (void)writeAttributeMeshLocalPrefixWithValue:(NSData * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
+- (void)writeAttributeChannelWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler;
+- (void)writeAttributeRoutingRoleWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler;
+- (void)writeAttributeNetworkNameWithValue:(NSString * _Nullable)value completionHandler:(StatusCompletion)completionHandler;
+- (void)writeAttributePanIdWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler;
+- (void)writeAttributeExtendedPanIdWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler;
+- (void)writeAttributeMeshLocalPrefixWithValue:(NSData * _Nullable)value completionHandler:(StatusCompletion)completionHandler;
- (void)writeAttributeOverrunCountWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
- (void)writeAttributeNeighborTableListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
- (void)writeAttributeRouteTableListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler;
diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm
index 1279aa8..5dbb4eb 100644
--- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm
+++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm
@@ -18497,7 +18497,7 @@
return &_cppCluster;
}
-- (void)writeAttributeChannelWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+- (void)writeAttributeChannelWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler
{
new CHIPDefaultSuccessCallbackBridge(
self.callbackQueue,
@@ -18508,14 +18508,19 @@
ListFreer listFreer;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::Channel::TypeInfo;
TypeInfo::Type cppValue;
- cppValue = value.unsignedShortValue;
+ if (value == nil) {
+ cppValue.SetNull();
+ } else {
+ auto & nonNullValue_0 = cppValue.SetNonNull();
+ nonNullValue_0 = 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);
});
}
-- (void)writeAttributeRoutingRoleWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+- (void)writeAttributeRoutingRoleWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler
{
new CHIPDefaultSuccessCallbackBridge(
self.callbackQueue,
@@ -18526,14 +18531,19 @@
ListFreer listFreer;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::RoutingRole::TypeInfo;
TypeInfo::Type cppValue;
- cppValue = value.unsignedCharValue;
+ if (value == nil) {
+ cppValue.SetNull();
+ } else {
+ auto & nonNullValue_0 = cppValue.SetNonNull();
+ nonNullValue_0 = value.unsignedCharValue;
+ }
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)writeAttributeNetworkNameWithValue:(NSString * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+- (void)writeAttributeNetworkNameWithValue:(NSString * _Nullable)value completionHandler:(StatusCompletion)completionHandler
{
new CHIPDefaultSuccessCallbackBridge(
self.callbackQueue,
@@ -18544,14 +18554,19 @@
ListFreer listFreer;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::NetworkName::TypeInfo;
TypeInfo::Type cppValue;
- cppValue = [self asCharSpan:value];
+ if (value == nil) {
+ cppValue.SetNull();
+ } else {
+ auto & nonNullValue_0 = cppValue.SetNonNull();
+ nonNullValue_0 = [self asCharSpan:value];
+ }
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)writeAttributePanIdWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+- (void)writeAttributePanIdWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler
{
new CHIPDefaultSuccessCallbackBridge(
self.callbackQueue,
@@ -18562,14 +18577,19 @@
ListFreer listFreer;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::PanId::TypeInfo;
TypeInfo::Type cppValue;
- cppValue = value.unsignedShortValue;
+ if (value == nil) {
+ cppValue.SetNull();
+ } else {
+ auto & nonNullValue_0 = cppValue.SetNonNull();
+ nonNullValue_0 = 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);
});
}
-- (void)writeAttributeExtendedPanIdWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+- (void)writeAttributeExtendedPanIdWithValue:(NSNumber * _Nullable)value completionHandler:(StatusCompletion)completionHandler
{
new CHIPDefaultSuccessCallbackBridge(
self.callbackQueue,
@@ -18580,14 +18600,19 @@
ListFreer listFreer;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::ExtendedPanId::TypeInfo;
TypeInfo::Type cppValue;
- cppValue = value.unsignedLongLongValue;
+ if (value == nil) {
+ cppValue.SetNull();
+ } else {
+ auto & nonNullValue_0 = cppValue.SetNonNull();
+ nonNullValue_0 = value.unsignedLongLongValue;
+ }
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)writeAttributeMeshLocalPrefixWithValue:(NSData * _Nonnull)value completionHandler:(StatusCompletion)completionHandler
+- (void)writeAttributeMeshLocalPrefixWithValue:(NSData * _Nullable)value completionHandler:(StatusCompletion)completionHandler
{
new CHIPDefaultSuccessCallbackBridge(
self.callbackQueue,
@@ -18598,7 +18623,12 @@
ListFreer listFreer;
using TypeInfo = ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::TypeInfo;
TypeInfo::Type cppValue;
- cppValue = [self asByteSpan:value];
+ if (value == nil) {
+ cppValue.SetNull();
+ } else {
+ auto & nonNullValue_0 = cppValue.SetNonNull();
+ nonNullValue_0 = [self asByteSpan:value];
+ }
auto successFn = Callback<CHIPDefaultSuccessCallbackType>::FromCancelable(success);
auto failureFn = Callback<CHIPDefaultFailureCallbackType>::FromCancelable(failure);
return self.cppCluster.WriteAttribute<TypeInfo>(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall);
@@ -18655,8 +18685,18 @@
listHolder_0->mList[i_0].linkFrameCounter = element_0.linkFrameCounter.unsignedIntValue;
listHolder_0->mList[i_0].mleFrameCounter = element_0.mleFrameCounter.unsignedIntValue;
listHolder_0->mList[i_0].lqi = element_0.lqi.unsignedCharValue;
- listHolder_0->mList[i_0].averageRssi = element_0.averageRssi.charValue;
- listHolder_0->mList[i_0].lastRssi = element_0.lastRssi.charValue;
+ if (element_0.averageRssi == nil) {
+ listHolder_0->mList[i_0].averageRssi.SetNull();
+ } else {
+ auto & nonNullValue_2 = listHolder_0->mList[i_0].averageRssi.SetNonNull();
+ nonNullValue_2 = element_0.averageRssi.charValue;
+ }
+ if (element_0.lastRssi == nil) {
+ listHolder_0->mList[i_0].lastRssi.SetNull();
+ } else {
+ auto & nonNullValue_2 = listHolder_0->mList[i_0].lastRssi.SetNonNull();
+ nonNullValue_2 = element_0.lastRssi.charValue;
+ }
listHolder_0->mList[i_0].frameErrorRate = element_0.frameErrorRate.unsignedCharValue;
listHolder_0->mList[i_0].messageErrorRate = element_0.messageErrorRate.unsignedCharValue;
listHolder_0->mList[i_0].rxOnWhenIdle = element_0.rxOnWhenIdle.boolValue;
diff --git a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h
index b045417..195b1c6 100644
--- a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h
+++ b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h
@@ -54603,8 +54603,12 @@
VerifyOrReturn(CheckValue("status", err ? err.code : 0, 0));
- VerifyOrReturn(CheckConstraintType("networkName", "", "string"));
- VerifyOrReturn(CheckConstraintMaxLength("networkName", [value length], 16));
+ {
+ id actualValue = value;
+ VerifyOrReturn(CheckValueNonNull("NetworkName", actualValue));
+ VerifyOrReturn(CheckValueAsString("NetworkName", actualValue, @""));
+ }
+
NextTest();
}];
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
index 105cce8..646bae4 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
@@ -9297,32 +9297,32 @@
switch (path.mAttributeId)
{
case ThreadNetworkDiagnostics::Attributes::Channel::Id: {
- uint16_t value;
+ chip::app::DataModel::Nullable<uint16_t> value;
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("channel", 1, value);
}
case ThreadNetworkDiagnostics::Attributes::RoutingRole::Id: {
- uint8_t value;
+ chip::app::DataModel::Nullable<uint8_t> value;
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("RoutingRole", 1, value);
}
case ThreadNetworkDiagnostics::Attributes::NetworkName::Id: {
- chip::CharSpan value;
+ chip::app::DataModel::Nullable<chip::CharSpan> value;
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("NetworkName", 1, value);
}
case ThreadNetworkDiagnostics::Attributes::PanId::Id: {
- uint16_t value;
+ chip::app::DataModel::Nullable<uint16_t> value;
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("PanId", 1, value);
}
case ThreadNetworkDiagnostics::Attributes::ExtendedPanId::Id: {
- uint64_t value;
+ chip::app::DataModel::Nullable<uint64_t> value;
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("ExtendedPanId", 1, value);
}
case ThreadNetworkDiagnostics::Attributes::MeshLocalPrefix::Id: {
- chip::ByteSpan value;
+ chip::app::DataModel::Nullable<chip::ByteSpan> value;
ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
return DataModelLogger::LogValue("MeshLocalPrefix", 1, value);
}
diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h
index ba9a4a7..3bce287 100644
--- a/zzz_generated/chip-tool/zap-generated/test/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h
@@ -31310,7 +31310,7 @@
case 1:
VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
{
- uint16_t value;
+ chip::app::DataModel::Nullable<uint16_t> value;
VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
VerifyOrReturn(CheckConstraintType("value", "", "uint16"));
}
@@ -31318,7 +31318,7 @@
case 2:
VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
{
- uint8_t value;
+ chip::app::DataModel::Nullable<uint8_t> value;
VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
VerifyOrReturn(CheckConstraintType("value", "", "RoutingRole"));
VerifyOrReturn(CheckConstraintMinValue("value", value, 0));
@@ -31328,10 +31328,10 @@
case 3:
VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
{
- chip::CharSpan value;
+ chip::app::DataModel::Nullable<chip::CharSpan> value;
VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
- VerifyOrReturn(CheckConstraintType("value", "", "string"));
- VerifyOrReturn(CheckConstraintMaxLength("value", value.size(), 16));
+ VerifyOrReturn(CheckValueNonNull("networkName", value));
+ VerifyOrReturn(CheckValueAsString("networkName.Value()", value.Value(), chip::CharSpan("", 0)));
}
break;
case 4:
@@ -31341,7 +31341,7 @@
case 5:
VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
{
- uint16_t value;
+ chip::app::DataModel::Nullable<uint16_t> value;
VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
VerifyOrReturn(CheckConstraintType("value", "", "uint16"));
}
@@ -31353,7 +31353,7 @@
case 7:
VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
{
- uint64_t value;
+ chip::app::DataModel::Nullable<uint64_t> value;
VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
VerifyOrReturn(CheckConstraintType("value", "", "uint64"));
}
diff --git a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h
index 88c55b9..4d5539c 100644
--- a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h
@@ -263,13 +263,13 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(8) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(10) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(18) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(8) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(10) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(18) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h
index 28350ab..47f7c7a 100644
--- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h
@@ -283,13 +283,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/lock-app/zap-generated/endpoint_config.h b/zzz_generated/lock-app/zap-generated/endpoint_config.h
index 490fbf7..a849fb4 100644
--- a/zzz_generated/lock-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/lock-app/zap-generated/endpoint_config.h
@@ -321,13 +321,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(18) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(20) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(28) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(18) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(20) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(28) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/pump-app/zap-generated/endpoint_config.h b/zzz_generated/pump-app/zap-generated/endpoint_config.h
index 3809754..3b45080 100644
--- a/zzz_generated/pump-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/pump-app/zap-generated/endpoint_config.h
@@ -315,13 +315,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
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 aa77d20..c7a89d0 100644
--- a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
@@ -296,13 +296,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/thermostat/zap-generated/endpoint_config.h b/zzz_generated/thermostat/zap-generated/endpoint_config.h
index 035c537..ff24899 100644
--- a/zzz_generated/thermostat/zap-generated/endpoint_config.h
+++ b/zzz_generated/thermostat/zap-generated/endpoint_config.h
@@ -289,13 +289,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/tv-app/zap-generated/endpoint_config.h b/zzz_generated/tv-app/zap-generated/endpoint_config.h
index f375487..f400fcd 100644
--- a/zzz_generated/tv-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/tv-app/zap-generated/endpoint_config.h
@@ -304,13 +304,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
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 ef70385..a43ade4 100644
--- a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
@@ -317,13 +317,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \
diff --git a/zzz_generated/window-app/zap-generated/endpoint_config.h b/zzz_generated/window-app/zap-generated/endpoint_config.h
index 9a20e40..d171c7f 100644
--- a/zzz_generated/window-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/window-app/zap-generated/endpoint_config.h
@@ -289,13 +289,14 @@
{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \
\
/* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \
- { 0x00000000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* channel */ \
- { 0x00000001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
- { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, 0, ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
- { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
- { 0x00000004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
- { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, 0, ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
- { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
+ { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* channel */ \
+ { 0x00000001, ZAP_TYPE(ENUM8), 1, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* RoutingRole */ \
+ { 0x00000002, ZAP_TYPE(CHAR_STRING), 17, ZAP_ATTRIBUTE_MASK(NULLABLE), \
+ ZAP_LONG_DEFAULTS_INDEX(14) }, /* NetworkName */ \
+ { 0x00000003, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* PanId */ \
+ { 0x00000004, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_LONG_DEFAULTS_INDEX(16) }, /* ExtendedPanId */ \
+ { 0x00000005, ZAP_TYPE(OCTET_STRING), 18, ZAP_ATTRIBUTE_MASK(NULLABLE), ZAP_EMPTY_DEFAULT() }, /* MeshLocalPrefix */ \
+ { 0x00000006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(24) }, /* OverrunCount */ \
{ 0x00000007, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* NeighborTableList */ \
{ 0x00000008, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* RouteTableList */ \
{ 0x00000009, ZAP_TYPE(INT32U), 4, 0, ZAP_EMPTY_DEFAULT() }, /* PartitionId */ \