Skip to content

Commit

Permalink
Add IPv4 and IPv6 addresses to General Diagnostics cluster
Browse files Browse the repository at this point in the history
Currently the General Diagnostics cluster implementation
doesn't contain IPv4 and IPv6 addresses lists, so it's not
compatible with the spec.

* To cluster .xml:
   * Added IPv4Addr and IPv6Addr types, as defined ipv4adr
   and ipv6adr seems to not work
   * Added missing IPv4Addresses and IPv6Addresses lists
   * Changed fabricConnected argument name to isOperational
   to be compatible with the spec.
   * Changed length field for ACTIVE_HARDWARRE_FAULTS,
   ACTIVE_RADIO_FAULTS and ACTIVE_NETWORK_FAULTS as defined
   in the spec.
* Regenerated files with zap_regen_all.py
* Added buffers to keep ip addresses to the NetworkInterface
* Added inserting IPv6 addresses in GetNetworkInterfaces
for the Zephyr platform
  • Loading branch information
kkasperczyk-no committed Feb 8, 2022
1 parent 0f7be8b commit 0fdd738
Show file tree
Hide file tree
Showing 38 changed files with 914 additions and 102 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1456,11 +1456,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/bridge-app/bridge-common/bridge-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -388,11 +388,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/door-lock-app/door-lock-common/door-lock-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -865,11 +865,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -577,11 +577,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/lighting-app/lighting-common/lighting-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -582,11 +582,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/lock-app/lock-common/lock-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -326,11 +326,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/pump-app/pump-common/pump-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -313,11 +313,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,11 +333,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,11 +326,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/thermostat/thermostat-common/thermostat.matter
Original file line number Diff line number Diff line change
Expand Up @@ -347,11 +347,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/tv-app/tv-common/tv-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -713,11 +713,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -1379,11 +1379,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
14 changes: 12 additions & 2 deletions examples/window-app/common/window-app.matter
Original file line number Diff line number Diff line change
Expand Up @@ -296,11 +296,21 @@ server cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ limitations under the License.
-->
<configurator>
<domain name="CHIP"/>
<struct name="IPv4Addr">
<cluster code="0x0033"/>
<item name="Addr" type="OCTET_STRING" length="4"/>
</struct>
<struct name="IPv6Addr">
<cluster code="0x0033"/>
<item name="Addr" type="OCTET_STRING" length="16"/>
</struct>
<enum name="HardwareFaultType" type="ENUM8">
<cluster code="0x0033"/>
<item name="Unspecified" value="0x00"/>
Expand Down Expand Up @@ -68,11 +76,14 @@ limitations under the License.
<struct name="NetworkInterfaceType">
<cluster code="0x0033"/>
<item name="Name" type="CHAR_STRING" length="32"/>
<item name="FabricConnected" type="BOOLEAN"/>
<item name="IsOperational" type="BOOLEAN"/>
<item name="OffPremiseServicesReachableIPv4" type="BOOLEAN"/>
<item name="OffPremiseServicesReachableIPv6" type="BOOLEAN"/>
<!-- TODO: HWADR not supported yet -->
<item name="HardwareAddress" type="OCTET_STRING" length="8"/>
<!-- TODO: ipv4adr and ipv6adr not supported yet -->
<item name="IPv4Addresses" type="IPv4Addr" array="true" length="4"/>
<item name="IPv6Addresses" type="IPv6Addr" array="true" length="8"/>
<item name="Type" type="InterfaceType"/>
</struct>
<cluster>
Expand All @@ -86,9 +97,9 @@ limitations under the License.
<attribute side="server" code="0x02" define="UPTIME" type="INT64U" min="0x0000000000000000" max="0xFFFFFFFFFFFFFFFF" writable="false" default="0x0000000000000000" optional="true">UpTime</attribute>
<attribute side="server" code="0x03" define="TOTAL_OPERATIONAL_HOURS" type="INT32U" min="0x00000000" max="0xFFFFFFFF" writable="false" default="0x00000000" optional="true">TotalOperationalHours</attribute>
<attribute side="server" code="0x04" define="BOOT_REASONS" type="ENUM8" writable="false" optional="true">BootReasons</attribute>
<attribute side="server" code="0x05" define="ACTIVE_HARDWARE_FAULTS" type="ARRAY" entryType="ENUM8" length="254" writable="false" optional="true">ActiveHardwareFaults</attribute>
<attribute side="server" code="0x06" define="ACTIVE_RADIO_FAULTS" type="ARRAY" entryType="ENUM8" length="254" writable="false" optional="true">ActiveRadioFaults</attribute>
<attribute side="server" code="0x07" define="ACTIVE_NETWORK_FAULTS" type="ARRAY" entryType="ENUM8" length="254" writable="false" optional="true">ActiveNetworkFaults</attribute>
<attribute side="server" code="0x05" define="ACTIVE_HARDWARE_FAULTS" type="ARRAY" entryType="ENUM8" length="11" writable="false" optional="true">ActiveHardwareFaults</attribute>
<attribute side="server" code="0x06" define="ACTIVE_RADIO_FAULTS" type="ARRAY" entryType="ENUM8" length="7" writable="false" optional="true">ActiveRadioFaults</attribute>
<attribute side="server" code="0x07" define="ACTIVE_NETWORK_FAULTS" type="ARRAY" entryType="ENUM8" length="4" writable="false" optional="true">ActiveNetworkFaults</attribute>
<event side="server" code="0x00" name="HardwareFaultChange" priority="critical" optional="true">
<description>Indicate a change in the set of hardware faults currently detected by the Node.</description>
<field id="0" name="Current" type="HardwareFaultType" array="true"/>
Expand Down
14 changes: 12 additions & 2 deletions src/controller/data_model/controller-clusters.matter
Original file line number Diff line number Diff line change
Expand Up @@ -1768,11 +1768,21 @@ client cluster GeneralDiagnostics = 51 {

struct NetworkInterfaceType {
CHAR_STRING<32> name = 0;
BOOLEAN fabricConnected = 1;
BOOLEAN isOperational = 1;
BOOLEAN offPremiseServicesReachableIPv4 = 2;
BOOLEAN offPremiseServicesReachableIPv6 = 3;
OCTET_STRING<8> hardwareAddress = 4;
InterfaceType type = 5;
IPv4Addr IPv4Addresses[] = 5;
IPv6Addr IPv6Addresses[] = 6;
InterfaceType type = 7;
}

struct IPv4Addr {
OCTET_STRING<4> addr = 0;
}

struct IPv6Addr {
OCTET_STRING<16> addr = 0;
}

critical event HardwareFaultChange = 0 {
Expand Down
Loading

0 comments on commit 0fdd738

Please sign in to comment.