diff --git a/NOTICE b/NOTICE index be42c7d2..6c4094fa 100644 --- a/NOTICE +++ b/NOTICE @@ -10,3 +10,9 @@ Copyright [2014] [Cisco Systems, Inc.] Licensed under the Apache License, Version 2.0 Some material is derived from openembedded.org or the yocto project and is licensed in the same manner here (MIT for metadata; source code to match the associated recipe license). + +The zzz_generated.tar.gz file uses material from Project Chip which is: +Copyright (c) 2023 Project CHIP Authors +Licensed under the Apache License, Version 2.0 +See the README.md file under recipes-matter for details. +The parent ZAP file is included as `meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/barton.zap` diff --git a/conf/distro/include/rdk-bpi.inc b/conf/distro/include/rdk-bpi.inc index b136db07..bdf01eb1 100644 --- a/conf/distro/include/rdk-bpi.inc +++ b/conf/distro/include/rdk-bpi.inc @@ -62,6 +62,11 @@ DISTRO_FEATURES_append = " kernel6-6" DISTRO_FEATURES_append = " CONFIG_IEEE80211BE" + +DISTRO_FEATURES_append = " matter" +PREFERRED_VERSION_barton-matter = "1.4.2" + +#DISTRO_FEATURES_append = " generic_mlo" DISTRO_FEATURES_append = " generic_mlo" #Enable the below DISTRO to enable Hybrid Hal(rndis/modem) for cellular devices diff --git a/meta-rdk-mtk-bpir4/recipes-ccsp/util/utopia.bbappend b/meta-rdk-mtk-bpir4/recipes-ccsp/util/utopia.bbappend index 05262242..ee630bf4 100644 --- a/meta-rdk-mtk-bpir4/recipes-ccsp/util/utopia.bbappend +++ b/meta-rdk-mtk-bpir4/recipes-ccsp/util/utopia.bbappend @@ -4,6 +4,8 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" SRC_URI += "file://service_bridge_bpi.sh" +CFLAGS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'matter', ' -DFEATURE_MATTER_ENABLED', '', d)}" + do_install_append() { install -d ${D}${sysconfdir}/ diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/bluez5/bluez5_5.%.bbappend b/meta-rdk-mtk-bpir4/recipes-connectivity/bluez5/bluez5_5.%.bbappend new file mode 100644 index 00000000..ef1dd0e4 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/bluez5/bluez5_5.%.bbappend @@ -0,0 +1,4 @@ +# Add this new section +do_install_append() { + install -m 0755 ${B}/tools/btattach ${D}${bindir} +} diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/bt-host-cpc-hci-bridge_4.4.1.0.bb b/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/bt-host-cpc-hci-bridge_4.4.1.0.bb new file mode 100644 index 00000000..4bbb9e8f --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/bt-host-cpc-hci-bridge_4.4.1.0.bb @@ -0,0 +1,67 @@ +DESCRIPTION = "Bluetooth CPC HCI Bridge" +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://${WORKDIR}/git/gsdk/License.txt;md5=9a041f41aad5520b22ab2bb033c11e3c" + +# GSDK path definition +GSDK_DIR = "${WORKDIR}/git/gsdk" +BT_BRIDGE_DIR = "${GSDK_DIR}/app/bluetooth/example_host/bt_host_cpc_hci_bridge" + +SRC_URI = "git://github.com/SiliconLabs/gecko_sdk.git;protocol=https;branch=gsdk_4.4;destsuffix=git/gsdk;name=gsdk" +SRCREV_gsdk = "9ad9e19638a2d0ce01ce21d32f5049c5f1b21d70" + +SRC_URI += "file://bt-host-cpc-hci-bridge.service \ + file://bt-host-cpc-hci-bridge-attach.service \ + " + +DEPENDS += "cpcd" +RDEPENDS_${PN} += "cpcd (= 4.4.1.0-r0) bluez5-noinst-tools" + +S = "${BT_BRIDGE_DIR}" + +inherit pkgconfig systemd + +# Ensure we're using the correct toolchain +TOOLCHAIN = "gcc" +INHIBIT_DEFAULT_DEPS = "1" +DEPENDS += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++ virtual/libc" + +# Basic compilation flags +CFLAGS = "${TARGET_CFLAGS} -D_DEFAULT_SOURCE -D_BSD_SOURCE -DHOST_TOOLCHAIN -DPOSIX -DSL_CATALOG_APP_LOG_PRESENT" + +EXTRA_OEMAKE = "\ + CPC=1 \ + CC='${CC}' \ + CROSS_COMPILE=${TARGET_PREFIX} \ + CFLAGS='${CFLAGS} \ + -I${STAGING_INCDIR} \ + -I${STAGING_INCDIR}/sl_cpc \ + -I${GSDK_DIR}/app/bluetooth/common_host/iostream_mock \ + -I${GSDK_DIR}/app/bluetooth/common_host/app_log \ + -I${GSDK_DIR}/app/bluetooth/common_host/app_log/config \ + -I${GSDK_DIR}/platform/common/inc \ + -I${GSDK_DIR}/protocol/bluetooth/bgstack/ll/utils/hci_packet/inc \ + -fno-short-enums -Wall -std=c99' \ + LDFLAGS='${LDFLAGS}' \ +" + +do_configure[noexec] = "1" + +do_compile() { + oe_runmake +} + +do_install() { + # Install binary from the exe directory + install -d ${D}${bindir} + install -m 0755 ${S}/exe/bt_host_cpc_hci_bridge ${D}${bindir} + + # Install systemd services + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/bt-host-cpc-hci-bridge.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/bt-host-cpc-hci-bridge-attach.service ${D}${systemd_system_unitdir} +} + +FILES_${PN} += "${systemd_system_unitdir}" + +SYSTEMD_SERVICE_${PN} = "bt-host-cpc-hci-bridge.service bt-host-cpc-hci-bridge-attach.service" +SYSTEMD_AUTO_ENABLE = "enable" diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/files/bt-host-cpc-hci-bridge-attach.service b/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/files/bt-host-cpc-hci-bridge-attach.service new file mode 100644 index 00000000..a89f308e --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/files/bt-host-cpc-hci-bridge-attach.service @@ -0,0 +1,14 @@ +[Unit] +Description=Attach Bluetooth HCI Bridge +After=bt-host-cpc-hci-bridge.service +Requires=bt-host-cpc-hci-bridge.service + +[Service] +Type=simple +ExecStartPre=/bin/sh -c 'while [ ! -e /dev/pts/0 ]; do sleep 1; done' +ExecStart=/usr/bin/btattach -B /dev/pts/0 -S 115200 +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/files/bt-host-cpc-hci-bridge.service b/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/files/bt-host-cpc-hci-bridge.service new file mode 100644 index 00000000..2d56e307 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/bt-host-cpc-hci-bridge/files/bt-host-cpc-hci-bridge.service @@ -0,0 +1,14 @@ +[Unit] +Description=Bluetooth CPC HCI Bridge +After=cpcd.service +Requires=cpcd.service + +[Service] +Type=simple +ExecStart=/usr/bin/bt_host_cpc_hci_bridge +Restart=always +RestartSec=5 +WorkingDirectory=/tmp + +[Install] +WantedBy=multi-user.target diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/cpcd_4.4.1.0.bb b/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/cpcd_4.4.1.0.bb new file mode 100644 index 00000000..8f190b83 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/cpcd_4.4.1.0.bb @@ -0,0 +1,28 @@ +# TODO: Verify license -- it is Silabs specific +DESCRIPTION = "Co-Processor Communication Daemon" +LICENSE = "Proprietary" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5e588136d392e8e0e36bd310e9ca0ab3" +SRC_URI = "git://github.com/SiliconLabs/cpc_daemon;protocol=https;name=cpc-daemon;branch=main" +PR = "r0" +# Tag v4.4.1 +SRCREV_cpc-daemon = "283b31aef4f32df23596b8cff1a646dd1dc442c6" +SRC_URI += "file://cpcd.service \ + file://cpcd.conf \ +" +DEPENDS += "mbedtls systemd" +RDEPENDS_${PN} += "systemd" +S = "${WORKDIR}/git" +inherit cmake pkgconfig +EXTRA_OECMAKE += "-DUSE_LEGACY_GPIO_SYSFS=TRUE \ +" +do_install_append() { + install -d ${D}${sysconfdir} + install -m 0644 ${WORKDIR}/cpcd.conf ${D}${sysconfdir}/cpcd.conf + install -d ${D}${bindir} + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/cpcd.service ${D}${systemd_unitdir}/system/cpcd.service +} +FILES_${PN} += "${systemd_unitdir}/system/" +inherit systemd +SYSTEMD_SERVICE_${PN} = "cpcd.service" +SYSTEMD_AUTO_ENABLE = "enable" diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/files/cpcd.conf b/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/files/cpcd.conf new file mode 100644 index 00000000..cf75c25e --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/files/cpcd.conf @@ -0,0 +1,100 @@ +# Instance Name +# Optional, defaults to "cpcd_0" +# This string uniquely identifies the running cpcd instance. +# An application must pass this value to cpc_init() to connect +# to this particular instance. +instance_name: cpcd_0 + +# Bus type selection +# Mandatory +# Allowed values : UART or SPI +bus_type: UART + +# SPI device file +# Mandatory if spi chosen, ignored if uart chosen +spi_device_file: /dev/spidev0.0 + +# SPI RX IRQ gpio chip +# Mandatory if spi chosen, ignored if uart chosen +spi_rx_irq_gpio_chip: gpiochip0 + +# SPI RX IRQ gpio +# RX interrupt gpio selection +spi_rx_irq_gpio: 22 + +# SPI bitrate. +# Ignored if uart chosen. +# See doc/spi_bitrate.md for a complete explanation +spi_device_bitrate: 1000000 + +# UART device file +# Mandatory if uart chosen, ignored if spi chosen +uart_device_file: /dev/ttyACM0 + +# UART baud rate. +# Optional if uart chosen, ignored if spi chosen. Defaults to 115200 +# Allowed values : standard UART baud rates listed in 'termios.h' +uart_device_baud: 115200 + +# UART flow control. +# Optional if uart chosen, ignored if spi chosen. Defaults to 'true' +# Allowed values are 'true' or 'false' +uart_hardflow: true + +# BOOTLOADER Recovery Pins Enabled +# Set to true to enter bootloader via wake and reset pins +# If true, bootloader_wake_gpio/chip and bootloader_reset_gpio/chip must be configured +bootloader_recovery_pins_enabled: false + +# BOOTLOADER WAKE gpio chip +# Wakeup gpio chip used by the bootloader +bootloader_wake_gpio_chip: gpiochip0 + +# BOOTLOADER WAKE gpio +# Wakeup gpio used by the bootloader +# Ensure bootloader_recovery_pins_enabled=true to use this pin +bootloader_wake_gpio: 24 + +# BOOTLOADER RESET gpio chip +# Reset gpio chip used by the bootloader +bootloader_reset_gpio_chip: gpiochip0 + +# BOOTLOADER RESET gpio +# Reset gpio used by the bootloader +# Ensure bootloader_recovery_pins_enabled=true to use this pin +bootloader_reset_gpio: 23 + +# Prints tracing information to stdout +# Optional, defaults to 'false' +# Allowed values are 'true' or 'false' +stdout_trace: false + +# Prints tracing information to a file located under traces_folder +# Optional, defaults to 'false' +# Allowed values are 'true' or 'false' +trace_to_file: false + +# Traces folder +# Optional, defaults to '/dev/shm/cpcd-traces' +# Folder mounted on a tmpfs is preferred +traces_folder: /dev/shm/cpcd-traces + +# Enable frame trace +# Optional, defaults to 'false' +# Allowed values are 'true' or 'false' +enable_frame_trace: false + +# Number of open file descriptors. +# Optional, defaults to 2000 +# If the error 'Too many open files' occurs, this is the value to increase. +rlimit_nofile: 2000 + +# Disable the encryption over CPC endpoints +# Optional, defaults false +disable_encryption: true + +# Binding key file +# Mandatory when security is used +# Must have 32 alphanumeric characters as the first line, representing a 128 bit binding key +# If ECDH encryption is used, this file will be created during the binding process +binding_key_file: ~/.cpcd/binding.key diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/files/cpcd.service b/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/files/cpcd.service new file mode 100644 index 00000000..e21ef594 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/cpcd/files/cpcd.service @@ -0,0 +1,12 @@ +[Unit] +Description=Service for the 802.15.4 co-processor communication daemon +StartLimitIntervalSec=300 +StartLimitBurst=5 +[Service] +Type=simple +Restart=always +RestartSec=5 +TimeoutStartSec=60 +ExecStart=/usr/bin/cpcd -c /etc/cpcd.conf +[Install] +WantedBy=multi-user.target diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/0003-Extend-d-bus-properties-and-signals.patch b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/0003-Extend-d-bus-properties-and-signals.patch new file mode 100644 index 00000000..152ce55d --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/0003-Extend-d-bus-properties-and-signals.patch @@ -0,0 +1,473 @@ +From 51008cad7c38a29dbc6a721602507053ba1d932b Mon Sep 17 00:00:00 2001 +From: Thomas Lea +Date: Fri, 14 Feb 2025 11:09:25 -0600 +Subject: [PATCH] Extend d-bus properties and signals + +This change adds the following new properties: + - BorderAgentId + - ThreadNetIfUp (emits signal on change) + - ThreadVersion (was missing from d-bus client) + +The following existing properties now emit signals on change: + - ActiveDatasetTlvs (this already did, but introspect.xml didnt + match) + - PendingDatasetTlv + - Nat64State + - ThreadNetIfUp + +Source: Comcast +--- + src/dbus/client/thread_api_dbus.cpp | 15 +++++ + src/dbus/client/thread_api_dbus.hpp | 35 +++++++++++ + src/dbus/common/constants.hpp | 2 + + src/dbus/server/dbus_thread_object_rcp.cpp | 71 ++++++++++++++++++++++ + src/dbus/server/dbus_thread_object_rcp.hpp | 7 +++ + src/dbus/server/introspect.xml | 16 ++++- + src/utils/thread_helper.cpp | 71 ++++++++++++++++++++++ + src/utils/thread_helper.hpp | 41 ++++++++++++- + 8 files changed, 253 insertions(+), 5 deletions(-) + +diff --git a/src/dbus/client/thread_api_dbus.cpp b/src/dbus/client/thread_api_dbus.cpp +index 51f8828e6a8..bd3ed715255 100644 +--- a/src/dbus/client/thread_api_dbus.cpp ++++ b/src/dbus/client/thread_api_dbus.cpp +@@ -718,6 +718,21 @@ ClientError ThreadApiDBus::GetCapabilities(std::vector &aCapabilities) + return GetProperty(OTBR_DBUS_PROPERTY_CAPABILITIES, aCapabilities); + } + ++ClientError ThreadApiDBus::GetBorderAgentId(std::vector &aId) ++{ ++ return GetProperty(OTBR_DBUS_PROPERTY_BORDER_AGENT_ID, aId); ++} ++ ++ClientError ThreadApiDBus::GetThreadNetIfUp(bool &aIsUp) ++{ ++ return GetProperty(OTBR_DBUS_PROPERTY_THREAD_NETIF_UP, aIsUp); ++} ++ ++ClientError ThreadApiDBus::GetThreadVersion(uint16_t &aVersion) ++{ ++ return GetProperty(OTBR_DBUS_PROPERTY_THREAD_VERSION, aVersion); ++} ++ + std::string ThreadApiDBus::GetInterfaceName(void) + { + return mInterfaceName; +diff --git a/src/dbus/client/thread_api_dbus.hpp b/src/dbus/client/thread_api_dbus.hpp +index e817e525355..4ab4e1542eb 100644 +--- a/src/dbus/client/thread_api_dbus.hpp ++++ b/src/dbus/client/thread_api_dbus.hpp +@@ -864,6 +864,41 @@ public: + */ + ClientError GetCapabilities(std::vector &aCapabilities); + ++ /** ++ * This method gets the border agent identifier. ++ * ++ * @param[out] aId The border agent identifier. ++ * ++ * @retval ERROR_NONE Successfully performed the dbus function call ++ * @retval ERROR_DBUS dbus encode/decode error ++ * @retval ... OpenThread defined error value otherwise ++ * ++ */ ++ ClientError GetBorderAgentId(std::vector &aId); ++ ++ /** ++ * This method gets the up/down state of the thread network interface. ++ * ++ * @param[out] aIsUp True if the interface is up, false otherwise. ++ * ++ * @retval ERROR_NONE Successfully performed the dbus function call ++ * @retval ERROR_DBUS dbus encode/decode error ++ * @retval ... OpenThread defined error value otherwise ++ * ++ */ ++ ClientError GetThreadNetIfUp(bool &aIsUp); ++ ++ /** ++ * This method gets the Thread version supported by this device. ++ * ++ * @param[out] aVersion The Thread version supported by this device. ++ * ++ * @retval ERROR_NONE Successfully performed the dbus function call ++ * @retval ERROR_DBUS dbus encode/decode error ++ * @retval ... OpenThread defined error value otherwise ++ */ ++ ClientError GetThreadVersion(uint16_t &aVersion); ++ + private: + ClientError CallDBusMethodSync(const std::string &aMethodName); + ClientError CallDBusMethodAsync(const std::string &aMethodName, DBusPendingCallNotifyFunction aFunction); +diff --git a/src/dbus/common/constants.hpp b/src/dbus/common/constants.hpp +index 6f8a6e6545a..ed5236c5170 100644 +--- a/src/dbus/common/constants.hpp ++++ b/src/dbus/common/constants.hpp +@@ -126,6 +126,8 @@ + #define OTBR_DBUS_PROPERTY_DHCP6_PD_STATE "Dhcp6PdState" + #define OTBR_DBUS_PROPERTY_TELEMETRY_DATA "TelemetryData" + #define OTBR_DBUS_PROPERTY_CAPABILITIES "Capabilities" ++#define OTBR_DBUS_PROPERTY_BORDER_AGENT_ID "BorderAgentId" ++#define OTBR_DBUS_PROPERTY_THREAD_NETIF_UP "ThreadNetIfUp" + + #define OTBR_NAT64_STATE_NAME_DISABLED "disabled" + #define OTBR_NAT64_STATE_NAME_NOT_RUNNING "not_running" +diff --git a/src/dbus/server/dbus_thread_object_rcp.cpp b/src/dbus/server/dbus_thread_object_rcp.cpp +index a6a3aa3f823..0e5c54d344e 100644 +--- a/src/dbus/server/dbus_thread_object_rcp.cpp ++++ b/src/dbus/server/dbus_thread_object_rcp.cpp +@@ -125,6 +125,11 @@ otbrError DBusThreadObjectRcp::Init(void) + threadHelper->SetDhcp6PdStateCallback(std::bind(&DBusThreadObjectRcp::Dhcp6PdStateHandler, this, _1)); + #endif + threadHelper->AddActiveDatasetChangeHandler(std::bind(&DBusThreadObjectRcp::ActiveDatasetChangeHandler, this, _1)); ++ threadHelper->AddPendingDatasetChangeHandler(std::bind(&DBusThreadObjectRcp::PendingDatasetChangeHandler, this, _1)); ++ threadHelper->AddThreadNetIfUpChangeHandler(std::bind(&DBusThreadObjectRcp::ThreadNetIfUpChangeHandler, this, _1)); ++#if OTBR_ENABLE_NAT64 ++ threadHelper->AddNat64StateChangeHandler(std::bind(&DBusThreadObjectRcp::Nat64StateChangeHandler, this, _1, _2)); ++#endif + mHost.RegisterResetHandler(std::bind(&DBusThreadObjectRcp::NcpResetHandler, this)); + + RegisterMethod(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_SCAN_METHOD, +@@ -307,6 +312,12 @@ otbrError DBusThreadObjectRcp::Init(void) + std::bind(&DBusThreadObjectRcp::GetTelemetryDataHandler, this, _1)); + RegisterGetPropertyHandler(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_CAPABILITIES, + std::bind(&DBusThreadObjectRcp::GetCapabilitiesHandler, this, _1)); ++#if OTBR_ENABLE_BORDER_AGENT ++ RegisterGetPropertyHandler(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_BORDER_AGENT_ID, ++ std::bind(&DBusThreadObjectRcp::GetBorderAgentIdHandler, this, _1)); ++#endif ++ RegisterGetPropertyHandler(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_THREAD_NETIF_UP, ++ std::bind(&DBusThreadObjectRcp::GetThreadNetIfUpHandler, this, _1)); + + SuccessOrExit(error = Signal(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_SIGNAL_READY, std::make_tuple())); + +@@ -332,6 +343,11 @@ void DBusThreadObjectRcp::NcpResetHandler(void) + mHost.GetThreadHelper()->AddDeviceRoleHandler(std::bind(&DBusThreadObjectRcp::DeviceRoleHandler, this, _1)); + mHost.GetThreadHelper()->AddActiveDatasetChangeHandler( + std::bind(&DBusThreadObjectRcp::ActiveDatasetChangeHandler, this, _1)); ++ mHost.GetThreadHelper()->AddPendingDatasetChangeHandler(std::bind(&DBusThreadObjectRcp::PendingDatasetChangeHandler, this, _1)); ++ mHost.GetThreadHelper()->AddThreadNetIfUpChangeHandler(std::bind(&DBusThreadObjectRcp::ThreadNetIfUpChangeHandler, this, _1)); ++#if OTBR_ENABLE_NAT64 ++ mHost.GetThreadHelper()->AddNat64StateChangeHandler(std::bind(&DBusThreadObjectRcp::Nat64StateChangeHandler, this, _1, _2)); ++#endif + SignalPropertyChanged(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_DEVICE_ROLE, + GetDeviceRoleName(OT_DEVICE_ROLE_DISABLED)); + } +@@ -1524,6 +1540,36 @@ exit: + return error; + } + ++#if OTBR_ENABLE_BORDER_AGENT ++otError DBusThreadObjectRcp::GetBorderAgentIdHandler(DBusMessageIter &aIter) ++{ ++ otBorderAgentId aId; ++ auto threadHelper = mHost.GetThreadHelper(); ++ otError error = OT_ERROR_NONE; ++ std::vector data; ++ ++ SuccessOrExit(error = otBorderAgentGetId(threadHelper->GetInstance(), &aId)); ++ data = std::vector(&aId.mId[0], &aId.mId[OT_BORDER_AGENT_ID_LENGTH]); ++ VerifyOrExit(DBusMessageEncodeToVariant(&aIter, data) == OTBR_ERROR_NONE, error = OT_ERROR_INVALID_ARGS); ++ ++exit: ++ return error; ++} ++#endif ++ ++otError DBusThreadObjectRcp::GetThreadNetIfUpHandler(DBusMessageIter &aIter) ++{ ++ bool isUp = false; ++ auto threadHelper = mHost.GetThreadHelper(); ++ otError error = OT_ERROR_NONE; ++ ++ isUp = otIp6IsEnabled(threadHelper->GetInstance()); ++ VerifyOrExit(DBusMessageEncodeToVariant(&aIter, isUp) == OTBR_ERROR_NONE, error = OT_ERROR_INVALID_ARGS); ++ ++exit: ++ return error; ++} ++ + void DBusThreadObjectRcp::GetPropertiesHandler(DBusRequest &aRequest) + { + UniqueDBusMessage reply(dbus_message_new_method_return(aRequest.GetMessage())); +@@ -1809,6 +1855,31 @@ exit: + } + } + ++void DBusThreadObjectRcp::PendingDatasetChangeHandler(const otOperationalDatasetTlvs &aDatasetTlvs) ++{ ++ std::vector value(aDatasetTlvs.mLength); ++ std::copy(aDatasetTlvs.mTlvs, aDatasetTlvs.mTlvs + aDatasetTlvs.mLength, value.begin()); ++ SignalPropertyChanged(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_PENDING_DATASET_TLVS, value); ++} ++ ++void DBusThreadObjectRcp::ThreadNetIfUpChangeHandler(bool aIsUp) ++{ ++ SignalPropertyChanged(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_THREAD_NETIF_UP, aIsUp); ++} ++ ++void DBusThreadObjectRcp::Nat64StateChangeHandler(otNat64State prefixManagerState, otNat64State translatorState) ++{ ++#if OTBR_ENABLE_NAT64 ++ Nat64ComponentState state; ++ state.mPrefixManagerState = GetNat64StateName(prefixManagerState); ++ state.mTranslatorState = GetNat64StateName(translatorState); ++ SignalPropertyChanged(OTBR_DBUS_THREAD_INTERFACE, OTBR_DBUS_PROPERTY_NAT64_STATE, state); ++#else ++ OTBR_UNUSED_VARIABLE(prefixManagerState); ++ OTBR_UNUSED_VARIABLE(translatorState); ++#endif ++} ++ + void DBusThreadObjectRcp::LeaveNetworkHandler(DBusRequest &aRequest) + { + constexpr int kExitCodeShouldRestart = 7; +diff --git a/src/dbus/server/dbus_thread_object_rcp.hpp b/src/dbus/server/dbus_thread_object_rcp.hpp +index 67891bc2743..1b129a1985a 100644 +--- a/src/dbus/server/dbus_thread_object_rcp.hpp ++++ b/src/dbus/server/dbus_thread_object_rcp.hpp +@@ -85,6 +85,9 @@ private: + void DeviceRoleHandler(otDeviceRole aDeviceRole); + void Dhcp6PdStateHandler(otBorderRoutingDhcp6PdState aDhcp6PdState); + void ActiveDatasetChangeHandler(const otOperationalDatasetTlvs &aDatasetTlvs); ++ void PendingDatasetChangeHandler(const otOperationalDatasetTlvs &aDatasetTlvs); ++ void ThreadNetIfUpChangeHandler(bool aIsUp); ++ void Nat64StateChangeHandler(otNat64State prefixManagerState, otNat64State translatorState); + void NcpResetHandler(void); + + void ScanHandler(DBusRequest &aRequest); +@@ -179,6 +182,10 @@ private: + otError GetDnsUpstreamQueryState(DBusMessageIter &aIter); + otError GetTelemetryDataHandler(DBusMessageIter &aIter); + otError GetCapabilitiesHandler(DBusMessageIter &aIter); ++#if OTBR_ENABLE_BORDER_AGENT ++ otError GetBorderAgentIdHandler(DBusMessageIter &aIter); ++#endif ++ otError GetThreadNetIfUpHandler(DBusMessageIter &aIter); + + void ReplyScanResult(DBusRequest &aRequest, otError aError, const std::vector &aResult); + void ReplyEnergyScanResult(DBusRequest &aRequest, otError aError, const std::vector &aResult); +diff --git a/src/dbus/server/introspect.xml b/src/dbus/server/introspect.xml +index 449dee38bef..173485fbb0f 100644 +--- a/src/dbus/server/introspect.xml ++++ b/src/dbus/server/introspect.xml +@@ -561,12 +561,12 @@ + + + +- ++ + + + + +- ++ + + + + +- ++ + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +diff --git a/src/utils/thread_helper.cpp b/src/utils/thread_helper.cpp +index 9866225ae0a..0e874dd4990 100644 +--- a/src/utils/thread_helper.cpp ++++ b/src/utils/thread_helper.cpp +@@ -306,6 +306,23 @@ void ThreadHelper::StateChangedCallback(otChangedFlags aFlags) + ActiveDatasetChangedCallback(); + } + ++ if (aFlags & OT_CHANGED_PENDING_DATASET) ++ { ++ PendingDatasetChangedCallback(); ++ } ++ ++ if (aFlags & OT_CHANGED_THREAD_NETIF_STATE) ++ { ++ ThreadNetIfUpChangedCallback(otIp6IsEnabled(mInstance)); ++ } ++ ++#if OTBR_ENABLE_NAT64 ++ if (aFlags & OT_CHANGED_NAT64_TRANSLATOR_STATE) ++ { ++ Nat64StateChangedCallback(otNat64GetPrefixManagerState(mInstance), otNat64GetTranslatorState(mInstance)); ++ } ++#endif ++ + exit: + return; + } +@@ -329,6 +346,43 @@ exit: + } + } + ++void ThreadHelper::PendingDatasetChangedCallback() ++{ ++ otError error; ++ otOperationalDatasetTlvs datasetTlvs; ++ ++ SuccessOrExit(error = otDatasetGetPendingTlvs(mInstance, &datasetTlvs)); ++ ++ for (const auto &handler : mPendingDatasetChangeHandlers) ++ { ++ handler(datasetTlvs); ++ } ++ ++exit: ++ if (error != OT_ERROR_NONE) ++ { ++ otbrLogWarning("Error handling pending dataset change: %s", otThreadErrorToString(error)); ++ } ++} ++ ++void ThreadHelper::ThreadNetIfUpChangedCallback(bool isUp) ++{ ++ for (const auto &handler : mThreadNetIfUpChangeHandlers) ++ { ++ handler(isUp); ++ } ++} ++ ++#if OTBR_ENABLE_NAT64 ++void ThreadHelper::Nat64StateChangedCallback(otNat64State prefixManagerState, otNat64State translatorState) ++{ ++ for (const auto &handler : mNat64StateChangeHandlers) ++ { ++ handler(prefixManagerState, translatorState); ++ } ++} ++#endif ++ + #if OTBR_ENABLE_DBUS_SERVER + void ThreadHelper::OnUpdateMeshCopTxt(std::map> aUpdate) + { +@@ -888,6 +942,23 @@ void ThreadHelper::AddActiveDatasetChangeHandler(DatasetChangeHandler aHandler) + mActiveDatasetChangeHandlers.push_back(std::move(aHandler)); + } + ++void ThreadHelper::AddPendingDatasetChangeHandler(DatasetChangeHandler aHandler) ++{ ++ mPendingDatasetChangeHandlers.push_back(std::move(aHandler)); ++} ++ ++void ThreadHelper::AddThreadNetIfUpChangeHandler(ThreadNetIfUpChangeHandler aHandler) ++{ ++ mThreadNetIfUpChangeHandlers.push_back(std::move(aHandler)); ++} ++ ++#if OTBR_ENABLE_NAT64 ++void ThreadHelper::AddNat64StateChangeHandler(Nat64StateChangeHandler aHandler) ++{ ++ mNat64StateChangeHandlers.push_back(std::move(aHandler)); ++} ++#endif ++ + void ThreadHelper::DetachGracefully(ResultHandler aHandler) + { + otError error = OT_ERROR_NONE; +diff --git a/src/utils/thread_helper.hpp b/src/utils/thread_helper.hpp +index 2e2de91e586..c557e26ebf2 100644 +--- a/src/utils/thread_helper.hpp ++++ b/src/utils/thread_helper.hpp +@@ -50,6 +50,7 @@ + #include + #include + #include ++#include + #include "mdns/mdns.hpp" + #if OTBR_ENABLE_TELEMETRY_DATA_API + #include "proto/thread_telemetry.pb.h" +@@ -80,7 +81,10 @@ public: + #if OTBR_ENABLE_DHCP6_PD + using Dhcp6PdStateCallback = std::function; + #endif +- ++ using ThreadNetIfUpChangeHandler = std::function; ++#if OTBR_ENABLE_NAT64 ++ using Nat64StateChangeHandler = std::function; /* prefix manager state, translator state */ ++#endif + /** + * The constructor of a Thread helper. + * +@@ -112,6 +116,29 @@ public: + */ + void AddActiveDatasetChangeHandler(DatasetChangeHandler aHandler); + ++ /** ++ * This method adds a callback for pending dataset change. ++ * ++ * @param[in] aHandler The pending dataset change handler. ++ */ ++ void AddPendingDatasetChangeHandler(DatasetChangeHandler aHandler); ++ ++ /** ++ * This method adds a callback for thread network interface state changes. ++ * ++ * @param[in] aHandler The handler for thread network interface state changes. ++ */ ++ void AddThreadNetIfUpChangeHandler(ThreadNetIfUpChangeHandler aHandler); ++ ++#if OTBR_ENABLE_NAT64 ++ /** ++ * This method adds a callback for nat64 translator state changes. ++ * ++ * @param[in] aHandler The handler for nat64 translator state changes. ++ */ ++ void AddNat64StateChangeHandler(Nat64StateChangeHandler aHandler); ++#endif ++ + /** + * This method permits unsecure join on port. + * +@@ -318,6 +345,12 @@ private: + uint8_t RandomChannelFromChannelMask(uint32_t aChannelMask); + + void ActiveDatasetChangedCallback(void); ++ void PendingDatasetChangedCallback(void); ++ void ThreadNetIfUpChangedCallback(bool isUp); ++#if OTBR_ENABLE_NAT64 ++ void Nat64StateChangedCallback(otNat64State prefixManagerState, otNat64State translatorState); ++#endif ++ + + #if OTBR_ENABLE_DHCP6_PD + static void BorderRoutingDhcp6PdCallback(otBorderRoutingDhcp6PdState aState, void *aThreadHelper); +@@ -349,7 +382,11 @@ private: + + std::vector mDeviceRoleHandlers; + std::vector mActiveDatasetChangeHandlers; +- ++ std::vector mPendingDatasetChangeHandlers; ++ std::vector mThreadNetIfUpChangeHandlers; ++#if OTBR_ENABLE_NAT64 ++ std::vector mNat64StateChangeHandlers; ++#endif + std::map mUnsecurePortRefCounter; + + bool mWaitingMgmtSetResponse = +-- +2.43.0 + diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/adjust-otbr-configuration.patch b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/adjust-otbr-configuration.patch new file mode 100644 index 00000000..35462d74 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/adjust-otbr-configuration.patch @@ -0,0 +1,58 @@ +From: RDKM +Date: Wed, 29 Oct 2025 +Subject: [PATCH] Enable Thread 1.3+ features for newer versions + +Change Thread 1.3 feature conditionals from exact version match to +minimum version match, allowing Thread 1.4+ to use these features. + +Source: RDKM + +diff --git a/protocol/openthread/platform-abstraction/posix/openthread-core-silabs-posix-config.h b/protocol/openthread/platform-abstraction/posix/openthread-core-silabs-posix-config.h +index 39c42ae33..ce0f7d35c 100644 +--- a/protocol/openthread/platform-abstraction/posix/openthread-core-silabs-posix-config.h ++++ b/protocol/openthread/platform-abstraction/posix/openthread-core-silabs-posix-config.h +@@ -188,7 +188,7 @@ sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_RO + * + */ + #undef OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE +-#define OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION == OT_THREAD_VERSION_1_3) ++#define OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_3) + + /** + * OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE +@@ -197,7 +197,7 @@ sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_RO + * + */ + #undef OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE +-#define OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION == OT_THREAD_VERSION_1_3) ++#define OPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_3) + + /** + * OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE +@@ -206,7 +206,7 @@ sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_RO + * + */ + #undef OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE +-#define OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION == OT_THREAD_VERSION_1_3) ++#define OPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_3) + + /** + * OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE +@@ -215,7 +215,7 @@ sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_RO + * + */ + #undef OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE +-#define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION == OT_THREAD_VERSION_1_3) ++#define OPENTHREAD_CONFIG_SRP_CLIENT_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_3) + + /** + * OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE +@@ -224,7 +224,7 @@ sudo INFRA_IF_NAME=eth0 RELEASE=1 REFERENCE_DEVICE=1 BACKBONE_ROUTER=1 BORDER_RO + * + */ + #undef OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE +-#define OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION == OT_THREAD_VERSION_1_3) ++#define OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE (OPENTHREAD_CONFIG_THREAD_VERSION >= OT_THREAD_VERSION_1_3) + + /** + * OPENTHREAD_CONFIG_MLE_MAX_CHILDREN diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/openthread-fix-build-errors.patch b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/openthread-fix-build-errors.patch new file mode 100644 index 00000000..156317fd --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/openthread-fix-build-errors.patch @@ -0,0 +1,70 @@ +From: RDKM +Date: Wed, 29 Oct 2025 +Subject: [PATCH] Fix namespace and constant usage in CPC and vendor spinel + +Update OpenThread namespace usage and time constants for compatibility +with newer OpenThread versions. Moves GetRadioSpinel declaration to +external linkage. + +Source: RDKM + +diff --git a/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp b/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp +index 67799f6aa..8bd809e2b 100644 +--- a/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp ++++ b/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp +@@ -51,6 +51,8 @@ + #include + #include + ++#include "common/encoding.hpp" ++#include "common/debug.hpp" + #include "common/code_utils.hpp" + #include "common/logging.hpp" + #include "common/new.hpp" +@@ -163,8 +165,8 @@ void CpcInterfaceImpl::Read(uint64_t aTimeoutUs) + { + cpc_timeval_t timeout; + +- timeout.seconds = static_cast(aTimeoutUs / US_PER_S); +- timeout.microseconds = static_cast(aTimeoutUs % US_PER_S); ++ timeout.seconds = static_cast(aTimeoutUs / OT_US_PER_S); ++ timeout.microseconds = static_cast(aTimeoutUs % OT_US_PER_S); + + block = true; + ret = cpc_set_endpoint_option(mEndpoint, CPC_OPTION_BLOCKING, &block, sizeof(block)); +@@ -188,7 +190,7 @@ void CpcInterfaceImpl::Read(uint64_t aTimeoutUs) + { + break; + } +- uint16_t bufferLen = Encoding::BigEndian::ReadUint16(ptr); ++ uint16_t bufferLen = BigEndian::ReadUint16(ptr); + ptr += 2; + bytesRead -= 2; + if (bytesRead < bufferLen) +diff --git a/protocol/openthread/platform-abstraction/posix/posix_vendor_spinel_interface.cpp b/protocol/openthread/platform-abstraction/posix/posix_vendor_spinel_interface.cpp +index 2c0956631..cf73bd6fd 100644 +--- a/protocol/openthread/platform-abstraction/posix/posix_vendor_spinel_interface.cpp ++++ b/protocol/openthread/platform-abstraction/posix/posix_vendor_spinel_interface.cpp +@@ -51,6 +51,8 @@ using InterfaceType = ot::Posix::VendorInterface; + #error "You must define OT_POSIX_RCP_HDLC_BUS, OT_POSIX_RCP_SPI_BUS or OT_POSIX_RCP_VENDOR_BUS!" + #endif + ++extern ot::Spinel::RadioSpinel &GetRadioSpinel(void); ++ + namespace VendorCmd = ot::Vendor; + namespace AntennaCmd = VendorCmd::Antenna; + namespace CoexCmd = VendorCmd::Coex; +@@ -61,11 +63,11 @@ namespace ot { + namespace Spinel { + namespace Vendor { + +-Spinel::RadioSpinel &GetRadioSpinel() ++/*Spinel::RadioSpinel &GetRadioSpinel() + { + return ot::Posix::sRadio.GetRadioSpinel(); + } +- ++*/ + static void LogIfFail(const char *aText, otError aError) + { + if (aError != OT_ERROR_NONE && aError != OT_ERROR_NO_ACK) diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/otbr-agent.path b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/otbr-agent.path new file mode 100644 index 00000000..df282e2f --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/otbr-agent.path @@ -0,0 +1,9 @@ +[Unit] +Description=Triggers otbr-agent.service when cpcd is started successfully. +Documentation= man:systemd.path + +[Path] +DirectoryNotEmpty=/dev/shm/cpcd/cpcd_0/ + +[Install] +WantedBy=multi-user.target diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/otbr-agent.service b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/otbr-agent.service new file mode 100644 index 00000000..fbc2cfbb --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/files/otbr-agent.service @@ -0,0 +1,16 @@ +[Unit] +Description=OpenThread Border Router service +#ConditionPathExists=/dev/shm/cpcd/cpcd_0/ctrl.cpcd.sock +BindsTo=cpcd.service +Requires=cpcd.service +After=cpcd.service network.target +StartLimitIntervalSec=0 + +[Service] +Type=simple +ExecStart=otbr-agent -v -d5 -I wpan0 -B brlan0 'spinel+cpc://cpcd_0?iid=2&iid-list=0' trel://brlan0 +Restart=always +RestartSec=2 + +[Install] +WantedBy=multi-user.target diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/otbr-agent_4.4.4.0.bb b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/otbr-agent_4.4.4.0.bb new file mode 100644 index 00000000..c2191cc1 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/otbr-agent_4.4.4.0.bb @@ -0,0 +1,128 @@ +DESCRIPTION = "OpenThread Border Router Agent" +HOMEPAGE = "https://github.com/openthread/ot-br-posix" + + +LICENSE = "Proprietary & BSD-3" +LIC_FILES_CHKSUM = "file://LICENSE;md5=87109e44b2fda96a8991f27684a7349c \ + file://third_party/openthread/repo/LICENSE;md5=543b6fe90ec5901a683320a36390c65f \ +" + +# OTBR and openthread dir paths inside the gecko sdk +GSDK_DIR="${WORKDIR}/git/gsdk" +GSDK_OTBR_DIR="${GSDK_DIR}/util/third_party/ot-br-posix" +GSDK_OT_DIR="${GSDK_DIR}/util/third_party/openthread" + +# Openthread repo path inside the OTBR repo +OTBR_DIR="${WORKDIR}/git/otbr" +OTBR_OT_DIR="${OTBR_DIR}/third_party/openthread/repo" + +SRC_URI = "git://github.com/SiliconLabs/gecko_sdk.git;protocol=https;branch=gsdk_4.4;destsuffix=git/gsdk;name=gsdk" +SRCREV_gsdk= "9ad9e19638a2d0ce01ce21d32f5049c5f1b21d70" + +SRC_URI += "gitsm://github.com/openthread/ot-br-posix.git;protocol=https;branch=main;destsuffix=git/otbr;name=otbr" +SRCREV_otbr = "dc6b912aa94320f2b2839260b2f18ee98379c5be" + +SRCREV_FORMAT = "gsdk_otbr" + +SRC_URI += "file://openthread-fix-build-errors.patch;patchdir=${GSDK_DIR} \ + file://adjust-otbr-configuration.patch;patchdir=${GSDK_DIR} \ + file://otbr-agent.service \ + file://otbr-agent.path \ +" + +S = "${GSDK_OTBR_DIR}" + +DEPENDS += "mdns boost iproute2 jsoncpp ncurses readline cpcd pkgconfig protobuf protobuf-c-native dbus libnetfilter-queue libnetfilter-conntrack" +RDEPENDS_${PN} = "cpcd (= 4.4.1.0-r0)" + +inherit cmake systemd pkgconfig + +# Adding otbr version on to version.txt file +inherit add-version + +# Manadatory thread certification flags +THREAD_CERT_FLAGS = " -DOTBR_DUA_ROUTING=ON \ + -DOTBR_DNSSD_DISCOVERY_PROXY=ON \ + -DOTBR_SRP_ADVERTISING_PROXY=ON \ + -DOTBR_BORDER_ROUTING=ON \ + -DOTBR_TREL=ON \ + -DOTBR_NAT64=ON \ + -DOT_TREL=ON \ + -DOT_DNS_CLIENT=ON \ + -DOT_DNSSD_SERVER=ON \ + -DOT_SRP_CLIENT=ON \ + -DOT_SRP_SERVER=ON \ + " + +# some of the options come from protocol/openthread/platform-abstraction/posix/openthread-core-silabs-posix-config.h +EXTRA_OECMAKE += " \ + -GNinja \ + -DOT_THREAD_VERSION=1.4 \ + -DCMAKE_BUILD_TYPE=Release \ + ${THREAD_CERT_FLAGS} \ + -DOT_DHCP6_CLIENT=ON \ + -DOT_DHCP6_SERVER=ON \ + -DOTBR_DHCP6_PD=OFF \ + -DOTBR_DNS_UPSTREAM_QUERY=ON \ + -DBUILD_TESTING=OFF \ + -DOTBR_COVERAGE=OFF \ + -DOTBR_MDNS=mDNSResponder \ + -DOT_MLR=ON \ + -DOTBR_DBUS=ON \ + -DOT_PLATFORM=posix \ + -DOT_ECDSA=ON \ + -DOT_FIREWALL=OFF \ + -DOT_POSIX_CONFIG_RCP_VENDOR_DEPS_PACKAGE=${GSDK_DIR}/protocol/openthread/platform-abstraction/posix/posix_vendor_rcp.cmake \ + -DOT_POSIX_CONFIG_RCP_VENDOR_INTERFACE=${GSDK_DIR}/protocol/openthread/platform-abstraction/posix/cpc_interface.cpp \ + -DOT_CLI_VENDOR_EXTENSION=${GSDK_DIR}/protocol/openthread/platform-abstraction/posix/posix_vendor_cli.cmake \ + -DOT_MULTIPAN_RCP=ON \ + -DOT_POSIX_RCP_VENDOR_BUS=ON \ + -DOT_PLATFORM_CONFIG=${GSDK_DIR}/protocol/openthread/platform-abstraction/posix/openthread-core-silabs-posix-config.h \ + -DOT_POSIX_SETTINGS_PATH=\"/etc/thread\" \ + -DOT_CHANNEL_MANAGER=OFF \ + -DOT_CHANNEL_MONITOR=OFF \ + -DOTBR_BACKBONE_ROUTER=ON \ + -DOT_BACKBONE_ROUTER_DUA_NDPROXYING=ON \ + -DOT_BACKBONE_ROUTER_MULTICAST_ROUTING=ON \ +" + +CXXFLAGS += "-Wno-error=unused-but-set-variable" + +# Update the source code of openthread and otbr within GSDK before executing do_populate_lic +# to verify the correct licenses +do_unpack[postfuncs] += "update_otbr" + +update_otbr() { + rm -rf ${GSDK_OTBR_DIR} + rm -rf ${GSDK_OT_DIR} + + ln -sf ${OTBR_DIR} ${GSDK_OTBR_DIR} + ln -sf ${OTBR_OT_DIR} ${GSDK_OT_DIR} +} + +do_install_append() { + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/otbr-agent.service ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/otbr-agent.path ${D}${systemd_system_unitdir} + + install -d ${D}${libdir} + install -m 0644 ${WORKDIR}/build/src/dbus/common/*.a ${D}${libdir} + install -m 0644 ${WORKDIR}/build/src/dbus/client/*.a ${D}${libdir} + + install -d ${D}${includedir} + install -d ${D}${includedir}/otbr/common + install -d ${D}${includedir}/otbr/openthread-br + install -d ${D}${includedir}/otbr/dbus/common + install -d ${D}${includedir}/otbr/dbus/client + install -m 0644 ${S}/src/common/*.hpp ${D}${includedir}/otbr/common + install -m 0644 ${S}/include/openthread-br/*.h ${D}${includedir}/otbr/openthread-br + install -m 0644 ${S}/src/dbus/common/*.hpp ${D}${includedir}/otbr/dbus/common + install -m 0644 ${S}/src/dbus/client/*.hpp ${D}${includedir}/otbr/dbus/client + cp -R --no-dereference --preserve=mode,links ${OTBR_OT_DIR}/include/openthread ${D}${includedir}/otbr/ +} + +FILES_${PN} += "${systemd_system_unitdir}/" + +# IMPORTANT! Do not add otbr-agent.service to the SYSTEMD_SERVICE define below. We don't want it automatically +# started. It will be started by otbr-agent.path +SYSTEMD_SERVICE_${PN} = "otbr-agent.path" diff --git a/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/otbr-agent_4.4.4.0.bbappend b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/otbr-agent_4.4.4.0.bbappend new file mode 100644 index 00000000..a9e9c4fd --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-connectivity/openthread/otbr-agent_4.4.4.0.bbappend @@ -0,0 +1,25 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + + +CXXFLAGS += "-fPIC" +CFLAGS += "-fPIC" +# Add BartonCore's patch to extend the OTBR D-Bus API +SRC_URI += "file://0003-Extend-d-bus-properties-and-signals.patch;patchdir=${GSDK_OTBR_DIR}" + +# Make sure the patched files are installed too +do_install:append() { + # Make sure the D-Bus API files are properly installed + install -d ${D}${includedir}/otbr/dbus/client + install -d ${D}${includedir}/otbr/dbus/common + install -d ${D}${includedir}/otbr/dbus/server + + # Install the extended client API headers + install -m 0644 ${S}/src/dbus/client/thread_api_dbus.hpp ${D}${includedir}/otbr/dbus/client/ + install -m 0644 ${S}/src/dbus/client/thread_api_dbus.cpp ${D}${includedir}/otbr/dbus/client/ + + # Install the constants header with the new constants + install -m 0644 ${S}/src/dbus/common/constants.hpp ${D}${includedir}/otbr/dbus/common/ + + # Install the server headers + install -m 0644 ${S}/src/dbus/server/dbus_thread_object_rcp.hpp ${D}${includedir}/otbr/dbus/server/ +} diff --git a/meta-rdk-mtk-bpir4/recipes-core/barton-core/barton_%.bbappend b/meta-rdk-mtk-bpir4/recipes-core/barton-core/barton_%.bbappend new file mode 100644 index 00000000..dd845782 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-core/barton-core/barton_%.bbappend @@ -0,0 +1,40 @@ +# Enable matter support +BARTON_BUILD_REFERENCE = "ON" +BARTON_BUILD_MATTER = "ON" +BARTON_BUILD_THREAD = "ON" + +# This allows us to use the local files/ directory +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +# Add custom application matter code to BartonCore source. Note this is separate from +# matter SDK configuration or custom code. While code here is still intended +# to extend matter SDK interfaces, it is not the same as ZAP configuration that +# would generate cluster code behavior. For that sort of configuration, see +# the recipes-matter/barton-matter-example recipe. +SRC_URI += "file://matter/" + +# Define the paths to matter custom plugin code, particularly providers. +# In this case, we want to show off how you would register your own custom +# provider. However, in doing so you must also specify any Barton supplied providers that would +# otherwise have been selected by default. +# +# You can also specify Delegate sources, and both delegate/provider header search paths. +# @see Barton options.cmake for: +# BCORE_MATTER_PROVIDER_IMPLEMENTATIONS +# BCORE_MATTER_DELEGATE_IMPLEMENTATIONS +# BCORE_MATTER_PROVIDER_HEADER_PATHS +# BCORE_MATTER_DELEGATE_HEADER_PATHS +# BCORE_LINK_LIBRARIES (for when your custom matter code depends on additional libraries. In yocto, you should also add to bitbake DEPENDS variable) +MATTER_PROVIDERS="${WORKDIR}/matter/ExampleTestDACProvider.cpp;${S}/core/src/subsystems/matter/providers/BartonCommissionableDataProvider.cpp;${S}/core/src/subsystems/matter/providers/default/DefaultCommissionableDataProvider.cpp" + +# Choose self-signed operational certificate delegate for usability. Actual products need their own +# delegate that wires up to a valid CA. They may also use the default CertifierOperationalCredentialsIssuer +# delegate which uses xpki as its CA. +MATTER_DELEGATES="${S}/core/src/subsystems/matter/delegates/dev/SelfSignedCertifierOperationalCredentialsIssuer.cpp" + +# It is recommended to use the bitbake variable interfaces (e.g. BARTON_BUILD_MATTER) where applicable, but you can always set whatever cmake variables you +# want as well. +EXTRA_OECMAKE += " \ + -DBCORE_MATTER_PROVIDER_IMPLEMENTATIONS='${MATTER_PROVIDERS}' \ + -DBCORE_MATTER_DELEGATE_IMPLEMENTATIONS='${MATTER_DELEGATES}' \ +" diff --git a/meta-rdk-mtk-bpir4/recipes-core/barton-core/files/matter/ExampleTestDACProvider.cpp b/meta-rdk-mtk-bpir4/recipes-core/barton-core/files/matter/ExampleTestDACProvider.cpp new file mode 100644 index 00000000..b263e146 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-core/barton-core/files/matter/ExampleTestDACProvider.cpp @@ -0,0 +1,22 @@ +// This is a copy of Barton's BartonTestDacProvider for development. This file is intended to showcase how you might +// create and register your own matter plugin code. Since this file simply registers the matter SDK DAC provider, it +// defines no routines. However, if you were to create your own DAC provider (or matter plugin code) you would do so +// here and register your custom matter code with the Registry in a similar manner. +// +// See the barton_%.bbappend to see how to register this file with barton at build-time. + +#include "credentials/examples/DeviceAttestationCredsExample.h" +#include "BartonMatterProviderRegistry.hpp" +#include + +using namespace chip::Credentials; +using namespace barton; + +namespace { + // Just register the example test dac provider. Use a custom do-nothing deleter since the example DAC provider is + // static duration memory. + std::shared_ptr + dacProvider(chip::Credentials::Examples::GetExampleDACProvider(), + [](DeviceAttestationCredentialsProvider *p) {}); + auto providerRegistered = BartonMatterProviderRegistry::Instance().RegisterBartonDACProvider(dacProvider); +} diff --git a/meta-rdk-mtk-bpir4/recipes-core/images/rdk-generic-broadband-image.bbappend b/meta-rdk-mtk-bpir4/recipes-core/images/rdk-generic-broadband-image.bbappend index aefcb4a8..469b190c 100644 --- a/meta-rdk-mtk-bpir4/recipes-core/images/rdk-generic-broadband-image.bbappend +++ b/meta-rdk-mtk-bpir4/recipes-core/images/rdk-generic-broadband-image.bbappend @@ -1,5 +1,5 @@ #WebPA Feature -IMAGE_INSTALL_append = " parodus parodus2ccsp rdktelcovoicemanager asterisk hal-voice-asterisk" +IMAGE_INSTALL_append = " parodus parodus2ccsp rdktelcovoicemanager asterisk hal-voice-asterisk cpcd otbr-agent bluez5-bluetoothd bt-host-cpc-hci-bridge barton" #TR069 Feature IMAGE_INSTALL_append = " ccsp-tr069-pa" diff --git a/meta-rdk-mtk-bpir4/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend b/meta-rdk-mtk-bpir4/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend index e7baa3f1..d6afb267 100644 --- a/meta-rdk-mtk-bpir4/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend +++ b/meta-rdk-mtk-bpir4/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend @@ -5,6 +5,11 @@ RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " iperf3" RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " parodus2ccsp" RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'OneWifi', 'rdk-wifi-hal', '' ,d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'CPUPROCANALYZER_BROADBAND', 'cpuprocanalyzer', ' ', d)} \ + linux-firmware-bcm-bt \ + linux-firmware-rtl-bt \ + linux-firmware-brcm \ ${@bb.utils.contains('DISTRO_FEATURES', 'OneWifi', 'rdk-wifi-hal', '' ,d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'CPUPROCANALYZER_BROADBAND', 'cpuprocanalyzer', ' ', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'cellular_hybrid_support', 'usbmuxd', ' ', d)} \ @@ -16,4 +21,4 @@ GWPROVAPP = "${@bb.utils.contains('DISTRO_FEATURES','rdkb_wan_manager','ccsp-gwp RDEPENDS_packagegroup-rdk-ccsp-broadband_append = "${@bb.utils.contains('DISTRO_FEATURES', 'rdkb_cellular_manager_mm', ' rdk-cellularmanager-mm', ' ', d)}" RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " rdktelcovoicemanager" -RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " gw-lan-refresh" \ No newline at end of file +RDEPENDS_packagegroup-rdk-ccsp-broadband_append = " gw-lan-refresh" diff --git a/meta-rdk-mtk-bpir4/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/meta-rdk-mtk-bpir4/recipes-kernel/linux-firmware/linux-firmware_%.bbappend index b5c9eaad..6ffcb923 100644 --- a/meta-rdk-mtk-bpir4/recipes-kernel/linux-firmware/linux-firmware_%.bbappend +++ b/meta-rdk-mtk-bpir4/recipes-kernel/linux-firmware/linux-firmware_%.bbappend @@ -1,3 +1,59 @@ +# Only install specific firmware packages +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + + + +# Define only the packages we need + +PACKAGES =+ " \ + ${PN}-bcm-bt \ + ${PN}-brcm \ + ${PN}-rtl-bt \ +" + + + +# Specify files for each package + +FILES:${PN}-bcm-bt = " \ + ${nonarch_base_libdir}/firmware/brcm/BCM* \ +" + + + +FILES:${PN}-brcm = " \ + ${nonarch_base_libdir}/firmware/brcm/* \ +" + + + +FILES:${PN}-rtl-bt = " \ + ${nonarch_base_libdir}/firmware/rtl_bt/* \ +" + + + +# Dependencies +RDEPENDS:${PN}-bcm-bt += "${PN}-brcm" + + + +# Remove all other firmware packages + +do_install:append() { + # Remove everything except brcm and rtl_bt directories + find ${D}${nonarch_base_libdir}/firmware -mindepth 1 -maxdepth 1 \ + ! -name 'brcm' ! -name 'rtl_bt' -exec rm -rf {} + +} + + + +# Update RRECOMMENDS to include only what we need +RRECOMMENDS:${PN}-nonfreefirmware = "\ + ${PN}-bcm-bt \ + ${PN}-brcm \ + ${PN}-rtl-bt \ +" #Remove duplicate package installation in populate sdk do_install_append() { rm -rf ${D}${base_libdir}/firmware/mediatek/mt7996 diff --git a/meta-rdk-mtk-bpir4/recipes-kernel/linux/files/rdkb_cfg/iptables_nf.cfg b/meta-rdk-mtk-bpir4/recipes-kernel/linux/files/rdkb_cfg/iptables_nf.cfg index 023f7003..ba1dcd01 100644 --- a/meta-rdk-mtk-bpir4/recipes-kernel/linux/files/rdkb_cfg/iptables_nf.cfg +++ b/meta-rdk-mtk-bpir4/recipes-kernel/linux/files/rdkb_cfg/iptables_nf.cfg @@ -1,3 +1,10 @@ CONFIG_NF_CONNTRACK_TFTP=y CONFIG_NETFILTER_XT_TARGET_CT=y CONFIG_USB_NET_QMI_WWAN=y +CONFIG_BT_HCIBTUSB=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_INTEL=y +CONFIG_USB_ACM=y +CONFIG_TUN=y +CONFIG_IEEE802154=y +CONFIG_MAC802154=y diff --git a/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/barton-matter_1.4.0.txt b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/barton-matter_1.4.0.txt new file mode 100644 index 00000000..7d44ae9d --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/barton-matter_1.4.0.txt @@ -0,0 +1,18 @@ +# Example customization for barton-matter +# This shows how to customize the Matter configuration for your specific product + +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI += " \ + file://barton.zap \ + file://barton.matter \ + file://zzz_generated.tar.gz \ +" + +MATTER_ZAP_FILE = "${WORKDIR}/barton.zap" +# Adding the zzz_generated tarball to the SRC_URI will unpack it into WORKDIR +MATTER_ZZZ_GENERATED = "${WORKDIR}/zzz_generated" + +# Set persistent storage location for production use +MATTER_CONF_DIR = "/nvram/icontrol" +MATTER_IDL_FILE = "${WORKDIR}/barton.matter" diff --git a/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/barton-matter_1.4.2.bbappend b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/barton-matter_1.4.2.bbappend new file mode 100644 index 00000000..7d44ae9d --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/barton-matter_1.4.2.bbappend @@ -0,0 +1,18 @@ +# Example customization for barton-matter +# This shows how to customize the Matter configuration for your specific product + +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI += " \ + file://barton.zap \ + file://barton.matter \ + file://zzz_generated.tar.gz \ +" + +MATTER_ZAP_FILE = "${WORKDIR}/barton.zap" +# Adding the zzz_generated tarball to the SRC_URI will unpack it into WORKDIR +MATTER_ZZZ_GENERATED = "${WORKDIR}/zzz_generated" + +# Set persistent storage location for production use +MATTER_CONF_DIR = "/nvram/icontrol" +MATTER_IDL_FILE = "${WORKDIR}/barton.matter" diff --git a/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/barton.matter b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/barton.matter new file mode 100644 index 00000000..99a4c96d --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/barton.matter @@ -0,0 +1,2259 @@ +// This IDL was generated automatically by ZAP. +// It is for view/code review purposes only. + +enum AreaTypeTag : enum8 { + kAisle = 0; + kAttic = 1; + kBackDoor = 2; + kBackYard = 3; + kBalcony = 4; + kBallroom = 5; + kBathroom = 6; + kBedroom = 7; + kBorder = 8; + kBoxroom = 9; + kBreakfastRoom = 10; + kCarport = 11; + kCellar = 12; + kCloakroom = 13; + kCloset = 14; + kConservatory = 15; + kCorridor = 16; + kCraftRoom = 17; + kCupboard = 18; + kDeck = 19; + kDen = 20; + kDining = 21; + kDrawingRoom = 22; + kDressingRoom = 23; + kDriveway = 24; + kElevator = 25; + kEnsuite = 26; + kEntrance = 27; + kEntryway = 28; + kFamilyRoom = 29; + kFoyer = 30; + kFrontDoor = 31; + kFrontYard = 32; + kGameRoom = 33; + kGarage = 34; + kGarageDoor = 35; + kGarden = 36; + kGardenDoor = 37; + kGuestBathroom = 38; + kGuestBedroom = 39; + kGuestRoom = 41; + kGym = 42; + kHallway = 43; + kHearthRoom = 44; + kKidsRoom = 45; + kKidsBedroom = 46; + kKitchen = 47; + kLaundryRoom = 49; + kLawn = 50; + kLibrary = 51; + kLivingRoom = 52; + kLounge = 53; + kMediaTVRoom = 54 [spec_name = "Media/TV Room"]; + kMudRoom = 55; + kMusicRoom = 56; + kNursery = 57; + kOffice = 58; + kOutdoorKitchen = 59; + kOutside = 60; + kPantry = 61; + kParkingLot = 62; + kParlor = 63; + kPatio = 64; + kPlayRoom = 65; + kPoolRoom = 66; + kPorch = 67; + kPrimaryBathroom = 68; + kPrimaryBedroom = 69; + kRamp = 70; + kReceptionRoom = 71; + kRecreationRoom = 72; + kRoof = 74; + kSauna = 75; + kScullery = 76; + kSewingRoom = 77; + kShed = 78; + kSideDoor = 79; + kSideYard = 80; + kSittingRoom = 81; + kSnug = 82; + kSpa = 83; + kStaircase = 84; + kSteamRoom = 85; + kStorageRoom = 86; + kStudio = 87; + kStudy = 88; + kSunRoom = 89; + kSwimmingPool = 90; + kTerrace = 91; + kUtilityRoom = 92; + kWard = 93; + kWorkshop = 94; + kToilet = 95; +} + +enum AtomicRequestTypeEnum : enum8 { + kBeginWrite = 0; + kCommitWrite = 1; + kRollbackWrite = 2; +} + +enum LandmarkTag : enum8 { + kAirConditioner = 0; + kAirPurifier = 1; + kBackDoor = 2; + kBarStool = 3; + kBathMat = 4; + kBathtub = 5; + kBed = 6; + kBookshelf = 7; + kChair = 8; + kChristmasTree = 9; + kCoatRack = 10; + kCoffeeTable = 11; + kCookingRange = 12; + kCouch = 13; + kCountertop = 14; + kCradle = 15; + kCrib = 16; + kDesk = 17; + kDiningTable = 18; + kDishwasher = 19; + kDoor = 20; + kDresser = 21; + kLaundryDryer = 22; + kFan = 23; + kFireplace = 24; + kFreezer = 25; + kFrontDoor = 26; + kHighChair = 27; + kKitchenIsland = 28; + kLamp = 29; + kLitterBox = 30; + kMirror = 31; + kNightstand = 32; + kOven = 33; + kPetBed = 34; + kPetBowl = 35; + kPetCrate = 36; + kRefrigerator = 37; + kScratchingPost = 38; + kShoeRack = 39; + kShower = 40; + kSideDoor = 41; + kSink = 42; + kSofa = 43; + kStove = 44; + kTable = 45; + kToilet = 46; + kTrashCan = 47; + kLaundryWasher = 48; + kWindow = 49; + kWineCooler = 50; +} + +enum LocationTag : enum8 { + kIndoor = 0; + kOutdoor = 1; + kInside = 2; + kOutside = 3; +} + +enum MeasurementTypeEnum : enum16 { + kUnspecified = 0; + kVoltage = 1; + kActiveCurrent = 2; + kReactiveCurrent = 3; + kApparentCurrent = 4; + kActivePower = 5; + kReactivePower = 6; + kApparentPower = 7; + kRMSVoltage = 8; + kRMSCurrent = 9; + kRMSPower = 10; + kFrequency = 11; + kPowerFactor = 12; + kNeutralCurrent = 13; + kElectricalEnergy = 14; + kReactiveEnergy = 15; + kApparentEnergy = 16; + kSoilMoisture = 17; +} + +enum PositionTag : enum8 { + kLeft = 0; + kRight = 1; + kTop = 2; + kBottom = 3; + kMiddle = 4; + kRow = 5; + kColumn = 6; +} + +enum PowerThresholdSourceEnum : enum8 { + kContract = 0; + kRegulator = 1; + kEquipment = 2; +} + +enum RelativePositionTag : enum8 { + kUnder = 0; + kNextTo = 1; + kAround = 2; + kOn = 3; + kAbove = 4; + kFrontOf = 5; + kBehind = 6; +} + +enum StreamUsageEnum : enum8 { + kInternal = 0; + kRecording = 1; + kAnalysis = 2; + kLiveView = 3; +} + +enum TariffPriceTypeEnum : enum8 { + kStandard = 0; + kCritical = 1; + kVirtual = 2; + kIncentive = 3; + kIncentiveSignal = 4; +} + +enum TariffUnitEnum : enum8 { + kKWh = 0; + kKVAh = 1; +} + +enum TestGlobalEnum : enum8 { + kSomeValue = 0; + kSomeOtherValue = 1; + kFinalValue = 2; +} + +enum ThreeLevelAutoEnum : enum8 { + kAuto = 0; + kLow = 1; + kMedium = 2; + kHigh = 3; +} + +enum WebRTCEndReasonEnum : enum8 { + kIceFailed = 0; + kIceTimeout = 1; + kUserHangup = 2; + kUserBusy = 3; + kReplaced = 4; + kNoUserMedia = 5; + kInviteTimeout = 6; + kAnsweredElsewhere = 7; + kOutOfResources = 8; + kMediaTimeout = 9; + kLowPower = 10; + kUnknownReason = 11; +} + +bitmap TestGlobalBitmap : bitmap32 { + kFirstBit = 0x1; + kSecondBit = 0x2; +} + +struct CurrencyStruct { + int16u currency = 0; + int8u decimalPoints = 1; +} + +struct PriceStruct { + money amount = 0; + CurrencyStruct currency = 1; +} + +struct MeasurementAccuracyRangeStruct { + int64s rangeMin = 0; + int64s rangeMax = 1; + optional percent100ths percentMax = 2; + optional percent100ths percentMin = 3; + optional percent100ths percentTypical = 4; + optional int64u fixedMax = 5; + optional int64u fixedMin = 6; + optional int64u fixedTypical = 7; +} + +struct MeasurementAccuracyStruct { + MeasurementTypeEnum measurementType = 0; + boolean measured = 1; + int64s minMeasuredValue = 2; + int64s maxMeasuredValue = 3; + MeasurementAccuracyRangeStruct accuracyRanges[] = 4; +} + +struct AtomicAttributeStatusStruct { + attrib_id attributeID = 0; + status statusCode = 1; +} + +struct ICECandidateStruct { + char_string candidate = 0; + nullable char_string SDPMid = 1; + nullable int16u SDPMLineIndex = 2; +} + +struct ICEServerStruct { + char_string URLs[] = 0; + optional long_char_string<508> username = 1; + optional long_char_string<512> credential = 2; + optional int16u caid = 3; +} + +struct LocationDescriptorStruct { + char_string<128> locationName = 0; + nullable int16s floorNumber = 1; + nullable AreaTypeTag areaType = 2; +} + +struct PowerThresholdStruct { + optional power_mw powerThreshold = 0; + optional power_mva apparentPowerThreshold = 1; + nullable PowerThresholdSourceEnum powerThresholdSource = 2; +} + +struct TestGlobalStruct { + char_string<128> name = 0; + nullable TestGlobalBitmap myBitmap = 1; + optional nullable TestGlobalEnum myEnum = 2; +} + +struct ViewportStruct { + int16u x1 = 0; + int16u y1 = 1; + int16u x2 = 2; + int16u y2 = 3; +} + +fabric_scoped struct WebRTCSessionStruct { + int16u id = 0; + node_id peerNodeID = 1; + endpoint_no peerEndpointID = 2; + StreamUsageEnum streamUsage = 3; + nullable int16u videoStreamID = 4; + nullable int16u audioStreamID = 5; + optional boolean metadataEnabled = 6; + fabric_idx fabricIndex = 254; +} + +/** The Descriptor Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for describing a node, its endpoints and clusters. */ +cluster Descriptor = 29 { + revision 3; + + bitmap Feature : bitmap32 { + kTagList = 0x1; + } + + struct DeviceTypeStruct { + devtype_id deviceType = 0; + int16u revision = 1; + } + + struct SemanticTagStruct { + nullable vendor_id mfgCode = 0; + enum8 namespaceID = 1; + enum8 tag = 2; + optional nullable char_string<64> label = 3; + } + + readonly attribute DeviceTypeStruct deviceTypeList[] = 0; + readonly attribute cluster_id serverList[] = 1; + readonly attribute cluster_id clientList[] = 2; + readonly attribute endpoint_no partsList[] = 3; + readonly attribute optional SemanticTagStruct tagList[] = 4; + readonly attribute optional char_string<32> endpointUniqueID = 5; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +/** The Binding Cluster is meant to replace the support from the Zigbee Device Object (ZDO) for supporting the binding table. */ +cluster Binding = 30 { + revision 1; + + fabric_scoped struct TargetStruct { + optional node_id node = 1; + optional group_id group = 2; + optional endpoint_no endpoint = 3; + optional cluster_id cluster = 4; + fabric_idx fabricIndex = 254; + } + + attribute access(write: manage) TargetStruct binding[] = 0; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +/** The Access Control Cluster exposes a data model view of a + Node's Access Control List (ACL), which codifies the rules used to manage + and enforce Access Control for the Node's endpoints and their associated + cluster instances. */ +cluster AccessControl = 31 { + revision 2; + + enum AccessControlEntryAuthModeEnum : enum8 { + kPASE = 1 [spec_name = "PASE"]; + kCASE = 2 [spec_name = "CASE"]; + kGroup = 3; + } + + enum AccessControlEntryPrivilegeEnum : enum8 { + kView = 1; + kProxyView = 2; + kOperate = 3; + kManage = 4; + kAdminister = 5; + } + + enum AccessRestrictionTypeEnum : enum8 { + kAttributeAccessForbidden = 0; + kAttributeWriteForbidden = 1; + kCommandForbidden = 2; + kEventForbidden = 3; + } + + enum ChangeTypeEnum : enum8 { + kChanged = 0; + kAdded = 1; + kRemoved = 2; + } + + bitmap Feature : bitmap32 { + kExtension = 0x1; + kManagedDevice = 0x2; + } + + struct AccessRestrictionStruct { + AccessRestrictionTypeEnum type = 0; + nullable int32u id = 1; + } + + struct CommissioningAccessRestrictionEntryStruct { + endpoint_no endpoint = 0; + cluster_id cluster = 1; + AccessRestrictionStruct restrictions[] = 2; + } + + fabric_scoped struct AccessRestrictionEntryStruct { + fabric_sensitive endpoint_no endpoint = 0; + fabric_sensitive cluster_id cluster = 1; + fabric_sensitive AccessRestrictionStruct restrictions[] = 2; + fabric_idx fabricIndex = 254; + } + + struct AccessControlTargetStruct { + nullable cluster_id cluster = 0; + nullable endpoint_no endpoint = 1; + nullable devtype_id deviceType = 2; + } + + fabric_scoped struct AccessControlEntryStruct { + fabric_sensitive AccessControlEntryPrivilegeEnum privilege = 1; + fabric_sensitive AccessControlEntryAuthModeEnum authMode = 2; + nullable fabric_sensitive int64u subjects[] = 3; + nullable fabric_sensitive AccessControlTargetStruct targets[] = 4; + fabric_idx fabricIndex = 254; + } + + fabric_scoped struct AccessControlExtensionStruct { + fabric_sensitive octet_string<128> data = 1; + fabric_idx fabricIndex = 254; + } + + fabric_sensitive info event access(read: administer) AccessControlEntryChanged = 0 { + nullable node_id adminNodeID = 1; + nullable int16u adminPasscodeID = 2; + ChangeTypeEnum changeType = 3; + nullable AccessControlEntryStruct latestValue = 4; + fabric_idx fabricIndex = 254; + } + + fabric_sensitive info event access(read: administer) AccessControlExtensionChanged = 1 { + nullable node_id adminNodeID = 1; + nullable int16u adminPasscodeID = 2; + ChangeTypeEnum changeType = 3; + nullable AccessControlExtensionStruct latestValue = 4; + fabric_idx fabricIndex = 254; + } + + fabric_sensitive info event access(read: administer) FabricRestrictionReviewUpdate = 2 { + int64u token = 0; + optional long_char_string instruction = 1; + optional long_char_string ARLRequestFlowUrl = 2; + fabric_idx fabricIndex = 254; + } + + attribute access(read: administer, write: administer) AccessControlEntryStruct acl[] = 0; + attribute access(read: administer, write: administer) optional AccessControlExtensionStruct extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; + readonly attribute optional CommissioningAccessRestrictionEntryStruct commissioningARL[] = 5; + readonly attribute optional AccessRestrictionEntryStruct arl[] = 6; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct ReviewFabricRestrictionsRequest { + CommissioningAccessRestrictionEntryStruct arl[] = 0; + } + + response struct ReviewFabricRestrictionsResponse = 1 { + int64u token = 0; + } + + /** This command signals to the service associated with the device vendor that the fabric administrator would like a review of the current restrictions on the accessing fabric. */ + fabric command access(invoke: administer) ReviewFabricRestrictions(ReviewFabricRestrictionsRequest): ReviewFabricRestrictionsResponse = 0; +} + +/** This cluster provides attributes and events for determining basic information about Nodes, which supports both + Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number, + which apply to the whole Node. Also allows setting user device information such as location. */ +cluster BasicInformation = 40 { + revision 5; + + enum ColorEnum : enum8 { + kBlack = 0; + kNavy = 1; + kGreen = 2; + kTeal = 3; + kMaroon = 4; + kPurple = 5; + kOlive = 6; + kGray = 7; + kBlue = 8; + kLime = 9; + kAqua = 10; + kRed = 11; + kFuchsia = 12; + kYellow = 13; + kWhite = 14; + kNickel = 15; + kChrome = 16; + kBrass = 17; + kCopper = 18; + kSilver = 19; + kGold = 20; + } + + enum ProductFinishEnum : enum8 { + kOther = 0; + kMatte = 1; + kSatin = 2; + kPolished = 3; + kRugged = 4; + kFabric = 5; + } + + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + + struct ProductAppearanceStruct { + ProductFinishEnum finish = 0; + nullable ColorEnum primaryColor = 1; + } + + critical event StartUp = 0 { + int32u softwareVersion = 0; + } + + critical event ShutDown = 1 { + } + + info event Leave = 2 { + fabric_idx fabricIndex = 0; + } + + info event ReachableChanged = 3 { + boolean reachableNewValue = 0; + } + + readonly attribute int16u dataModelRevision = 0; + readonly attribute char_string<32> vendorName = 1; + readonly attribute vendor_id vendorID = 2; + readonly attribute char_string<32> productName = 3; + readonly attribute int16u productID = 4; + attribute access(write: manage) char_string<32> nodeLabel = 5; + attribute access(write: administer) char_string<2> location = 6; + readonly attribute int16u hardwareVersion = 7; + readonly attribute char_string<64> hardwareVersionString = 8; + readonly attribute int32u softwareVersion = 9; + readonly attribute char_string<64> softwareVersionString = 10; + readonly attribute optional char_string<16> manufacturingDate = 11; + readonly attribute optional char_string<32> partNumber = 12; + readonly attribute optional long_char_string<256> productURL = 13; + readonly attribute optional char_string<64> productLabel = 14; + readonly attribute optional char_string<32> serialNumber = 15; + attribute access(write: manage) optional boolean localConfigDisabled = 16; + readonly attribute optional boolean reachable = 17; + readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; + readonly attribute optional ProductAppearanceStruct productAppearance = 20; + readonly attribute int32u specificationVersion = 21; + readonly attribute int16u maxPathsPerInvoke = 22; + readonly attribute int32u configurationVersion = 24; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + command MfgSpecificPing(): DefaultSuccess = 0; +} + +/** Provides an interface for providing OTA software updates */ +cluster OtaSoftwareUpdateProvider = 41 { + revision 1; // NOTE: Default/not specifically set + + enum ApplyUpdateActionEnum : enum8 { + kProceed = 0; + kAwaitNextAction = 1; + kDiscontinue = 2; + } + + enum DownloadProtocolEnum : enum8 { + kBDXSynchronous = 0; + kBDXAsynchronous = 1; + kHTTPS = 2 [spec_name = "HTTPS"]; + kVendorSpecific = 3; + } + + enum StatusEnum : enum8 { + kUpdateAvailable = 0; + kBusy = 1; + kNotAvailable = 2; + kDownloadProtocolNotSupported = 3; + } + + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct QueryImageRequest { + vendor_id vendorID = 0; + int16u productID = 1; + int32u softwareVersion = 2; + DownloadProtocolEnum protocolsSupported[] = 3; + optional int16u hardwareVersion = 4; + optional char_string<2> location = 5; + optional boolean requestorCanConsent = 6; + optional octet_string<512> metadataForProvider = 7; + } + + response struct QueryImageResponse = 1 { + StatusEnum status = 0; + optional int32u delayedActionTime = 1; + optional char_string<256> imageURI = 2; + optional int32u softwareVersion = 3; + optional char_string<64> softwareVersionString = 4; + optional octet_string<32> updateToken = 5; + optional boolean userConsentNeeded = 6; + optional octet_string<512> metadataForRequestor = 7; + } + + request struct ApplyUpdateRequestRequest { + octet_string<32> updateToken = 0; + int32u newVersion = 1; + } + + response struct ApplyUpdateResponse = 3 { + ApplyUpdateActionEnum action = 0; + int32u delayedActionTime = 1; + } + + request struct NotifyUpdateAppliedRequest { + octet_string<32> updateToken = 0; + int32u softwareVersion = 1; + } + + /** Determine availability of a new Software Image */ + command QueryImage(QueryImageRequest): QueryImageResponse = 0; + /** Determine next action to take for a downloaded Software Image */ + command ApplyUpdateRequest(ApplyUpdateRequestRequest): ApplyUpdateResponse = 2; + /** Notify OTA Provider that an update was applied */ + command NotifyUpdateApplied(NotifyUpdateAppliedRequest): DefaultSuccess = 4; +} + +/** Provides an interface for downloading and applying OTA software updates */ +cluster OtaSoftwareUpdateRequestor = 42 { + revision 1; // NOTE: Default/not specifically set + + enum AnnouncementReasonEnum : enum8 { + kSimpleAnnouncement = 0; + kUpdateAvailable = 1; + kUrgentUpdateAvailable = 2; + } + + enum ChangeReasonEnum : enum8 { + kUnknown = 0; + kSuccess = 1; + kFailure = 2; + kTimeOut = 3; + kDelayByProvider = 4; + } + + enum UpdateStateEnum : enum8 { + kUnknown = 0; + kIdle = 1; + kQuerying = 2; + kDelayedOnQuery = 3; + kDownloading = 4; + kApplying = 5; + kDelayedOnApply = 6; + kRollingBack = 7; + kDelayedOnUserConsent = 8; + } + + fabric_scoped struct ProviderLocation { + node_id providerNodeID = 1; + endpoint_no endpoint = 2; + fabric_idx fabricIndex = 254; + } + + info event StateTransition = 0 { + UpdateStateEnum previousState = 0; + UpdateStateEnum newState = 1; + ChangeReasonEnum reason = 2; + nullable int32u targetSoftwareVersion = 3; + } + + critical event VersionApplied = 1 { + int32u softwareVersion = 0; + int16u productID = 1; + } + + info event DownloadError = 2 { + int32u softwareVersion = 0; + int64u bytesDownloaded = 1; + nullable int8u progressPercent = 2; + nullable int64s platformCode = 3; + } + + attribute access(write: administer) ProviderLocation defaultOTAProviders[] = 0; + readonly attribute boolean updatePossible = 1; + readonly attribute UpdateStateEnum updateState = 2; + readonly attribute nullable int8u updateStateProgress = 3; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct AnnounceOTAProviderRequest { + node_id providerNodeID = 0; + vendor_id vendorID = 1; + AnnouncementReasonEnum announcementReason = 2; + optional octet_string<512> metadataForNode = 3; + endpoint_no endpoint = 4; + } + + /** Announce the presence of an OTA Provider */ + command AnnounceOTAProvider(AnnounceOTAProviderRequest): DefaultSuccess = 0; +} + +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing common languages, units of measurements, and numerical formatting + standards. As such, Nodes that visually or audibly convey information need a mechanism by which + they can be configured to use a user’s preferred language, units, etc */ +cluster LocalizationConfiguration = 43 { + revision 1; + + attribute access(write: manage) char_string<35> activeLocale = 0; + readonly attribute char_string supportedLocales[] = 1; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +/** Nodes should be expected to be deployed to any and all regions of the world. These global regions + may have differing preferences for how dates and times are conveyed. As such, Nodes that visually + or audibly convey time information need a mechanism by which they can be configured to use a + user’s preferred format. */ +cluster TimeFormatLocalization = 44 { + revision 1; + + enum CalendarTypeEnum : enum8 { + kBuddhist = 0; + kChinese = 1; + kCoptic = 2; + kEthiopian = 3; + kGregorian = 4; + kHebrew = 5; + kIndian = 6; + kIslamic = 7; + kJapanese = 8; + kKorean = 9; + kPersian = 10; + kTaiwanese = 11; + kUseActiveLocale = 255; + } + + enum HourFormatEnum : enum8 { + k12hr = 0; + k24hr = 1; + kUseActiveLocale = 255; + } + + bitmap Feature : bitmap32 { + kCalendarFormat = 0x1; + } + + attribute access(write: manage) HourFormatEnum hourFormat = 0; + attribute access(write: manage) optional CalendarTypeEnum activeCalendarType = 1; + readonly attribute optional CalendarTypeEnum supportedCalendarTypes[] = 2; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; +} + +/** This cluster is used to manage global aspects of the Commissioning flow. */ +cluster GeneralCommissioning = 48 { + revision 2; + + enum CommissioningErrorEnum : enum8 { + kOK = 0 [spec_name = "OK"]; + kValueOutsideRange = 1; + kInvalidAuthentication = 2; + kNoFailSafe = 3; + kBusyWithOtherAdmin = 4; + kRequiredTCNotAccepted = 5; + kTCAcknowledgementsNotReceived = 6; + kTCMinVersionNotMet = 7; + } + + enum NetworkRecoveryReasonEnum : enum8 { + kUnspecified = 0; + kAuth = 1; + kVisibility = 2; + } + + enum RegulatoryLocationTypeEnum : enum8 { + kIndoor = 0; + kOutdoor = 1; + kIndoorOutdoor = 2; + } + + bitmap Feature : bitmap32 { + kTermsAndConditions = 0x1; + kNetworkRecovery = 0x2; + } + + struct BasicCommissioningInfo { + int16u failSafeExpiryLengthSeconds = 0; + int16u maxCumulativeFailsafeSeconds = 1; + } + + attribute access(write: administer) int64u breadcrumb = 0; + readonly attribute BasicCommissioningInfo basicCommissioningInfo = 1; + readonly attribute RegulatoryLocationTypeEnum regulatoryConfig = 2; + readonly attribute RegulatoryLocationTypeEnum locationCapability = 3; + readonly attribute boolean supportsConcurrentConnection = 4; + provisional readonly attribute access(read: administer) optional int16u TCAcceptedVersion = 5; + provisional readonly attribute access(read: administer) optional int16u TCMinRequiredVersion = 6; + provisional readonly attribute access(read: administer) optional bitmap16 TCAcknowledgements = 7; + provisional readonly attribute access(read: administer) optional boolean TCAcknowledgementsRequired = 8; + provisional readonly attribute access(read: administer) optional nullable int32u TCUpdateDeadline = 9; + provisional readonly attribute access(read: manage) optional octet_string<8> recoveryIdentifier = 10; + provisional readonly attribute access(read: manage) optional nullable NetworkRecoveryReasonEnum networkRecoveryReason = 11; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct ArmFailSafeRequest { + int16u expiryLengthSeconds = 0; + int64u breadcrumb = 1; + } + + response struct ArmFailSafeResponse = 1 { + CommissioningErrorEnum errorCode = 0; + char_string<128> debugText = 1; + } + + request struct SetRegulatoryConfigRequest { + RegulatoryLocationTypeEnum newRegulatoryConfig = 0; + char_string<2> countryCode = 1; + int64u breadcrumb = 2; + } + + response struct SetRegulatoryConfigResponse = 3 { + CommissioningErrorEnum errorCode = 0; + char_string debugText = 1; + } + + response struct CommissioningCompleteResponse = 5 { + CommissioningErrorEnum errorCode = 0; + char_string debugText = 1; + } + + request struct SetTCAcknowledgementsRequest { + int16u TCVersion = 0; + bitmap16 TCUserResponse = 1; + } + + response struct SetTCAcknowledgementsResponse = 7 { + CommissioningErrorEnum errorCode = 0; + } + + /** This command is used to arm or disarm the fail-safe timer. */ + command access(invoke: administer) ArmFailSafe(ArmFailSafeRequest): ArmFailSafeResponse = 0; + /** This command is used to set the regulatory configuration for the device. */ + command access(invoke: administer) SetRegulatoryConfig(SetRegulatoryConfigRequest): SetRegulatoryConfigResponse = 2; + /** This command is used to indicate that the commissioning process is complete. */ + fabric command access(invoke: administer) CommissioningComplete(): CommissioningCompleteResponse = 4; + /** This command is used to set the user acknowledgements received in the Enhanced Setup Flow Terms & Conditions into the node. */ + command access(invoke: administer) SetTCAcknowledgements(SetTCAcknowledgementsRequest): SetTCAcknowledgementsResponse = 6; +} + +/** Functionality to configure, enable, disable network credentials and access on a Matter device. */ +cluster NetworkCommissioning = 49 { + revision 2; + + enum NetworkCommissioningStatusEnum : enum8 { + kSuccess = 0; + kOutOfRange = 1; + kBoundsExceeded = 2; + kNetworkIDNotFound = 3; + kDuplicateNetworkID = 4; + kNetworkNotFound = 5; + kRegulatoryError = 6; + kAuthFailure = 7; + kUnsupportedSecurity = 8; + kOtherConnectionFailure = 9; + kIPV6Failed = 10; + kIPBindFailed = 11; + kUnknownError = 12; + } + + enum WiFiBandEnum : enum8 { + k2G4 = 0 [spec_name = "2G4"]; + k3G65 = 1 [spec_name = "3G65"]; + k5G = 2 [spec_name = "5G"]; + k6G = 3 [spec_name = "6G"]; + k60G = 4 [spec_name = "60G"]; + k1G = 5 [spec_name = "1G"]; + } + + bitmap Feature : bitmap32 { + kWiFiNetworkInterface = 0x1; + kThreadNetworkInterface = 0x2; + kEthernetNetworkInterface = 0x4; + kPerDeviceCredentials = 0x8; + } + + bitmap ThreadCapabilitiesBitmap : bitmap16 { + kIsBorderRouterCapable = 0x1; + kIsRouterCapable = 0x2; + kIsSleepyEndDeviceCapable = 0x4; + kIsFullThreadDevice = 0x8; + kIsSynchronizedSleepyEndDeviceCapable = 0x10; + } + + bitmap WiFiSecurityBitmap : bitmap8 { + kUnencrypted = 0x1; + kWEP = 0x2 [spec_name = "WEP"]; + kWPAPersonal = 0x4 [spec_name = "WPA-PERSONAL"]; + kWPA2Personal = 0x8 [spec_name = "WPA2-PERSONAL"]; + kWPA3Personal = 0x10 [spec_name = "WPA3-PERSONAL"]; + kWPA3MatterPDC = 0x20 [spec_name = "WPA3-Matter-PDC"]; + } + + struct NetworkInfoStruct { + octet_string<32> networkID = 0; + boolean connected = 1; + optional nullable octet_string<20> networkIdentifier = 2; + optional nullable octet_string<20> clientIdentifier = 3; + } + + struct ThreadInterfaceScanResultStruct { + int16u panId = 0; + int64u extendedPanId = 1; + char_string<16> networkName = 2; + int16u channel = 3; + int8u version = 4; + octet_string<8> extendedAddress = 5; + int8s rssi = 6; + int8u lqi = 7; + } + + struct WiFiInterfaceScanResultStruct { + WiFiSecurityBitmap security = 0; + octet_string<32> ssid = 1; + octet_string<6> bssid = 2; + int16u channel = 3; + WiFiBandEnum wiFiBand = 4; + int8s rssi = 5; + } + + readonly attribute access(read: administer) int8u maxNetworks = 0; + readonly attribute access(read: administer) NetworkInfoStruct networks[] = 1; + readonly attribute optional int8u scanMaxTimeSeconds = 2; + readonly attribute optional int8u connectMaxTimeSeconds = 3; + attribute access(write: administer) boolean interfaceEnabled = 4; + readonly attribute access(read: administer) nullable NetworkCommissioningStatusEnum lastNetworkingStatus = 5; + readonly attribute access(read: administer) nullable octet_string<32> lastNetworkID = 6; + readonly attribute access(read: administer) nullable int32s lastConnectErrorValue = 7; + provisional readonly attribute optional WiFiBandEnum supportedWiFiBands[] = 8; + provisional readonly attribute optional ThreadCapabilitiesBitmap supportedThreadFeatures = 9; + provisional readonly attribute optional int16u threadVersion = 10; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct ScanNetworksRequest { + optional nullable octet_string<32> ssid = 0; + optional int64u breadcrumb = 1; + } + + response struct ScanNetworksResponse = 1 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + optional WiFiInterfaceScanResultStruct wiFiScanResults[] = 2; + optional ThreadInterfaceScanResultStruct threadScanResults[] = 3; + } + + request struct AddOrUpdateWiFiNetworkRequest { + octet_string<32> ssid = 0; + octet_string<64> credentials = 1; + optional int64u breadcrumb = 2; + optional octet_string<140> networkIdentity = 3; + optional octet_string<20> clientIdentifier = 4; + optional octet_string<32> possessionNonce = 5; + } + + request struct AddOrUpdateThreadNetworkRequest { + octet_string<254> operationalDataset = 0; + optional int64u breadcrumb = 1; + } + + request struct RemoveNetworkRequest { + octet_string<32> networkID = 0; + optional int64u breadcrumb = 1; + } + + response struct NetworkConfigResponse = 5 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string<512> debugText = 1; + optional int8u networkIndex = 2; + optional octet_string<140> clientIdentity = 3; + optional octet_string<64> possessionSignature = 4; + } + + request struct ConnectNetworkRequest { + octet_string<32> networkID = 0; + optional int64u breadcrumb = 1; + } + + response struct ConnectNetworkResponse = 7 { + NetworkCommissioningStatusEnum networkingStatus = 0; + optional char_string debugText = 1; + nullable int32s errorValue = 2; + } + + request struct ReorderNetworkRequest { + octet_string<32> networkID = 0; + int8u networkIndex = 1; + optional int64u breadcrumb = 2; + } + + request struct QueryIdentityRequest { + octet_string<20> keyIdentifier = 0; + optional octet_string<32> possessionNonce = 1; + } + + response struct QueryIdentityResponse = 10 { + octet_string<140> identity = 0; + optional octet_string<64> possessionSignature = 1; + } + + /** Detemine the set of networks the device sees as available. */ + command access(invoke: administer) ScanNetworks(ScanNetworksRequest): ScanNetworksResponse = 0; + /** Add or update the credentials for a given Wi-Fi network. */ + command access(invoke: administer) AddOrUpdateWiFiNetwork(AddOrUpdateWiFiNetworkRequest): NetworkConfigResponse = 2; + /** Add or update the credentials for a given Thread network. */ + command access(invoke: administer) AddOrUpdateThreadNetwork(AddOrUpdateThreadNetworkRequest): NetworkConfigResponse = 3; + /** Remove the definition of a given network (including its credentials). */ + command access(invoke: administer) RemoveNetwork(RemoveNetworkRequest): NetworkConfigResponse = 4; + /** Connect to the specified network, using previously-defined credentials. */ + command access(invoke: administer) ConnectNetwork(ConnectNetworkRequest): ConnectNetworkResponse = 6; + /** Modify the order in which networks will be presented in the Networks attribute. */ + command access(invoke: administer) ReorderNetwork(ReorderNetworkRequest): NetworkConfigResponse = 8; + /** Retrieve details about and optionally proof of possession of a network client identity. */ + command access(invoke: administer) QueryIdentity(QueryIdentityRequest): QueryIdentityResponse = 9; +} + +/** The General Diagnostics Cluster, along with other diagnostics clusters, provide 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. */ +cluster GeneralDiagnostics = 51 { + revision 2; + + enum BootReasonEnum : enum8 { + kUnspecified = 0; + kPowerOnReboot = 1; + kBrownOutReset = 2; + kSoftwareWatchdogReset = 3; + kHardwareWatchdogReset = 4; + kSoftwareUpdateCompleted = 5; + kSoftwareReset = 6; + } + + enum HardwareFaultEnum : enum8 { + kUnspecified = 0; + kRadio = 1; + kSensor = 2; + kResettableOverTemp = 3; + kNonResettableOverTemp = 4; + kPowerSource = 5; + kVisualDisplayFault = 6; + kAudioOutputFault = 7; + kUserInterfaceFault = 8; + kNonVolatileMemoryError = 9; + kTamperDetected = 10; + } + + enum InterfaceTypeEnum : enum8 { + kUnspecified = 0; + kWiFi = 1; + kEthernet = 2; + kCellular = 3; + kThread = 4; + } + + enum NetworkFaultEnum : enum8 { + kUnspecified = 0; + kHardwareFailure = 1; + kNetworkJammed = 2; + kConnectionFailed = 3; + } + + enum RadioFaultEnum : enum8 { + kUnspecified = 0; + kWiFiFault = 1; + kCellularFault = 2; + kThreadFault = 3; + kNFCFault = 4; + kBLEFault = 5; + kEthernetFault = 6; + } + + bitmap Feature : bitmap32 { + kDataModelTest = 0x1; + } + + struct NetworkInterface { + char_string<32> name = 0; + boolean isOperational = 1; + nullable boolean offPremiseServicesReachableIPv4 = 2; + nullable boolean offPremiseServicesReachableIPv6 = 3; + octet_string<8> hardwareAddress = 4; + octet_string IPv4Addresses[] = 5; + octet_string IPv6Addresses[] = 6; + InterfaceTypeEnum type = 7; + } + + critical event HardwareFaultChange = 0 { + HardwareFaultEnum current[] = 0; + HardwareFaultEnum previous[] = 1; + } + + critical event RadioFaultChange = 1 { + RadioFaultEnum current[] = 0; + RadioFaultEnum previous[] = 1; + } + + critical event NetworkFaultChange = 2 { + NetworkFaultEnum current[] = 0; + NetworkFaultEnum previous[] = 1; + } + + critical event BootReason = 3 { + BootReasonEnum bootReason = 0; + } + + readonly attribute NetworkInterface networkInterfaces[] = 0; + readonly attribute int16u rebootCount = 1; + readonly attribute optional int64u upTime = 2; + readonly attribute optional int32u totalOperationalHours = 3; + readonly attribute optional BootReasonEnum bootReason = 4; + readonly attribute optional HardwareFaultEnum activeHardwareFaults[] = 5; + readonly attribute optional RadioFaultEnum activeRadioFaults[] = 6; + readonly attribute optional NetworkFaultEnum activeNetworkFaults[] = 7; + readonly attribute boolean testEventTriggersEnabled = 8; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct TestEventTriggerRequest { + octet_string<16> enableKey = 0; + int64u eventTrigger = 1; + } + + response struct TimeSnapshotResponse = 2 { + systime_ms systemTimeMs = 0; + nullable posix_ms posixTimeMs = 1; + } + + request struct PayloadTestRequestRequest { + octet_string<16> enableKey = 0; + int8u value = 1; + int16u count = 2; + } + + response struct PayloadTestResponse = 4 { + octet_string payload = 0; + } + + /** Provide a means for certification tests to trigger some test-plan-specific events */ + command access(invoke: manage) TestEventTrigger(TestEventTriggerRequest): DefaultSuccess = 0; + /** Take a snapshot of system time and epoch time. */ + command TimeSnapshot(): TimeSnapshotResponse = 1; + /** Request a variable length payload response. */ + command access(invoke: manage) PayloadTestRequest(PayloadTestRequestRequest): PayloadTestResponse = 3; +} + +/** 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 */ +cluster ThreadNetworkDiagnostics = 53 { + revision 3; + + enum ConnectionStatusEnum : enum8 { + kConnected = 0; + kNotConnected = 1; + } + + enum NetworkFaultEnum : enum8 { + kUnspecified = 0; + kLinkDown = 1; + kHardwareFailure = 2; + kNetworkJammed = 3; + } + + enum RoutingRoleEnum : enum8 { + kUnspecified = 0; + kUnassigned = 1; + kSleepyEndDevice = 2; + kEndDevice = 3; + kREED = 4 [spec_name = "REED"]; + kRouter = 5; + kLeader = 6; + } + + bitmap Feature : bitmap32 { + kPacketCounts = 0x1; + kErrorCounts = 0x2; + kMLECounts = 0x4; + kMACCounts = 0x8; + } + + struct NeighborTableStruct { + int64u extAddress = 0; + int32u age = 1; + int16u rloc16 = 2; + int32u linkFrameCounter = 3; + int32u mleFrameCounter = 4; + int8u lqi = 5; + nullable int8s averageRssi = 6; + nullable int8s lastRssi = 7; + int8u frameErrorRate = 8; + int8u messageErrorRate = 9; + boolean rxOnWhenIdle = 10; + boolean fullThreadDevice = 11; + boolean fullNetworkData = 12; + boolean isChild = 13; + } + + struct OperationalDatasetComponents { + boolean activeTimestampPresent = 0; + boolean pendingTimestampPresent = 1; + boolean masterKeyPresent = 2; + boolean networkNamePresent = 3; + boolean extendedPanIdPresent = 4; + boolean meshLocalPrefixPresent = 5; + boolean delayPresent = 6; + boolean panIdPresent = 7; + boolean channelPresent = 8; + boolean pskcPresent = 9; + boolean securityPolicyPresent = 10; + boolean channelMaskPresent = 11; + } + + struct RouteTableStruct { + int64u extAddress = 0; + int16u rloc16 = 1; + int8u routerId = 2; + int8u nextHop = 3; + int8u pathCost = 4; + int8u LQIIn = 5; + int8u LQIOut = 6; + int8u age = 7; + boolean allocated = 8; + boolean linkEstablished = 9; + } + + struct SecurityPolicy { + int16u rotationTime = 0; + int16u flags = 1; + } + + info event ConnectionStatus = 0 { + ConnectionStatusEnum connectionStatus = 0; + } + + info event NetworkFaultChange = 1 { + NetworkFaultEnum current[] = 0; + NetworkFaultEnum previous[] = 1; + } + + readonly attribute nullable int16u channel = 0; + readonly attribute nullable RoutingRoleEnum 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 optional int64u overrunCount = 6; + readonly attribute NeighborTableStruct neighborTable[] = 7; + readonly attribute RouteTableStruct routeTable[] = 8; + readonly attribute nullable int32u partitionId = 9; + readonly attribute nullable int16u weighting = 10; + readonly attribute nullable int16u dataVersion = 11; + readonly attribute nullable int16u stableDataVersion = 12; + readonly attribute nullable int8u leaderRouterId = 13; + readonly attribute optional int16u detachedRoleCount = 14; + readonly attribute optional int16u childRoleCount = 15; + readonly attribute optional int16u routerRoleCount = 16; + readonly attribute optional int16u leaderRoleCount = 17; + readonly attribute optional int16u attachAttemptCount = 18; + readonly attribute optional int16u partitionIdChangeCount = 19; + readonly attribute optional int16u betterPartitionAttachAttemptCount = 20; + readonly attribute optional int16u parentChangeCount = 21; + readonly attribute optional int32u txTotalCount = 22; + readonly attribute optional int32u txUnicastCount = 23; + readonly attribute optional int32u txBroadcastCount = 24; + readonly attribute optional int32u txAckRequestedCount = 25; + readonly attribute optional int32u txAckedCount = 26; + readonly attribute optional int32u txNoAckRequestedCount = 27; + readonly attribute optional int32u txDataCount = 28; + readonly attribute optional int32u txDataPollCount = 29; + readonly attribute optional int32u txBeaconCount = 30; + readonly attribute optional int32u txBeaconRequestCount = 31; + readonly attribute optional int32u txOtherCount = 32; + readonly attribute optional int32u txRetryCount = 33; + readonly attribute optional int32u txDirectMaxRetryExpiryCount = 34; + readonly attribute optional int32u txIndirectMaxRetryExpiryCount = 35; + readonly attribute optional int32u txErrCcaCount = 36; + readonly attribute optional int32u txErrAbortCount = 37; + readonly attribute optional int32u txErrBusyChannelCount = 38; + readonly attribute optional int32u rxTotalCount = 39; + readonly attribute optional int32u rxUnicastCount = 40; + readonly attribute optional int32u rxBroadcastCount = 41; + readonly attribute optional int32u rxDataCount = 42; + readonly attribute optional int32u rxDataPollCount = 43; + readonly attribute optional int32u rxBeaconCount = 44; + readonly attribute optional int32u rxBeaconRequestCount = 45; + readonly attribute optional int32u rxOtherCount = 46; + readonly attribute optional int32u rxAddressFilteredCount = 47; + readonly attribute optional int32u rxDestAddrFilteredCount = 48; + readonly attribute optional int32u rxDuplicatedCount = 49; + readonly attribute optional int32u rxErrNoFrameCount = 50; + readonly attribute optional int32u rxErrUnknownNeighborCount = 51; + readonly attribute optional int32u rxErrInvalidSrcAddrCount = 52; + readonly attribute optional int32u rxErrSecCount = 53; + readonly attribute optional int32u rxErrFcsCount = 54; + readonly attribute optional int32u rxErrOtherCount = 55; + readonly attribute optional nullable int64u activeTimestamp = 56; + readonly attribute optional nullable int64u pendingTimestamp = 57; + readonly attribute optional nullable int32u delay = 58; + readonly attribute nullable SecurityPolicy securityPolicy = 59; + readonly attribute nullable octet_string<4> channelPage0Mask = 60; + readonly attribute nullable OperationalDatasetComponents operationalDatasetComponents = 61; + readonly attribute NetworkFaultEnum activeNetworkFaultsList[] = 62; + provisional readonly attribute nullable int64u extAddress = 63; + provisional readonly attribute nullable int16u rloc16 = 64; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + /** Reception of this command SHALL reset the following attributes to 0: */ + command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; +} + +/** The Wi-Fi 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. */ +cluster WiFiNetworkDiagnostics = 54 { + revision 1; + + enum AssociationFailureCauseEnum : enum8 { + kUnknown = 0; + kAssociationFailed = 1; + kAuthenticationFailed = 2; + kSsidNotFound = 3; + } + + enum ConnectionStatusEnum : enum8 { + kConnected = 0; + kNotConnected = 1; + } + + enum SecurityTypeEnum : enum8 { + kUnspecified = 0; + kNone = 1; + kWEP = 2 [spec_name = "WEP"]; + kWPA = 3 [spec_name = "WPA"]; + kWPA2 = 4 [spec_name = "WPA2"]; + kWPA3 = 5 [spec_name = "WPA3"]; + } + + enum WiFiVersionEnum : enum8 { + kA = 0; + kB = 1; + kG = 2; + kN = 3; + kAc = 4; + kAx = 5; + kAh = 6; + } + + bitmap Feature : bitmap32 { + kPacketCounts = 0x1; + kErrorCounts = 0x2; + } + + info event Disconnection = 0 { + int16u reasonCode = 0; + } + + info event AssociationFailure = 1 { + AssociationFailureCauseEnum associationFailureCause = 0; + int16u status = 1; + } + + info event ConnectionStatus = 2 { + ConnectionStatusEnum connectionStatus = 0; + } + + readonly attribute nullable octet_string<6> bssid = 0; + readonly attribute nullable SecurityTypeEnum securityType = 1; + readonly attribute nullable WiFiVersionEnum wiFiVersion = 2; + readonly attribute nullable int16u channelNumber = 3; + readonly attribute nullable int8s rssi = 4; + readonly attribute optional nullable int32u beaconLostCount = 5; + readonly attribute optional nullable int32u beaconRxCount = 6; + readonly attribute optional nullable int32u packetMulticastRxCount = 7; + readonly attribute optional nullable int32u packetMulticastTxCount = 8; + readonly attribute optional nullable int32u packetUnicastRxCount = 9; + readonly attribute optional nullable int32u packetUnicastTxCount = 10; + readonly attribute optional nullable int64u currentMaxRate = 11; + readonly attribute optional nullable int64u overrunCount = 12; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + /** This command is used to reset the count attributes. */ + command ResetCounts(): DefaultSuccess = 0; +} + +/** The Ethernet 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. */ +cluster EthernetNetworkDiagnostics = 55 { + revision 1; + + enum PHYRateEnum : enum8 { + kRate10M = 0; + kRate100M = 1; + kRate1G = 2; + kRate25G = 3 [spec_name = "Rate2_5G"]; + kRate5G = 4; + kRate10G = 5; + kRate40G = 6; + kRate100G = 7; + kRate200G = 8; + kRate400G = 9; + } + + bitmap Feature : bitmap32 { + kPacketCounts = 0x1; + kErrorCounts = 0x2; + } + + readonly attribute optional nullable PHYRateEnum PHYRate = 0; + readonly attribute optional nullable boolean fullDuplex = 1; + readonly attribute optional int64u packetRxCount = 2; + readonly attribute optional int64u packetTxCount = 3; + readonly attribute optional int64u txErrCount = 4; + readonly attribute optional int64u collisionCount = 5; + readonly attribute optional int64u overrunCount = 6; + readonly attribute optional nullable boolean carrierDetect = 7; + readonly attribute optional int64u timeSinceReset = 8; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + /** This command is used to reset the count attributes. */ + command access(invoke: manage) ResetCounts(): DefaultSuccess = 0; +} + +/** Commands to trigger a Node to allow a new Administrator to commission it. */ +cluster AdministratorCommissioning = 60 { + revision 1; // NOTE: Default/not specifically set + + enum CommissioningWindowStatusEnum : enum8 { + kWindowNotOpen = 0; + kEnhancedWindowOpen = 1; + kBasicWindowOpen = 2; + } + + enum StatusCode : enum8 { + kBusy = 2; + kPAKEParameterError = 3; + kWindowNotOpen = 4; + } + + bitmap Feature : bitmap32 { + kBasic = 0x1; + } + + readonly attribute CommissioningWindowStatusEnum windowStatus = 0; + readonly attribute nullable fabric_idx adminFabricIndex = 1; + readonly attribute nullable vendor_id adminVendorId = 2; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct OpenCommissioningWindowRequest { + int16u commissioningTimeout = 0; + octet_string PAKEPasscodeVerifier = 1; + int16u discriminator = 2; + int32u iterations = 3; + octet_string<32> salt = 4; + } + + request struct OpenBasicCommissioningWindowRequest { + int16u commissioningTimeout = 0; + } + + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using enhanced commissioning method. */ + timed command access(invoke: administer) OpenCommissioningWindow(OpenCommissioningWindowRequest): DefaultSuccess = 0; + /** This command is used by a current Administrator to instruct a Node to go into commissioning mode using basic commissioning method, if the node supports it. */ + timed command access(invoke: administer) OpenBasicCommissioningWindow(OpenBasicCommissioningWindowRequest): DefaultSuccess = 1; + /** This command is used by a current Administrator to instruct a Node to revoke any active Open Commissioning Window or Open Basic Commissioning Window command. */ + timed command access(invoke: administer) RevokeCommissioning(): DefaultSuccess = 2; +} + +/** This cluster is used to add or remove Operational Credentials on a Commissionee or Node, as well as manage the associated Fabrics. */ +cluster OperationalCredentials = 62 { + revision 2; + + enum CertificateChainTypeEnum : enum8 { + kDACCertificate = 1; + kPAICertificate = 2; + } + + enum NodeOperationalCertStatusEnum : enum8 { + kOK = 0 [spec_name = "OK"]; + kInvalidPublicKey = 1; + kInvalidNodeOpId = 2; + kInvalidNOC = 3; + kMissingCsr = 4; + kTableFull = 5; + kInvalidAdminSubject = 6; + kFabricConflict = 9; + kLabelConflict = 10; + kInvalidFabricIndex = 11; + } + + fabric_scoped struct FabricDescriptorStruct { + octet_string<65> rootPublicKey = 1; + vendor_id vendorID = 2; + fabric_id fabricID = 3; + node_id nodeID = 4; + char_string<32> label = 5; + optional octet_string<85> VIDVerificationStatement = 6; + fabric_idx fabricIndex = 254; + } + + fabric_scoped struct NOCStruct { + octet_string<400> noc = 1; + nullable octet_string<400> icac = 2; + optional octet_string<400> vvsc = 3; + fabric_idx fabricIndex = 254; + } + + readonly attribute access(read: administer) NOCStruct NOCs[] = 0; + readonly attribute FabricDescriptorStruct fabrics[] = 1; + readonly attribute int8u supportedFabrics = 2; + readonly attribute int8u commissionedFabrics = 3; + readonly attribute octet_string trustedRootCertificates[] = 4; + readonly attribute int8u currentFabricIndex = 5; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct AttestationRequestRequest { + octet_string<32> attestationNonce = 0; + } + + response struct AttestationResponse = 1 { + octet_string attestationElements = 0; + octet_string<64> attestationSignature = 1; + } + + request struct CertificateChainRequestRequest { + CertificateChainTypeEnum certificateType = 0; + } + + response struct CertificateChainResponse = 3 { + octet_string<600> certificate = 0; + } + + request struct CSRRequestRequest { + octet_string<32> CSRNonce = 0; + optional boolean isForUpdateNOC = 1; + } + + response struct CSRResponse = 5 { + octet_string NOCSRElements = 0; + octet_string<64> attestationSignature = 1; + } + + request struct AddNOCRequest { + octet_string<400> NOCValue = 0; + optional octet_string<400> ICACValue = 1; + octet_string<16> IPKValue = 2; + int64u caseAdminSubject = 3; + vendor_id adminVendorId = 4; + } + + request struct UpdateNOCRequest { + octet_string<400> NOCValue = 0; + optional octet_string<400> ICACValue = 1; + } + + response struct NOCResponse = 8 { + NodeOperationalCertStatusEnum statusCode = 0; + optional fabric_idx fabricIndex = 1; + optional char_string<128> debugText = 2; + } + + request struct UpdateFabricLabelRequest { + char_string<32> label = 0; + } + + request struct RemoveFabricRequest { + fabric_idx fabricIndex = 0; + } + + request struct AddTrustedRootCertificateRequest { + octet_string<400> rootCACertificate = 0; + } + + request struct SetVIDVerificationStatementRequest { + optional vendor_id vendorID = 0; + optional octet_string<85> VIDVerificationStatement = 1; + optional octet_string<400> vvsc = 2; + } + + request struct SignVIDVerificationRequestRequest { + fabric_idx fabricIndex = 0; + octet_string<32> clientChallenge = 1; + } + + response struct SignVIDVerificationResponse = 14 { + fabric_idx fabricIndex = 0; + int8u fabricBindingVersion = 1; + octet_string signature = 2; + } + + /** Sender is requesting attestation information from the receiver. */ + command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0; + /** Sender is requesting a device attestation certificate from the receiver. */ + command access(invoke: administer) CertificateChainRequest(CertificateChainRequestRequest): CertificateChainResponse = 2; + /** Sender is requesting a certificate signing request (CSR) from the receiver. */ + command access(invoke: administer) CSRRequest(CSRRequestRequest): CSRResponse = 4; + /** Sender is requesting to add the new node operational certificates. */ + command access(invoke: administer) AddNOC(AddNOCRequest): NOCResponse = 6; + /** This command SHALL replace the NOC and optional associated ICAC (if present) scoped under the accessing fabric upon successful validation of all arguments and preconditions. */ + fabric command access(invoke: administer) UpdateNOC(UpdateNOCRequest): NOCResponse = 7; + /** This command SHALL be used by an Administrative Node to set the user-visible Label field for a given Fabric, as reflected by entries in the Fabrics attribute. */ + fabric command access(invoke: administer) UpdateFabricLabel(UpdateFabricLabelRequest): NOCResponse = 9; + /** This command is used by Administrative Nodes to remove a given fabric index and delete all associated fabric-scoped data. */ + command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10; + /** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */ + command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11; + /** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */ + fabric command access(invoke: administer) SetVIDVerificationStatement(SetVIDVerificationStatementRequest): DefaultSuccess = 12; + /** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */ + command access(invoke: administer) SignVIDVerificationRequest(SignVIDVerificationRequestRequest): SignVIDVerificationResponse = 13; +} + +/** The Group Key Management Cluster is the mechanism by which group keys are managed. */ +cluster GroupKeyManagement = 63 { + revision 1; // NOTE: Default/not specifically set + + enum GroupKeySecurityPolicyEnum : enum8 { + kTrustFirst = 0; + kCacheAndSync = 1; + } + + bitmap Feature : bitmap32 { + kCacheAndSync = 0x1; + } + + fabric_scoped struct GroupInfoMapStruct { + group_id groupId = 1; + endpoint_no endpoints[] = 2; + optional char_string<16> groupName = 3; + fabric_idx fabricIndex = 254; + } + + fabric_scoped struct GroupKeyMapStruct { + group_id groupId = 1; + int16u groupKeySetID = 2; + fabric_idx fabricIndex = 254; + } + + struct GroupKeySetStruct { + int16u groupKeySetID = 0; + GroupKeySecurityPolicyEnum groupKeySecurityPolicy = 1; + nullable octet_string<16> epochKey0 = 2; + nullable epoch_us epochStartTime0 = 3; + nullable octet_string<16> epochKey1 = 4; + nullable epoch_us epochStartTime1 = 5; + nullable octet_string<16> epochKey2 = 6; + nullable epoch_us epochStartTime2 = 7; + } + + attribute access(write: manage) GroupKeyMapStruct groupKeyMap[] = 0; + readonly attribute GroupInfoMapStruct groupTable[] = 1; + readonly attribute int16u maxGroupsPerFabric = 2; + readonly attribute int16u maxGroupKeysPerFabric = 3; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct KeySetWriteRequest { + GroupKeySetStruct groupKeySet = 0; + } + + request struct KeySetReadRequest { + int16u groupKeySetID = 0; + } + + response struct KeySetReadResponse = 2 { + GroupKeySetStruct groupKeySet = 0; + } + + request struct KeySetRemoveRequest { + int16u groupKeySetID = 0; + } + + response struct KeySetReadAllIndicesResponse = 5 { + int16u groupKeySetIDs[] = 0; + } + + /** Write a new set of keys for the given key set id. */ + fabric command access(invoke: administer) KeySetWrite(KeySetWriteRequest): DefaultSuccess = 0; + /** Read the keys for a given key set id. */ + fabric command access(invoke: administer) KeySetRead(KeySetReadRequest): KeySetReadResponse = 1; + /** Revoke a Root Key from a Group */ + fabric command access(invoke: administer) KeySetRemove(KeySetRemoveRequest): DefaultSuccess = 3; + /** Return the list of Group Key Sets associated with the accessing fabric */ + fabric command access(invoke: administer) KeySetReadAllIndices(): KeySetReadAllIndicesResponse = 4; +} + +/** Functionality to retrieve operational information about a managed Wi-Fi network. */ +cluster WiFiNetworkManagement = 1105 { + revision 1; + + readonly attribute nullable octet_string<32> ssid = 0; + readonly attribute access(read: manage) nullable int64u passphraseSurrogate = 1; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + response struct NetworkPassphraseResponse = 1 { + octet_string<64> passphrase = 0; + } + + /** Request the current WPA-Personal passphrase or PSK associated with the managed Wi-Fi network. */ + command access(invoke: manage) NetworkPassphraseRequest(): NetworkPassphraseResponse = 0; +} + +/** Manage the Thread network of Thread Border Router */ +cluster ThreadBorderRouterManagement = 1106 { + revision 1; + + bitmap Feature : bitmap32 { + kPANChange = 0x1; + } + + readonly attribute char_string<63> borderRouterName = 0; + readonly attribute octet_string<16> borderAgentID = 1; + readonly attribute int16u threadVersion = 2; + readonly attribute boolean interfaceEnabled = 3; + readonly attribute nullable int64u activeDatasetTimestamp = 4; + readonly attribute nullable int64u pendingDatasetTimestamp = 5; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + response struct DatasetResponse = 2 { + octet_string<254> dataset = 0; + } + + request struct SetActiveDatasetRequestRequest { + octet_string<254> activeDataset = 0; + optional int64u breadcrumb = 1; + } + + request struct SetPendingDatasetRequestRequest { + octet_string<254> pendingDataset = 0; + } + + /** This command SHALL be used to request the active operational dataset of the Thread network to which the border router is connected. */ + command access(invoke: manage) GetActiveDatasetRequest(): DatasetResponse = 0; + /** This command SHALL be used to request the pending dataset of the Thread network to which the border router is connected. */ + command access(invoke: manage) GetPendingDatasetRequest(): DatasetResponse = 1; + /** This command SHALL be used to set the active Dataset of the Thread network to which the Border Router is connected, when there is no active dataset already. */ + timed command access(invoke: manage) SetActiveDatasetRequest(SetActiveDatasetRequestRequest): DefaultSuccess = 3; + /** This command SHALL be used to set or update the pending Dataset of the Thread network to which the Border Router is connected, if the Border Router supports PANChange Feature. */ + timed command access(invoke: manage) SetPendingDatasetRequest(SetPendingDatasetRequestRequest): DefaultSuccess = 4; +} + +/** Manages the names and credentials of Thread networks visible to the user. */ +cluster ThreadNetworkDirectory = 1107 { + revision 1; + + struct ThreadNetworkStruct { + octet_string<8> extendedPanID = 0; + char_string<16> networkName = 1; + int16u channel = 2; + int64u activeTimestamp = 3; + } + + attribute access(write: manage) nullable octet_string<8> preferredExtendedPanID = 0; + readonly attribute ThreadNetworkStruct threadNetworks[] = 1; + readonly attribute int8u threadNetworkTableSize = 2; + readonly attribute command_id generatedCommandList[] = 65528; + readonly attribute command_id acceptedCommandList[] = 65529; + readonly attribute attrib_id attributeList[] = 65531; + readonly attribute bitmap32 featureMap = 65532; + readonly attribute int16u clusterRevision = 65533; + + request struct AddNetworkRequest { + octet_string<254> operationalDataset = 0; + } + + request struct RemoveNetworkRequest { + octet_string<8> extendedPanID = 0; + } + + request struct GetOperationalDatasetRequest { + octet_string<8> extendedPanID = 0; + } + + response struct OperationalDatasetResponse = 3 { + octet_string<254> operationalDataset = 0; + } + + /** Adds an entry to the ThreadNetworks attribute with the specified Thread Operational Dataset. */ + timed command access(invoke: manage) AddNetwork(AddNetworkRequest): DefaultSuccess = 0; + /** Removes the network with the given Extended PAN ID from the ThreadNetworks attribute. */ + timed command access(invoke: manage) RemoveNetwork(RemoveNetworkRequest): DefaultSuccess = 1; + /** Retrieves the Thread Operational Dataset with the given Extended PAN ID. */ + command access(invoke: manage) GetOperationalDataset(GetOperationalDatasetRequest): OperationalDatasetResponse = 2; +} + +endpoint 0 { + device type ma_rootdevice = 22, version 1; + + binding cluster OtaSoftwareUpdateRequestor; + + server cluster Descriptor { + callback attribute deviceTypeList; + callback attribute serverList; + callback attribute clientList; + callback attribute partsList; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + callback attribute clusterRevision; + } + + server cluster Binding { + callback attribute binding; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster AccessControl { + callback attribute acl; + callback attribute extension; + callback attribute subjectsPerAccessControlEntry; + callback attribute targetsPerAccessControlEntry; + callback attribute accessControlEntriesPerFabric; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + callback attribute clusterRevision; + } + + server cluster BasicInformation { + callback attribute dataModelRevision; + callback attribute vendorName; + callback attribute vendorID; + callback attribute productName; + callback attribute productID; + ram attribute nodeLabel; + callback attribute location; + callback attribute hardwareVersion; + callback attribute hardwareVersionString; + callback attribute softwareVersion; + callback attribute softwareVersionString; + callback attribute uniqueID; + callback attribute capabilityMinima; + callback attribute specificationVersion; + callback attribute maxPathsPerInvoke; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 3; + } + + server cluster LocalizationConfiguration { + ram attribute activeLocale; + callback attribute supportedLocales; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster TimeFormatLocalization { + ram attribute hourFormat; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster GeneralCommissioning { + ram attribute breadcrumb default = 0x0000000000000000; + callback attribute basicCommissioningInfo; + callback attribute regulatoryConfig; + callback attribute locationCapability; + callback attribute supportsConcurrentConnection; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + + handle command ArmFailSafe; + handle command ArmFailSafeResponse; + handle command SetRegulatoryConfig; + handle command SetRegulatoryConfigResponse; + handle command CommissioningComplete; + handle command CommissioningCompleteResponse; + } + + server cluster NetworkCommissioning { + callback attribute maxNetworks; + callback attribute networks; + callback attribute interfaceEnabled; + callback attribute lastNetworkingStatus; + callback attribute lastNetworkID; + callback attribute lastConnectErrorValue; + callback attribute supportedThreadFeatures; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + callback attribute clusterRevision; + } + + server cluster GeneralDiagnostics { + callback attribute networkInterfaces; + callback attribute rebootCount; + callback attribute upTime; + ram attribute testEventTriggersEnabled; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + callback attribute clusterRevision; + + handle command TestEventTrigger; + handle command TimeSnapshot; + handle command TimeSnapshotResponse; + } + + server cluster ThreadNetworkDiagnostics { + callback attribute channel; + callback attribute routingRole; + callback attribute networkName; + callback attribute panId; + callback attribute extendedPanId; + callback attribute meshLocalPrefix; + callback attribute neighborTable; + callback attribute routeTable; + callback attribute partitionId; + callback attribute weighting; + callback attribute dataVersion; + callback attribute stableDataVersion; + callback attribute leaderRouterId; + callback attribute securityPolicy; + callback attribute channelPage0Mask; + callback attribute operationalDatasetComponents; + callback attribute activeNetworkFaultsList; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 2; + } + + server cluster WiFiNetworkDiagnostics { + callback attribute bssid; + callback attribute securityType; + callback attribute wiFiVersion; + callback attribute channelNumber; + callback attribute rssi; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster EthernetNetworkDiagnostics { + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster AdministratorCommissioning { + callback attribute windowStatus; + callback attribute adminFabricIndex; + callback attribute adminVendorId; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + callback attribute clusterRevision; + + handle command OpenCommissioningWindow; + handle command RevokeCommissioning; + } + + server cluster OperationalCredentials { + callback attribute NOCs; + callback attribute fabrics; + callback attribute supportedFabrics; + callback attribute commissionedFabrics; + callback attribute trustedRootCertificates; + callback attribute currentFabricIndex; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + + handle command AttestationRequest; + handle command AttestationResponse; + handle command CertificateChainRequest; + handle command CertificateChainResponse; + handle command CSRRequest; + handle command CSRResponse; + handle command AddNOC; + handle command UpdateNOC; + handle command NOCResponse; + handle command UpdateFabricLabel; + handle command RemoveFabric; + handle command AddTrustedRootCertificate; + } + + server cluster GroupKeyManagement { + callback attribute groupKeyMap; + callback attribute groupTable; + callback attribute maxGroupsPerFabric; + callback attribute maxGroupKeysPerFabric; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + callback attribute clusterRevision; + + handle command KeySetWrite; + handle command KeySetRead; + handle command KeySetReadResponse; + handle command KeySetRemove; + handle command KeySetReadAllIndices; + handle command KeySetReadAllIndicesResponse; + } +} +endpoint 1 { + device type ma_network_infrastructure_manager = 144, version 1; + + + server cluster Descriptor { + callback attribute deviceTypeList; + callback attribute serverList; + callback attribute clientList; + callback attribute partsList; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + callback attribute clusterRevision; + } + + server cluster Binding { + callback attribute binding; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster WiFiNetworkManagement { + callback attribute ssid; + callback attribute passphraseSurrogate; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + + handle command NetworkPassphraseRequest; + handle command NetworkPassphraseResponse; + } + + server cluster ThreadBorderRouterManagement { + callback attribute borderRouterName; + callback attribute borderAgentID; + callback attribute threadVersion; + callback attribute interfaceEnabled; + callback attribute activeDatasetTimestamp; + callback attribute pendingDatasetTimestamp; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + ram attribute clusterRevision default = 1; + + handle command GetActiveDatasetRequest; + handle command GetPendingDatasetRequest; + handle command DatasetResponse; + handle command SetActiveDatasetRequest; + handle command SetPendingDatasetRequest; + } + + server cluster ThreadNetworkDirectory { + callback attribute preferredExtendedPanID; + callback attribute threadNetworks; + callback attribute threadNetworkTableSize; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + + handle command AddNetwork; + handle command RemoveNetwork; + handle command GetOperationalDataset; + handle command OperationalDatasetResponse; + } +} +endpoint 2 { + device type ma_otaprovider = 20, version 1; + + + server cluster Descriptor { + callback attribute deviceTypeList; + callback attribute serverList; + callback attribute clientList; + callback attribute partsList; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + callback attribute featureMap; + callback attribute clusterRevision; + } + + server cluster Binding { + callback attribute binding; + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + } + + server cluster OtaSoftwareUpdateProvider { + callback attribute generatedCommandList; + callback attribute acceptedCommandList; + callback attribute attributeList; + ram attribute featureMap default = 0; + ram attribute clusterRevision default = 1; + + handle command QueryImage; + handle command QueryImageResponse; + handle command ApplyUpdateRequest; + handle command ApplyUpdateResponse; + handle command NotifyUpdateApplied; + } +} diff --git a/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/barton.zap b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/barton.zap new file mode 100644 index 00000000..fdae8c18 --- /dev/null +++ b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/barton.zap @@ -0,0 +1,3806 @@ +{ + "fileFormat": 2, + "featureLevel": 103, + "creator": "zap", + "keyValuePairs": [ + { + "key": "commandDiscovery", + "value": "1" + }, + { + "key": "defaultResponsePolicy", + "value": "always" + }, + { + "key": "manufacturerCodes", + "value": "0x111D" + } + ], + "package": [ + { + "pathRelativity": "relativeToZap", + "path": "zcl.json", + "type": "zcl-properties", + "category": "matter", + "version": 1, + "description": "Matter SDK ZCL data" + } + ], + "endpointTypes": [ + { + "id": 1, + "name": "Anonymous Endpoint Type", + "deviceTypeRef": { + "code": 22, + "profileId": 259, + "label": "MA-rootdevice", + "name": "MA-rootdevice", + "deviceTypeOrder": 0 + }, + "deviceTypes": [ + { + "code": 22, + "profileId": 259, + "label": "MA-rootdevice", + "name": "MA-rootdevice", + "deviceTypeOrder": 0 + } + ], + "deviceVersions": [ + 1 + ], + "deviceIdentifiers": [ + 22 + ], + "deviceTypeName": "MA-rootdevice", + "deviceTypeCode": 22, + "deviceTypeProfileId": 259, + "clusters": [ + { + "name": "Descriptor", + "code": 29, + "mfgCode": null, + "define": "DESCRIPTOR_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "DeviceTypeList", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ServerList", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClientList", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PartsList", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Binding", + "code": 30, + "mfgCode": null, + "define": "BINDING_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "Binding", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Access Control", + "code": 31, + "mfgCode": null, + "define": "ACCESS_CONTROL_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "ACL", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Extension", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Basic Information", + "code": 40, + "mfgCode": null, + "define": "BASIC_INFORMATION_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "DataModelRevision", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "VendorName", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "VendorID", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "vendor_id", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ProductName", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ProductID", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NodeLabel", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "RAM", + "singleton": 1, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Location", + "code": 6, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "HardwareVersion", + "code": 7, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "HardwareVersionString", + "code": 8, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SoftwareVersion", + "code": 9, + "mfgCode": null, + "side": "server", + "type": "int32u", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SoftwareVersionString", + "code": 10, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "UniqueID", + "code": 18, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "type": "CapabilityMinimaStruct", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SpecificationVersion", + "code": 21, + "mfgCode": null, + "side": "server", + "type": "int32u", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MaxPathsPerInvoke", + "code": 22, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 1, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 1, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 1, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "General Commissioning", + "code": 48, + "mfgCode": null, + "define": "GENERAL_COMMISSIONING_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "ArmFailSafe", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "ArmFailSafeResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "SetRegulatoryConfig", + "code": 2, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "SetRegulatoryConfigResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "CommissioningComplete", + "code": 4, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "CommissioningCompleteResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "Breadcrumb", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "int64u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000000000000000", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BasicCommissioningInfo", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "BasicCommissioningInfo", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "RegulatoryConfig", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "RegulatoryLocationTypeEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "LocationCapability", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "RegulatoryLocationTypeEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SupportsConcurrentConnection", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "2", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Network Commissioning", + "code": 49, + "mfgCode": null, + "define": "NETWORK_COMMISSIONING_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "MaxNetworks", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Networks", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "InterfaceEnabled", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "LastNetworkingStatus", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "NetworkCommissioningStatusEnum", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "LastNetworkID", + "code": 6, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "LastConnectErrorValue", + "code": 7, + "mfgCode": null, + "side": "server", + "type": "int32s", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "2", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "General Diagnostics", + "code": 51, + "mfgCode": null, + "define": "GENERAL_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "TestEventTrigger", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "TimeSnapshot", + "code": 1, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "TimeSnapshotResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "NetworkInterfaces", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "RebootCount", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "UpTime", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int64u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TestEventTriggersEnabled", + "code": 8, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Thread Network Diagnostics", + "code": 53, + "mfgCode": null, + "define": "THREAD_NETWORK_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "Channel", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "RoutingRole", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "RoutingRoleEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NetworkName", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PanId", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ExtendedPanId", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "int64u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MeshLocalPrefix", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "NeighborTable", + "code": 7, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "RouteTable", + "code": 8, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PartitionId", + "code": 9, + "mfgCode": null, + "side": "server", + "type": "int32u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Weighting", + "code": 10, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "DataVersion", + "code": 11, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "StableDataVersion", + "code": 12, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "LeaderRouterId", + "code": 13, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SecurityPolicy", + "code": 59, + "mfgCode": null, + "side": "server", + "type": "SecurityPolicy", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ChannelPage0Mask", + "code": 60, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "OperationalDatasetComponents", + "code": 61, + "mfgCode": null, + "side": "server", + "type": "OperationalDatasetComponents", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ActiveNetworkFaultsList", + "code": 62, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Wi-Fi Network Diagnostics", + "code": 54, + "mfgCode": null, + "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "BSSID", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SecurityType", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "SecurityTypeEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "WiFiVersion", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "WiFiVersionEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ChannelNumber", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "RSSI", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "int8s", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Ethernet Network Diagnostics", + "code": 55, + "mfgCode": null, + "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Administrator Commissioning", + "code": 60, + "mfgCode": null, + "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "OpenCommissioningWindow", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "RevokeCommissioning", + "code": 2, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "WindowStatus", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "CommissioningWindowStatusEnum", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AdminFabricIndex", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "fabric_idx", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AdminVendorId", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "vendor_id", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Operational Credentials", + "code": 62, + "mfgCode": null, + "define": "OPERATIONAL_CREDENTIALS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "AttestationRequest", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "AttestationResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "CertificateChainRequest", + "code": 2, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "CertificateChainResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "CSRRequest", + "code": 4, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "CSRResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "AddNOC", + "code": 6, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "UpdateNOC", + "code": 7, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "NOCResponse", + "code": 8, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "UpdateFabricLabel", + "code": 9, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "RemoveFabric", + "code": 10, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "AddTrustedRootCertificate", + "code": 11, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "NOCs", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "Fabrics", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "SupportedFabrics", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CommissionedFabrics", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TrustedRootCertificates", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CurrentFabricIndex", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Group Key Management", + "code": 63, + "mfgCode": null, + "define": "GROUP_KEY_MANAGEMENT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "KeySetWrite", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "KeySetRead", + "code": 1, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "KeySetReadResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "KeySetRemove", + "code": 3, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "KeySetReadAllIndices", + "code": 4, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "KeySetReadAllIndicesResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "GroupKeyMap", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GroupTable", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MaxGroupsPerFabric", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "MaxGroupKeysPerFabric", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + } + ] + }, + { + "id": 2, + "name": "Anonymous Endpoint Type", + "deviceTypeRef": { + "code": 144, + "profileId": 259, + "label": "MA-network-infrastructure-manager", + "name": "MA-network-infrastructure-manager", + "deviceTypeOrder": 0 + }, + "deviceTypes": [ + { + "code": 144, + "profileId": 259, + "label": "MA-network-infrastructure-manager", + "name": "MA-network-infrastructure-manager", + "deviceTypeOrder": 0 + } + ], + "deviceVersions": [ + 1 + ], + "deviceIdentifiers": [ + 144 + ], + "deviceTypeName": "MA-network-infrastructure-manager", + "deviceTypeCode": 144, + "deviceTypeProfileId": 259, + "clusters": [ + { + "name": "Descriptor", + "code": 29, + "mfgCode": null, + "define": "DESCRIPTOR_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "DeviceTypeList", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ServerList", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClientList", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PartsList", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Binding", + "code": 30, + "mfgCode": null, + "define": "BINDING_CLUSTER", + "side": "server", + "enabled": 1, + "attributes": [ + { + "name": "Binding", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Wi-Fi Network Management", + "code": 1105, + "mfgCode": null, + "define": "WIFI_NETWORK_MANAGEMENT_CLUSTER", + "side": "server", + "enabled": 1, + "apiMaturity": "provisional", + "commands": [ + { + "name": "NetworkPassphraseRequest", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "NetworkPassphraseResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "SSID", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PassphraseSurrogate", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "int64u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Thread Border Router Management", + "code": 1106, + "mfgCode": null, + "define": "THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER", + "side": "server", + "enabled": 1, + "apiMaturity": "provisional", + "commands": [ + { + "name": "GetActiveDatasetRequest", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "GetPendingDatasetRequest", + "code": 1, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "DatasetResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + }, + { + "name": "SetActiveDatasetRequest", + "code": 3, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "BorderRouterName", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "char_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "BorderAgentID", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ThreadVersion", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "InterfaceEnabled", + "code": 3, + "mfgCode": null, + "side": "server", + "type": "boolean", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ActiveDatasetTimestamp", + "code": 4, + "mfgCode": null, + "side": "server", + "type": "int64u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "PendingDatasetTimestamp", + "code": 5, + "mfgCode": null, + "side": "server", + "type": "int64u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Thread Network Directory", + "code": 1107, + "mfgCode": null, + "define": "THREAD_NETWORK_DIRECTORY_CLUSTER", + "side": "server", + "enabled": 1, + "apiMaturity": "provisional", + "commands": [ + { + "name": "AddNetwork", + "code": 0, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "RemoveNetwork", + "code": 1, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "GetOperationalDataset", + "code": 2, + "mfgCode": null, + "source": "client", + "isIncoming": 1, + "isEnabled": 1 + }, + { + "name": "OperationalDatasetResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "isIncoming": 0, + "isEnabled": 1 + } + ], + "attributes": [ + { + "name": "PreferredExtendedPanID", + "code": 0, + "mfgCode": null, + "side": "server", + "type": "octet_string", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ThreadNetworks", + "code": 1, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ThreadNetworkTableSize", + "code": 2, + "mfgCode": null, + "side": "server", + "type": "int8u", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "EventList", + "code": 65530, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "type": "array", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": null, + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "type": "bitmap32", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "type": "int16u", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + } + ] + } + ], + "endpoints": [ + { + "endpointTypeName": "Anonymous Endpoint Type", + "endpointTypeIndex": 0, + "profileId": 259, + "endpointId": 0, + "networkId": 0, + "parentEndpointIdentifier": null + }, + { + "endpointTypeName": "Anonymous Endpoint Type", + "endpointTypeIndex": 1, + "profileId": 259, + "endpointId": 1, + "networkId": 0, + "parentEndpointIdentifier": null + } + ] +} diff --git a/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/zzz_generated.tar.gz b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/zzz_generated.tar.gz new file mode 100644 index 00000000..c6c5f78b Binary files /dev/null and b/meta-rdk-mtk-bpir4/recipes-matter/barton-matter/files/zzz_generated.tar.gz differ