Separate out attribute access interface registry/cache, remove free functions from InteractionModelEngine.h (#32954)
* Move GetAttributeAccessOverride to the right place
* A first pass at decoupling the AttributeAccessOverride
* Start adding a bit of registry, update attribute-storage.h
* Add the registry include everywhere it was used to register things
* Restyle
* More definition and usage cleanup
* Add include in ember compatibility layer
* Cleanup a TODO
* Fix linter too
* Fix dynamic dispatcher compile
* Darwin connectivity manager does not use TLV
* Fix include dependency for ESP32
* Remove usage of chip::tlv from connectivity manager: no TLV is used and this was just copy and paste
* Fix tizen includes: if you need Wifi enums, cluster-enums.h need including
* Fix esp32 build
* Fix mbed compile: its impl header had no includes for some reason
* Add needed include to InteractiveServer.cpp to fix darwin build
* Also include vectore because we use it
* Also fix boufallolab includes
* Update src/darwin/Framework/CHIP/ServerEndpoint/MTRServerCluster.mm
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
* Apply rename suggestion for unregisterAll...ForEndpoint
* Apply code review comment: log category switch
---------
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 576e2da..4fbaab2 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -96,7 +96,6 @@
--known-failure app/app-platform/ContentAppPlatform.h \
--known-failure controller/ExamplePersistentStorage.cpp \
--known-failure controller/ExamplePersistentStorage.h \
- --known-failure app/AttributeAccessInterface.h \
--known-failure app/AttributeAccessToken.h \
--known-failure app/CommandHandler.h \
--known-failure app/CommandHandlerInterface.h \
@@ -107,11 +106,11 @@
--known-failure app/reporting/tests/MockReportScheduler.cpp \
--known-failure app/reporting/tests/MockReportScheduler.h \
--known-failure app/util/attribute-storage.cpp \
- --known-failure app/util/attribute-storage.h \
--known-failure app/util/attribute-storage-detail.h \
+ --known-failure app/util/attribute-storage.h \
--known-failure app/util/attribute-table.cpp \
- --known-failure app/util/attribute-table.h \
--known-failure app/util/attribute-table-detail.h \
+ --known-failure app/util/attribute-table.h \
--known-failure app/util/binding-table.cpp \
--known-failure app/util/binding-table.h \
--known-failure app/util/config.h \
@@ -123,6 +122,7 @@
--known-failure app/util/generic-callbacks.h \
--known-failure app/util/generic-callback-stubs.cpp \
--known-failure app/util/im-client-callbacks.h \
+ --known-failure app/util/IMClusterCommandHandler.h \
--known-failure app/util/util.cpp \
--known-failure app/util/util.h \
--known-failure app/WriteHandler.h \
diff --git a/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp b/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
index 13c0205..41171d7 100644
--- a/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
+++ b/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp
@@ -19,6 +19,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp b/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp
index 9a9fccc..9309b59 100644
--- a/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp
+++ b/examples/all-clusters-app/all-clusters-common/src/fan-stub.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/clusters/fan-control-server/fan-control-server.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
diff --git a/examples/bridge-app/asr/src/bridged-actions-stub.cpp b/examples/bridge-app/asr/src/bridged-actions-stub.cpp
index b63fee3..9e26bae 100755
--- a/examples/bridge-app/asr/src/bridged-actions-stub.cpp
+++ b/examples/bridge-app/asr/src/bridged-actions-stub.cpp
@@ -18,6 +18,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/examples/bridge-app/esp32/main/DeviceCallbacks.cpp b/examples/bridge-app/esp32/main/DeviceCallbacks.cpp
index b54c8b4..13ced6a 100644
--- a/examples/bridge-app/esp32/main/DeviceCallbacks.cpp
+++ b/examples/bridge-app/esp32/main/DeviceCallbacks.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/examples/bridge-app/linux/bridged-actions-stub.cpp b/examples/bridge-app/linux/bridged-actions-stub.cpp
index 6127df0..00f6913 100644
--- a/examples/bridge-app/linux/bridged-actions-stub.cpp
+++ b/examples/bridge-app/linux/bridged-actions-stub.cpp
@@ -19,6 +19,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/examples/bridge-app/linux/main.cpp b/examples/bridge-app/linux/main.cpp
index 3016ece..3643f5e 100644
--- a/examples/bridge-app/linux/main.cpp
+++ b/examples/bridge-app/linux/main.cpp
@@ -22,6 +22,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/ConcreteAttributePath.h>
#include <app/EventLogging.h>
#include <app/reporting/reporting.h>
diff --git a/examples/bridge-app/telink/src/DeviceCallbacks.cpp b/examples/bridge-app/telink/src/DeviceCallbacks.cpp
index 6742953..b0657e5 100644
--- a/examples/bridge-app/telink/src/DeviceCallbacks.cpp
+++ b/examples/bridge-app/telink/src/DeviceCallbacks.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/examples/chef/common/chef-fan-control-manager.cpp b/examples/chef/common/chef-fan-control-manager.cpp
index 998491d..8998925 100644
--- a/examples/chef/common/chef-fan-control-manager.cpp
+++ b/examples/chef/common/chef-fan-control-manager.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/clusters/fan-control-server/fan-control-server.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
diff --git a/examples/placeholder/linux/InteractiveServer.cpp b/examples/placeholder/linux/InteractiveServer.cpp
index e9ca422..10d82ba 100644
--- a/examples/placeholder/linux/InteractiveServer.cpp
+++ b/examples/placeholder/linux/InteractiveServer.cpp
@@ -19,11 +19,13 @@
#include "InteractiveServer.h"
#include <json/json.h>
+#include <lib/core/CHIPSafeCasts.h>
#include <lib/support/Base64.h>
#include <platform/CHIPDeviceLayer.h>
#include <platform/logging/LogV.h>
#include <string>
+#include <vector>
using namespace chip::DeviceLayer;
diff --git a/examples/placeholder/linux/src/bridged-actions-stub.cpp b/examples/placeholder/linux/src/bridged-actions-stub.cpp
index 5df0ba1..ea6e824 100644
--- a/examples/placeholder/linux/src/bridged-actions-stub.cpp
+++ b/examples/placeholder/linux/src/bridged-actions-stub.cpp
@@ -19,6 +19,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/src/app/AttributeAccessInterfaceRegistry.cpp b/src/app/AttributeAccessInterfaceRegistry.cpp
new file mode 100644
index 0000000..b2c885f
--- /dev/null
+++ b/src/app/AttributeAccessInterfaceRegistry.cpp
@@ -0,0 +1,126 @@
+/**
+ * Copyright (c) 2024 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 <app/AttributeAccessInterfaceRegistry.h>
+
+#include <app/AttributeAccessInterfaceCache.h>
+
+using namespace chip::app;
+
+namespace {
+
+AttributeAccessInterface * gAttributeAccessOverrides = nullptr;
+AttributeAccessInterfaceCache gAttributeAccessInterfaceCache;
+
+// shouldUnregister returns true if the given AttributeAccessInterface should be
+// unregistered.
+template <typename F>
+void UnregisterMatchingAttributeAccessInterfaces(F shouldUnregister)
+{
+ AttributeAccessInterface * prev = nullptr;
+ AttributeAccessInterface * cur = gAttributeAccessOverrides;
+ while (cur)
+ {
+ AttributeAccessInterface * next = cur->GetNext();
+ if (shouldUnregister(cur))
+ {
+ // Remove it from the list
+ if (prev)
+ {
+ prev->SetNext(next);
+ }
+ else
+ {
+ gAttributeAccessOverrides = next;
+ }
+
+ cur->SetNext(nullptr);
+
+ // Do not change prev in this case.
+ }
+ else
+ {
+ prev = cur;
+ }
+ cur = next;
+ }
+}
+
+} // namespace
+
+void unregisterAttributeAccessOverride(AttributeAccessInterface * attrOverride)
+{
+ gAttributeAccessInterfaceCache.Invalidate();
+ UnregisterMatchingAttributeAccessInterfaces([attrOverride](AttributeAccessInterface * entry) { return entry == attrOverride; });
+}
+
+void unregisterAllAttributeAccessOverridesForEndpoint(EmberAfDefinedEndpoint * definedEndpoint)
+{
+ UnregisterMatchingAttributeAccessInterfaces(
+ [endpoint = definedEndpoint->endpoint](AttributeAccessInterface * entry) { return entry->MatchesEndpoint(endpoint); });
+}
+
+bool registerAttributeAccessOverride(AttributeAccessInterface * attrOverride)
+{
+ gAttributeAccessInterfaceCache.Invalidate();
+ for (auto * cur = gAttributeAccessOverrides; cur; cur = cur->GetNext())
+ {
+ if (cur->Matches(*attrOverride))
+ {
+ ChipLogError(InteractionModel, "Duplicate attribute override registration failed");
+ return false;
+ }
+ }
+ attrOverride->SetNext(gAttributeAccessOverrides);
+ gAttributeAccessOverrides = attrOverride;
+ return true;
+}
+
+namespace chip {
+namespace app {
+
+app::AttributeAccessInterface * GetAttributeAccessOverride(EndpointId endpointId, ClusterId clusterId)
+{
+ using CacheResult = AttributeAccessInterfaceCache::CacheResult;
+
+ AttributeAccessInterface * cached = nullptr;
+ CacheResult result = gAttributeAccessInterfaceCache.Get(endpointId, clusterId, &cached);
+ switch (result)
+ {
+ case CacheResult::kDefinitelyUnused:
+ return nullptr;
+ case CacheResult::kDefinitelyUsed:
+ return cached;
+ case CacheResult::kCacheMiss:
+ default:
+ // Did not cache yet, search set of AAI registered, and cache if found.
+ for (app::AttributeAccessInterface * cur = gAttributeAccessOverrides; cur; cur = cur->GetNext())
+ {
+ if (cur->Matches(endpointId, clusterId))
+ {
+ gAttributeAccessInterfaceCache.MarkUsed(endpointId, clusterId, cur);
+ return cur;
+ }
+ }
+
+ // Did not find AAI registered: mark as definitely not using.
+ gAttributeAccessInterfaceCache.MarkUnused(endpointId, clusterId);
+ }
+
+ return nullptr;
+}
+
+} // namespace app
+} // namespace chip
diff --git a/src/app/AttributeAccessInterfaceRegistry.h b/src/app/AttributeAccessInterfaceRegistry.h
new file mode 100644
index 0000000..f845221
--- /dev/null
+++ b/src/app/AttributeAccessInterfaceRegistry.h
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2024 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 <app/AttributeAccessInterface.h>
+#include <app/util/af-types.h>
+
+/**
+ * Register an attribute access override. It will remain registered until the
+ * endpoint it's registered for is disabled (or until shutdown if it's
+ * registered for all endpoints) or until it is explicitly unregistered.
+ * Registration will fail if there is an already-registered override for the
+ * same set of attributes.
+ *
+ * @return false if there is an existing override that the new one would
+ * conflict with. In this case the override is not registered.
+ * @return true if registration was successful.
+ */
+bool registerAttributeAccessOverride(chip::app::AttributeAccessInterface * attrOverride);
+
+/**
+ * Unregister an attribute access override (for example if the object
+ * implementing AttributeAccessInterface is being destroyed).
+ */
+void unregisterAttributeAccessOverride(chip::app::AttributeAccessInterface * attrOverride);
+
+/**
+ * Unregister all attribute access interfaces that match this given endpoint.
+ */
+void unregisterAllAttributeAccessOverridesForEndpoint(EmberAfDefinedEndpoint * definedEndpoint);
+
+namespace chip {
+namespace app {
+
+/**
+ * Get the registered attribute access override. nullptr when attribute access override is not found.
+ */
+AttributeAccessInterface * GetAttributeAccessOverride(EndpointId aEndpointId, ClusterId aClusterId);
+
+} // namespace app
+} // namespace chip
diff --git a/src/app/BUILD.gn b/src/app/BUILD.gn
index 76bd115..f368f06 100644
--- a/src/app/BUILD.gn
+++ b/src/app/BUILD.gn
@@ -275,14 +275,32 @@
]
}
+static_library("attribute-access") {
+ sources = [
+ "AttributeAccessInterface.cpp",
+ "AttributeAccessInterface.h",
+ "AttributeAccessInterfaceCache.h",
+ "AttributeAccessInterfaceRegistry.cpp",
+ "AttributeAccessInterfaceRegistry.h",
+ ]
+
+ deps = [
+ ":paths",
+ "${chip_root}/src/access:types",
+ "${chip_root}/src/app/MessageDef",
+ "${chip_root}/src/app/data-model",
+ "${chip_root}/src/app/util:af-types",
+ "${chip_root}/src/lib/core",
+ "${chip_root}/src/lib/support",
+ ]
+}
+
# Note to developpers, instead of continuously adding files in the app librabry, it is recommand to create smaller source_sets that app can depend on.
# This way, we can have a better understanding of dependencies and other componenets can depend on the different source_sets without needing to depend on the entire app library.
static_library("app") {
output_name = "libCHIPDataModel"
sources = [
- "AttributeAccessInterface.cpp",
- "AttributeAccessInterfaceCache.h",
"AttributePathExpandIterator.cpp",
"AttributePathExpandIterator.h",
"AttributePersistenceProvider.h",
@@ -315,15 +333,11 @@
# "CommandHandler._h"
# "ReadHandler._h",
# "WriteHandler._h"
-
- # TODO: the following items cannot be included due to platform includes not being
- # able to depend on src/app
- # Name with _ so that linter does not recognize it
- # "_AttributeAccessInterface._h",
]
public_deps = [
":app_config",
+ ":attribute-access",
":constants",
":global-attributes",
":interaction-model",
diff --git a/src/app/InteractionModelEngine.cpp b/src/app/InteractionModelEngine.cpp
index d0b020c..64c06f9 100644
--- a/src/app/InteractionModelEngine.cpp
+++ b/src/app/InteractionModelEngine.cpp
@@ -31,6 +31,7 @@
#include "access/SubjectDescriptor.h"
#include <app/AppConfig.h>
#include <app/RequiredPrivilege.h>
+#include <app/util/IMClusterCommandHandler.h>
#include <app/util/af-types.h>
#include <app/util/ember-compatibility-functions.h>
#include <app/util/endpoint-config-api.h>
diff --git a/src/app/InteractionModelEngine.h b/src/app/InteractionModelEngine.h
index 935bca0..baf02c6 100644
--- a/src/app/InteractionModelEngine.h
+++ b/src/app/InteractionModelEngine.h
@@ -712,15 +712,5 @@
uint32_t mMagic = 0;
};
-void DispatchSingleClusterCommand(const ConcreteCommandPath & aCommandPath, chip::TLV::TLVReader & aReader,
- CommandHandler * apCommandObj);
-
-/**
- * Get the registered attribute access override. nullptr when attribute access override is not found.
- *
- * TODO(#16806): This function and registerAttributeAccessOverride can be member functions of InteractionModelEngine.
- */
-AttributeAccessInterface * GetAttributeAccessOverride(EndpointId aEndpointId, ClusterId aClusterId);
-
} // namespace app
} // namespace chip
diff --git a/src/app/WriteHandler.cpp b/src/app/WriteHandler.cpp
index 911c2f5..f7f3ee1 100644
--- a/src/app/WriteHandler.cpp
+++ b/src/app/WriteHandler.cpp
@@ -18,6 +18,7 @@
#include "messaging/ExchangeContext.h"
#include <app/AppConfig.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/InteractionModelEngine.h>
#include <app/MessageDef/EventPathIB.h>
#include <app/StatusResponse.h>
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 20fb879..316825b 100644
--- a/src/app/clusters/access-control-server/access-control-server.cpp
+++ b/src/app/clusters/access-control-server/access-control-server.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/account-login-server/account-login-server.cpp b/src/app/clusters/account-login-server/account-login-server.cpp
index a41f889..95d94fe 100644
--- a/src/app/clusters/account-login-server/account-login-server.cpp
+++ b/src/app/clusters/account-login-server/account-login-server.cpp
@@ -26,6 +26,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/administrator-commissioning-server/administrator-commissioning-server.cpp b/src/app/clusters/administrator-commissioning-server/administrator-commissioning-server.cpp
index 1bfa13b..83a0b04 100644
--- a/src/app/clusters/administrator-commissioning-server/administrator-commissioning-server.cpp
+++ b/src/app/clusters/administrator-commissioning-server/administrator-commissioning-server.cpp
@@ -22,6 +22,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/server/CommissioningWindowManager.h>
diff --git a/src/app/clusters/air-quality-server/air-quality-server.cpp b/src/app/clusters/air-quality-server/air-quality-server.cpp
index f9ff17b..811c472 100644
--- a/src/app/clusters/air-quality-server/air-quality-server.cpp
+++ b/src/app/clusters/air-quality-server/air-quality-server.cpp
@@ -18,6 +18,7 @@
#include "app-common/zap-generated/ids/Clusters.h"
#include <app-common/zap-generated/attributes/Accessors.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/clusters/air-quality-server/air-quality-server.h>
#include <app/reporting/reporting.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/application-basic-server/application-basic-server.cpp b/src/app/clusters/application-basic-server/application-basic-server.cpp
index 20daa3a..3841b81 100644
--- a/src/app/clusters/application-basic-server/application-basic-server.cpp
+++ b/src/app/clusters/application-basic-server/application-basic-server.cpp
@@ -26,6 +26,7 @@
#include <app/clusters/application-basic-server/application-basic-server.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/data-model/Encode.h>
#include <app/util/attribute-storage.h>
#include <app/util/config.h>
diff --git a/src/app/clusters/application-launcher-server/application-launcher-server.cpp b/src/app/clusters/application-launcher-server/application-launcher-server.cpp
index 2cc461a..ed6265e 100644
--- a/src/app/clusters/application-launcher-server/application-launcher-server.cpp
+++ b/src/app/clusters/application-launcher-server/application-launcher-server.cpp
@@ -29,6 +29,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/data-model/Encode.h>
diff --git a/src/app/clusters/audio-output-server/audio-output-server.cpp b/src/app/clusters/audio-output-server/audio-output-server.cpp
index 297d1ea..19d34b0 100644
--- a/src/app/clusters/audio-output-server/audio-output-server.cpp
+++ b/src/app/clusters/audio-output-server/audio-output-server.cpp
@@ -27,6 +27,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/data-model/Encode.h>
diff --git a/src/app/clusters/basic-information/basic-information.cpp b/src/app/clusters/basic-information/basic-information.cpp
index 91eef9d..b550026 100644
--- a/src/app/clusters/basic-information/basic-information.cpp
+++ b/src/app/clusters/basic-information/basic-information.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/cluster-objects.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/EventLogging.h>
#include <app/InteractionModelEngine.h>
#include <app/SpecificationDefinedRevisions.h>
diff --git a/src/app/clusters/bindings/bindings.cpp b/src/app/clusters/bindings/bindings.cpp
index f11ce51..63b085d 100644
--- a/src/app/clusters/bindings/bindings.cpp
+++ b/src/app/clusters/bindings/bindings.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteAttributePath.h>
#include <app/clusters/bindings/bindings.h>
diff --git a/src/app/clusters/boolean-state-configuration-server/boolean-state-configuration-server.cpp b/src/app/clusters/boolean-state-configuration-server/boolean-state-configuration-server.cpp
index bd9a255..3eb3b12 100644
--- a/src/app/clusters/boolean-state-configuration-server/boolean-state-configuration-server.cpp
+++ b/src/app/clusters/boolean-state-configuration-server/boolean-state-configuration-server.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/channel-server/channel-server.cpp b/src/app/clusters/channel-server/channel-server.cpp
index 13743d8..01a1af2 100644
--- a/src/app/clusters/channel-server/channel-server.cpp
+++ b/src/app/clusters/channel-server/channel-server.cpp
@@ -17,6 +17,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/clusters/channel-server/channel-delegate.h>
diff --git a/src/app/clusters/concentration-measurement-server/concentration-measurement-server.h b/src/app/clusters/concentration-measurement-server/concentration-measurement-server.h
index 984eefe..c903b21 100644
--- a/src/app/clusters/concentration-measurement-server/concentration-measurement-server.h
+++ b/src/app/clusters/concentration-measurement-server/concentration-measurement-server.h
@@ -20,6 +20,7 @@
#include "concentration-measurement-cluster-objects.h"
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/data-model/Nullable.h>
#include <app/reporting/reporting.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/content-launch-server/content-launch-server.cpp b/src/app/clusters/content-launch-server/content-launch-server.cpp
index ed2f5fa..2e4fb74 100644
--- a/src/app/clusters/content-launch-server/content-launch-server.cpp
+++ b/src/app/clusters/content-launch-server/content-launch-server.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/data-model/Encode.h>
diff --git a/src/app/clusters/descriptor/descriptor.cpp b/src/app/clusters/descriptor/descriptor.cpp
index d3badfb..5140512 100644
--- a/src/app/clusters/descriptor/descriptor.cpp
+++ b/src/app/clusters/descriptor/descriptor.cpp
@@ -24,6 +24,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <app/util/endpoint-config-api.h>
#include <lib/support/CodeUtils.h>
diff --git a/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp b/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp
index 7836e91..da1fd23 100644
--- a/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp
+++ b/src/app/clusters/device-energy-management-server/device-energy-management-server.cpp
@@ -17,6 +17,7 @@
#include "device-energy-management-server.h"
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/ConcreteAttributePath.h>
#include <app/InteractionModelEngine.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/door-lock-server/door-lock-server.cpp b/src/app/clusters/door-lock-server/door-lock-server.cpp
index 66676a2..742afee 100644
--- a/src/app/clusters/door-lock-server/door-lock-server.cpp
+++ b/src/app/clusters/door-lock-server/door-lock-server.cpp
@@ -25,6 +25,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/callback.h>
#include <app-common/zap-generated/ids/Clusters.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/EventLogging.h>
#include <app/server/Server.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/electrical-energy-measurement-server/electrical-energy-measurement-server.cpp b/src/app/clusters/electrical-energy-measurement-server/electrical-energy-measurement-server.cpp
index e8ee238..4f52788 100644
--- a/src/app/clusters/electrical-energy-measurement-server/electrical-energy-measurement-server.cpp
+++ b/src/app/clusters/electrical-energy-measurement-server/electrical-energy-measurement-server.cpp
@@ -20,6 +20,7 @@
#include <protocols/interaction_model/StatusCode.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/EventLogging.h>
#include <app/reporting/reporting.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/electrical-power-measurement-server/electrical-power-measurement-server.cpp b/src/app/clusters/electrical-power-measurement-server/electrical-power-measurement-server.cpp
index 5f124a3..0ac1ec9 100644
--- a/src/app/clusters/electrical-power-measurement-server/electrical-power-measurement-server.cpp
+++ b/src/app/clusters/electrical-power-measurement-server/electrical-power-measurement-server.cpp
@@ -20,6 +20,7 @@
#include <protocols/interaction_model/StatusCode.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/EventLogging.h>
#include <app/reporting/reporting.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/energy-evse-server/energy-evse-server.cpp b/src/app/clusters/energy-evse-server/energy-evse-server.cpp
index b3cbbf3..2e2f686 100644
--- a/src/app/clusters/energy-evse-server/energy-evse-server.cpp
+++ b/src/app/clusters/energy-evse-server/energy-evse-server.cpp
@@ -17,6 +17,7 @@
#include "energy-evse-server.h"
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/ConcreteAttributePath.h>
#include <app/InteractionModelEngine.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/energy-preference-server/energy-preference-server.cpp b/src/app/clusters/energy-preference-server/energy-preference-server.cpp
index c3c645f..789ab4c 100644
--- a/src/app/clusters/energy-preference-server/energy-preference-server.cpp
+++ b/src/app/clusters/energy-preference-server/energy-preference-server.cpp
@@ -17,6 +17,7 @@
#include "energy-preference-server.h"
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h> // Needed for registerAttributeAccessOverride
#include <app-common/zap-generated/attributes/Accessors.h>
diff --git a/src/app/clusters/ethernet-network-diagnostics-server/ethernet-network-diagnostics-server.cpp b/src/app/clusters/ethernet-network-diagnostics-server/ethernet-network-diagnostics-server.cpp
index 8db3317..7bd7043 100644
--- a/src/app/clusters/ethernet-network-diagnostics-server/ethernet-network-diagnostics-server.cpp
+++ b/src/app/clusters/ethernet-network-diagnostics-server/ethernet-network-diagnostics-server.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/fixed-label-server/fixed-label-server.cpp b/src/app/clusters/fixed-label-server/fixed-label-server.cpp
index 22cca83..bd952f1 100644
--- a/src/app/clusters/fixed-label-server/fixed-label-server.cpp
+++ b/src/app/clusters/fixed-label-server/fixed-label-server.cpp
@@ -24,6 +24,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/src/app/clusters/general-commissioning-server/general-commissioning-server.cpp b/src/app/clusters/general-commissioning-server/general-commissioning-server.cpp
index d32ddc0..776441f 100644
--- a/src/app/clusters/general-commissioning-server/general-commissioning-server.cpp
+++ b/src/app/clusters/general-commissioning-server/general-commissioning-server.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/cluster-objects.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/server/CommissioningWindowManager.h>
diff --git a/src/app/clusters/general-diagnostics-server/general-diagnostics-server.cpp b/src/app/clusters/general-diagnostics-server/general-diagnostics-server.cpp
index 0bd3fe0..fa3d9da 100644
--- a/src/app/clusters/general-diagnostics-server/general-diagnostics-server.cpp
+++ b/src/app/clusters/general-diagnostics-server/general-diagnostics-server.cpp
@@ -28,6 +28,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/EventLogging.h>
#include <app/reporting/reporting.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/group-key-mgmt-server/group-key-mgmt-server.cpp b/src/app/clusters/group-key-mgmt-server/group-key-mgmt-server.cpp
index 5efc037..c3cf09e 100644
--- a/src/app/clusters/group-key-mgmt-server/group-key-mgmt-server.cpp
+++ b/src/app/clusters/group-key-mgmt-server/group-key-mgmt-server.cpp
@@ -18,6 +18,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/MessageDef/StatusIB.h>
#include <app/server/Server.h>
diff --git a/src/app/clusters/icd-management-server/icd-management-server.cpp b/src/app/clusters/icd-management-server/icd-management-server.cpp
index 51ec9b9..f6ab59d 100644
--- a/src/app/clusters/icd-management-server/icd-management-server.cpp
+++ b/src/app/clusters/icd-management-server/icd-management-server.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/icd/server/ICDNotifier.h>
#include <app/server/Server.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/keypad-input-server/keypad-input-server.cpp b/src/app/clusters/keypad-input-server/keypad-input-server.cpp
index b07c1fa..a9903b7 100644
--- a/src/app/clusters/keypad-input-server/keypad-input-server.cpp
+++ b/src/app/clusters/keypad-input-server/keypad-input-server.cpp
@@ -26,6 +26,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/data-model/Encode.h>
diff --git a/src/app/clusters/laundry-dryer-controls-server/laundry-dryer-controls-server.cpp b/src/app/clusters/laundry-dryer-controls-server/laundry-dryer-controls-server.cpp
index c29f61b..9870c85 100644
--- a/src/app/clusters/laundry-dryer-controls-server/laundry-dryer-controls-server.cpp
+++ b/src/app/clusters/laundry-dryer-controls-server/laundry-dryer-controls-server.cpp
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <app/util/config.h>
diff --git a/src/app/clusters/laundry-washer-controls-server/laundry-washer-controls-server.cpp b/src/app/clusters/laundry-washer-controls-server/laundry-washer-controls-server.cpp
index d648216..6f0f84f 100644
--- a/src/app/clusters/laundry-washer-controls-server/laundry-washer-controls-server.cpp
+++ b/src/app/clusters/laundry-washer-controls-server/laundry-washer-controls-server.cpp
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <app/util/config.h>
diff --git a/src/app/clusters/localization-configuration-server/localization-configuration-server.cpp b/src/app/clusters/localization-configuration-server/localization-configuration-server.cpp
index 5f059e7..1b26542 100644
--- a/src/app/clusters/localization-configuration-server/localization-configuration-server.cpp
+++ b/src/app/clusters/localization-configuration-server/localization-configuration-server.cpp
@@ -25,6 +25,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/src/app/clusters/media-input-server/media-input-server.cpp b/src/app/clusters/media-input-server/media-input-server.cpp
index 3fe1398..267f4e9 100644
--- a/src/app/clusters/media-input-server/media-input-server.cpp
+++ b/src/app/clusters/media-input-server/media-input-server.cpp
@@ -26,6 +26,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/data-model/Encode.h>
diff --git a/src/app/clusters/media-playback-server/media-playback-server.cpp b/src/app/clusters/media-playback-server/media-playback-server.cpp
index 9140cf5..b13a46d 100644
--- a/src/app/clusters/media-playback-server/media-playback-server.cpp
+++ b/src/app/clusters/media-playback-server/media-playback-server.cpp
@@ -27,6 +27,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/messages-server/messages-server.cpp b/src/app/clusters/messages-server/messages-server.cpp
index 66594ae..0c03c95 100644
--- a/src/app/clusters/messages-server/messages-server.cpp
+++ b/src/app/clusters/messages-server/messages-server.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp b/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp
index cae604c..4a736ce 100644
--- a/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp
+++ b/src/app/clusters/microwave-oven-control-server/microwave-oven-control-server.cpp
@@ -17,6 +17,7 @@
*/
#include <app-common/zap-generated/attributes/Accessors.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/InteractionModelEngine.h>
#include <app/clusters/microwave-oven-control-server/microwave-oven-control-server.h>
#include <app/clusters/mode-base-server/mode-base-server.h>
diff --git a/src/app/clusters/mode-base-server/mode-base-server.cpp b/src/app/clusters/mode-base-server/mode-base-server.cpp
index 76bd195..bb6aac6 100644
--- a/src/app/clusters/mode-base-server/mode-base-server.cpp
+++ b/src/app/clusters/mode-base-server/mode-base-server.cpp
@@ -17,6 +17,7 @@
*/
#include <app-common/zap-generated/attributes/Accessors.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/InteractionModelEngine.h>
#include <app/SafeAttributePersistenceProvider.h>
#include <app/clusters/mode-base-server/mode-base-server.h>
diff --git a/src/app/clusters/mode-select-server/mode-select-server.cpp b/src/app/clusters/mode-select-server/mode-select-server.cpp
index f162a26..dceb727 100644
--- a/src/app/clusters/mode-select-server/mode-select-server.cpp
+++ b/src/app/clusters/mode-select-server/mode-select-server.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/clusters/mode-select-server/supported-modes-manager.h>
diff --git a/src/app/clusters/network-commissioning/network-commissioning.cpp b/src/app/clusters/network-commissioning/network-commissioning.cpp
index 3ad47b6..41741c7 100644
--- a/src/app/clusters/network-commissioning/network-commissioning.cpp
+++ b/src/app/clusters/network-commissioning/network-commissioning.cpp
@@ -22,6 +22,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/cluster-objects.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandlerInterface.h>
#include <app/InteractionModelEngine.h>
#include <app/clusters/general-commissioning-server/general-commissioning-server.h>
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 d05f099..12fe1c4 100644
--- a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
+++ b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
@@ -25,6 +25,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/ids/Attributes.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/operational-state-server/operational-state-server.cpp b/src/app/clusters/operational-state-server/operational-state-server.cpp
index 896cc0c..50b4cd0 100644
--- a/src/app/clusters/operational-state-server/operational-state-server.cpp
+++ b/src/app/clusters/operational-state-server/operational-state-server.cpp
@@ -22,6 +22,7 @@
#include "operational-state-server.h"
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/callback.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/EventLogging.h>
#include <app/InteractionModelEngine.h>
#include <app/reporting/reporting.h>
diff --git a/src/app/clusters/ota-requestor/ota-requestor-server.cpp b/src/app/clusters/ota-requestor/ota-requestor-server.cpp
index 8f5d132..b95a6d9 100644
--- a/src/app/clusters/ota-requestor/ota-requestor-server.cpp
+++ b/src/app/clusters/ota-requestor/ota-requestor-server.cpp
@@ -21,6 +21,7 @@
*/
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/EventLogging.h>
#include <app/clusters/ota-requestor/OTARequestorInterface.h>
diff --git a/src/app/clusters/power-source-configuration-server/power-source-configuration-server.cpp b/src/app/clusters/power-source-configuration-server/power-source-configuration-server.cpp
index 7e98042..a8a9d4e 100644
--- a/src/app/clusters/power-source-configuration-server/power-source-configuration-server.cpp
+++ b/src/app/clusters/power-source-configuration-server/power-source-configuration-server.cpp
@@ -25,6 +25,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/src/app/clusters/power-source-server/power-source-server.cpp b/src/app/clusters/power-source-server/power-source-server.cpp
index a545ea9..43ca182 100644
--- a/src/app/clusters/power-source-server/power-source-server.cpp
+++ b/src/app/clusters/power-source-server/power-source-server.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/ids/Attributes.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <app/util/config.h>
#include <lib/support/CodeUtils.h>
diff --git a/src/app/clusters/power-topology-server/power-topology-server.cpp b/src/app/clusters/power-topology-server/power-topology-server.cpp
index 3aff747..0b7072c 100644
--- a/src/app/clusters/power-topology-server/power-topology-server.cpp
+++ b/src/app/clusters/power-topology-server/power-topology-server.cpp
@@ -20,6 +20,7 @@
#include <protocols/interaction_model/StatusCode.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/EventLogging.h>
#include <app/reporting/reporting.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp b/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp
index 95480dd..25a0be1 100644
--- a/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp
+++ b/src/app/clusters/resource-monitoring-server/resource-monitoring-server.cpp
@@ -17,6 +17,7 @@
*/
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandlerInterface.h>
#include <app/ConcreteAttributePath.h>
#include <app/ConcreteClusterPath.h>
diff --git a/src/app/clusters/sample-mei-server/sample-mei-server.cpp b/src/app/clusters/sample-mei-server/sample-mei-server.cpp
index 56d026e..afeca91 100644
--- a/src/app/clusters/sample-mei-server/sample-mei-server.cpp
+++ b/src/app/clusters/sample-mei-server/sample-mei-server.cpp
@@ -4,6 +4,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Commands.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/scenes-server/scenes-server.cpp b/src/app/clusters/scenes-server/scenes-server.cpp
index a57f003..860e292 100644
--- a/src/app/clusters/scenes-server/scenes-server.cpp
+++ b/src/app/clusters/scenes-server/scenes-server.cpp
@@ -19,6 +19,7 @@
#include "scenes-server.h"
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/cluster-objects.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandlerInterface.h>
#include <app/InteractionModelEngine.h>
#include <app/clusters/scenes-server/SceneTableImpl.h>
diff --git a/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp b/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp
index b607158..2c0d76f 100644
--- a/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp
+++ b/src/app/clusters/software-diagnostics-server/software-diagnostics-server.cpp
@@ -21,6 +21,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/CommandHandlerInterface.h>
#include <app/ConcreteCommandPath.h>
diff --git a/src/app/clusters/target-navigator-server/target-navigator-server.cpp b/src/app/clusters/target-navigator-server/target-navigator-server.cpp
index a6c4d39..42c852b 100644
--- a/src/app/clusters/target-navigator-server/target-navigator-server.cpp
+++ b/src/app/clusters/target-navigator-server/target-navigator-server.cpp
@@ -26,6 +26,7 @@
#include <app/clusters/target-navigator-server/target-navigator-server.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/temperature-control-server/temperature-control-server.cpp b/src/app/clusters/temperature-control-server/temperature-control-server.cpp
index 9194c16..85035c6 100644
--- a/src/app/clusters/temperature-control-server/temperature-control-server.cpp
+++ b/src/app/clusters/temperature-control-server/temperature-control-server.cpp
@@ -18,6 +18,7 @@
#include <app-common/zap-generated/attributes/Accessors.h>
#include <app-common/zap-generated/cluster-objects.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/InteractionModelEngine.h>
#include <app/clusters/temperature-control-server/supported-temperature-levels-manager.h>
#include <app/util/attribute-storage.h>
diff --git a/src/app/clusters/test-cluster-server/test-cluster-server.cpp b/src/app/clusters/test-cluster-server/test-cluster-server.cpp
index 8d23cd3..0d80534 100644
--- a/src/app/clusters/test-cluster-server/test-cluster-server.cpp
+++ b/src/app/clusters/test-cluster-server/test-cluster-server.cpp
@@ -24,6 +24,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Commands.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/thermostat-server/thermostat-server.cpp b/src/app/clusters/thermostat-server/thermostat-server.cpp
index 91d9b33..2145946 100644
--- a/src/app/clusters/thermostat-server/thermostat-server.cpp
+++ b/src/app/clusters/thermostat-server/thermostat-server.cpp
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <app-common/zap-generated/attributes/Accessors.h>
diff --git a/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp b/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp
index b21f901..59115c0 100644
--- a/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp
+++ b/src/app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-server.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/clusters/thread-network-diagnostics-server/thread-network-diagnostics-provider.h>
diff --git a/src/app/clusters/time-format-localization-server/time-format-localization-server.cpp b/src/app/clusters/time-format-localization-server/time-format-localization-server.cpp
index ff38290..7e61e34 100644
--- a/src/app/clusters/time-format-localization-server/time-format-localization-server.cpp
+++ b/src/app/clusters/time-format-localization-server/time-format-localization-server.cpp
@@ -26,6 +26,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-storage.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
diff --git a/src/app/clusters/time-synchronization-server/time-synchronization-server.cpp b/src/app/clusters/time-synchronization-server/time-synchronization-server.cpp
index 3578e2b..d03d784 100644
--- a/src/app/clusters/time-synchronization-server/time-synchronization-server.cpp
+++ b/src/app/clusters/time-synchronization-server/time-synchronization-server.cpp
@@ -24,6 +24,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/EventLogging.h>
#include <app/server/Server.h>
diff --git a/src/app/clusters/user-label-server/user-label-server.cpp b/src/app/clusters/user-label-server/user-label-server.cpp
index 49a557b..5131ed4 100644
--- a/src/app/clusters/user-label-server/user-label-server.cpp
+++ b/src/app/clusters/user-label-server/user-label-server.cpp
@@ -24,6 +24,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/server/Server.h>
#include <app/util/attribute-storage.h>
#include <credentials/FabricTable.h>
diff --git a/src/app/clusters/valve-configuration-and-control-server/valve-configuration-and-control-server.cpp b/src/app/clusters/valve-configuration-and-control-server/valve-configuration-and-control-server.cpp
index 120cd2b..82dd454 100644
--- a/src/app/clusters/valve-configuration-and-control-server/valve-configuration-and-control-server.cpp
+++ b/src/app/clusters/valve-configuration-and-control-server/valve-configuration-and-control-server.cpp
@@ -31,6 +31,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/clusters/wake-on-lan-server/wake-on-lan-server.cpp b/src/app/clusters/wake-on-lan-server/wake-on-lan-server.cpp
index ec989bb..3141094 100644
--- a/src/app/clusters/wake-on-lan-server/wake-on-lan-server.cpp
+++ b/src/app/clusters/wake-on-lan-server/wake-on-lan-server.cpp
@@ -26,6 +26,7 @@
#include <app/clusters/wake-on-lan-server/wake-on-lan-server.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/data-model/Encode.h>
diff --git a/src/app/clusters/wifi-network-diagnostics-server/wifi-network-diagnostics-server.cpp b/src/app/clusters/wifi-network-diagnostics-server/wifi-network-diagnostics-server.cpp
index 0657e37..d24bc02 100644
--- a/src/app/clusters/wifi-network-diagnostics-server/wifi-network-diagnostics-server.cpp
+++ b/src/app/clusters/wifi-network-diagnostics-server/wifi-network-diagnostics-server.cpp
@@ -20,6 +20,7 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandler.h>
#include <app/ConcreteCommandPath.h>
#include <app/EventLogging.h>
diff --git a/src/app/dynamic_server/DynamicDispatcher.cpp b/src/app/dynamic_server/DynamicDispatcher.cpp
index c54e7d8..5f9476a 100644
--- a/src/app/dynamic_server/DynamicDispatcher.cpp
+++ b/src/app/dynamic_server/DynamicDispatcher.cpp
@@ -23,7 +23,6 @@
#include <app-common/zap-generated/ids/Attributes.h>
#include <app-common/zap-generated/ids/Clusters.h>
#include <app-common/zap-generated/ids/Commands.h>
-#include <app/AttributeAccessInterface.h>
#include <app/CommandHandler.h>
#include <app/ConcreteAttributePath.h>
#include <app/ConcreteCommandPath.h>
@@ -189,13 +188,6 @@
return aWriteHandler->AddStatus(aPath, status);
}
-// No attribute access overrides on iOS and Android for now.
-// TODO (#16806): This function can be moved to InteractionModelEngine.
-AttributeAccessInterface * GetAttributeAccessOverride(EndpointId endpointId, ClusterId clusterId)
-{
- return nullptr;
-}
-
void DispatchSingleClusterCommand(const ConcreteCommandPath & aPath, TLV::TLVReader & aReader, CommandHandler * aCommandObj)
{
// This command passed ServerClusterCommandExists so we know it's one of our
diff --git a/src/app/icd/server/ICDManager.cpp b/src/app/icd/server/ICDManager.cpp
index 479fb9a..5f93946 100644
--- a/src/app/icd/server/ICDManager.cpp
+++ b/src/app/icd/server/ICDManager.cpp
@@ -26,7 +26,6 @@
#include <platform/ConnectivityManager.h>
#include <platform/LockTracker.h>
#include <platform/internal/CHIPDeviceLayerInternal.h>
-#include <stdlib.h>
namespace {
enum class ICDTestEventTriggerEvent : uint64_t
diff --git a/src/app/icd/server/ICDManager.h b/src/app/icd/server/ICDManager.h
index 43a5386..69dfdbf 100644
--- a/src/app/icd/server/ICDManager.h
+++ b/src/app/icd/server/ICDManager.h
@@ -19,6 +19,7 @@
#include <app/icd/server/ICDServerConfig.h>
#include <app-common/zap-generated/cluster-enums.h>
+#include <app/AppConfig.h>
#include <app/SubscriptionsInfoProvider.h>
#include <app/TestEventTriggerDelegate.h>
#include <app/icd/server/ICDConfigurationData.h>
@@ -26,7 +27,6 @@
#include <app/icd/server/ICDStateObserver.h>
#include <credentials/FabricTable.h>
#include <crypto/SessionKeystore.h>
-#include <functional>
#include <lib/support/BitFlags.h>
#include <messaging/ExchangeMgr.h>
#include <platform/CHIPDeviceConfig.h>
diff --git a/src/app/util/IMClusterCommandHandler.h b/src/app/util/IMClusterCommandHandler.h
new file mode 100644
index 0000000..95d1aef
--- /dev/null
+++ b/src/app/util/IMClusterCommandHandler.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2024 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 <app/CommandHandler.h>
+#include <app/ConcreteCommandPath.h>
+#include <lib/core/TLVReader.h>
+
+namespace chip {
+namespace app {
+
+/**
+ * Dispatch is generally implemented in code-generated code in ember within
+ * IMClusterCommandHandler.cpp
+ *
+ * aCommandPath - the path that is invoked
+ * aReader - the input TLV data for this command
+ * apCommandObj - how to send back the reply
+ */
+void DispatchSingleClusterCommand(const ConcreteCommandPath & aCommandPath, chip::TLV::TLVReader & aReader,
+ CommandHandler * apCommandObj);
+
+} // namespace app
+} // namespace chip
diff --git a/src/app/util/af-types.h b/src/app/util/af-types.h
index ffffdfb..c608854 100644
--- a/src/app/util/af-types.h
+++ b/src/app/util/af-types.h
@@ -24,7 +24,6 @@
*/
#include <stdbool.h> // For bool
-#include <stddef.h> // For NULL.
#include <stdint.h> // For various uint*_t types
#include <app/util/basic-types.h>
diff --git a/src/app/util/attribute-storage.cpp b/src/app/util/attribute-storage.cpp
index 8848c63..d154b95 100644
--- a/src/app/util/attribute-storage.cpp
+++ b/src/app/util/attribute-storage.cpp
@@ -19,7 +19,7 @@
#include <app/util/attribute-storage-detail.h>
-#include <app/AttributeAccessInterfaceCache.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/AttributePersistenceProvider.h>
#include <app/InteractionModelEngine.h>
#include <app/reporting/reporting.h>
@@ -140,43 +140,6 @@
DataVersion fixedEndpointDataVersions[ZAP_FIXED_ENDPOINT_DATA_VERSION_COUNT];
#endif // FIXED_ENDPOINT_COUNT > 0
-AttributeAccessInterface * gAttributeAccessOverrides = nullptr;
-AttributeAccessInterfaceCache gAttributeAccessInterfaceCache;
-
-// shouldUnregister returns true if the given AttributeAccessInterface should be
-// unregistered.
-template <typename F>
-void UnregisterMatchingAttributeAccessInterfaces(F shouldUnregister)
-{
- AttributeAccessInterface * prev = nullptr;
- AttributeAccessInterface * cur = gAttributeAccessOverrides;
- while (cur)
- {
- AttributeAccessInterface * next = cur->GetNext();
- if (shouldUnregister(cur))
- {
- // Remove it from the list
- if (prev)
- {
- prev->SetNext(next);
- }
- else
- {
- gAttributeAccessOverrides = next;
- }
-
- cur->SetNext(nullptr);
-
- // Do not change prev in this case.
- }
- else
- {
- prev = cur;
- }
- cur = next;
- }
-}
-
bool emberAfIsThisDataTypeAListType(EmberAfAttributeType dataType)
{
return dataType == ZCL_ARRAY_ATTRIBUTE_TYPE;
@@ -462,10 +425,7 @@
// endpoint.
chip::app::InteractionModelEngine::GetInstance()->UnregisterCommandHandlers(definedEndpoint->endpoint);
- // Clear out any attribute access overrides registered for this
- // endpoint.
- UnregisterMatchingAttributeAccessInterfaces(
- [endpoint = definedEndpoint->endpoint](AttributeAccessInterface * entry) { return entry->MatchesEndpoint(endpoint); });
+ unregisterAllAttributeAccessOverridesForEndpoint(definedEndpoint);
}
// Calls the init functions.
@@ -1382,62 +1342,9 @@
return cluster->functions[functionIndex];
}
-bool registerAttributeAccessOverride(AttributeAccessInterface * attrOverride)
-{
- gAttributeAccessInterfaceCache.Invalidate();
- for (auto * cur = gAttributeAccessOverrides; cur; cur = cur->GetNext())
- {
- if (cur->Matches(*attrOverride))
- {
- ChipLogError(Zcl, "Duplicate attribute override registration failed");
- return false;
- }
- }
- attrOverride->SetNext(gAttributeAccessOverrides);
- gAttributeAccessOverrides = attrOverride;
- return true;
-}
-
-void unregisterAttributeAccessOverride(AttributeAccessInterface * attrOverride)
-{
- gAttributeAccessInterfaceCache.Invalidate();
- UnregisterMatchingAttributeAccessInterfaces([attrOverride](AttributeAccessInterface * entry) { return entry == attrOverride; });
-}
-
namespace chip {
namespace app {
-app::AttributeAccessInterface * GetAttributeAccessOverride(EndpointId endpointId, ClusterId clusterId)
-{
- using CacheResult = AttributeAccessInterfaceCache::CacheResult;
-
- AttributeAccessInterface * cached = nullptr;
- CacheResult result = gAttributeAccessInterfaceCache.Get(endpointId, clusterId, &cached);
- switch (result)
- {
- case CacheResult::kDefinitelyUnused:
- return nullptr;
- case CacheResult::kDefinitelyUsed:
- return cached;
- case CacheResult::kCacheMiss:
- default:
- // Did not cache yet, search set of AAI registered, and cache if found.
- for (app::AttributeAccessInterface * cur = gAttributeAccessOverrides; cur; cur = cur->GetNext())
- {
- if (cur->Matches(endpointId, clusterId))
- {
- gAttributeAccessInterfaceCache.MarkUsed(endpointId, clusterId, cur);
- return cur;
- }
- }
-
- // Did not find AAI registered: mark as definitely not using.
- gAttributeAccessInterfaceCache.MarkUnused(endpointId, clusterId);
- }
-
- return nullptr;
-}
-
CHIP_ERROR SetParentEndpointForEndpoint(EndpointId childEndpoint, EndpointId parentEndpoint)
{
uint16_t childIndex = emberAfIndexFromEndpoint(childEndpoint);
diff --git a/src/app/util/attribute-storage.h b/src/app/util/attribute-storage.h
index 013be43..b25f106 100644
--- a/src/app/util/attribute-storage.h
+++ b/src/app/util/attribute-storage.h
@@ -184,25 +184,6 @@
uint16_t emberAfFixedEndpointCount();
/**
- * Register an attribute access override. It will remain registered until the
- * endpoint it's registered for is disabled (or until shutdown if it's
- * registered for all endpoints) or until it is explicitly unregistered.
- * Registration will fail if there is an already-registered override for the
- * same set of attributes.
- *
- * @return false if there is an existing override that the new one would
- * conflict with. In this case the override is not registered.
- * @return true if registration was successful.
- */
-bool registerAttributeAccessOverride(chip::app::AttributeAccessInterface * attrOverride);
-
-/**
- * Unregister an attribute access override (for example if the object
- * implementing AttributeAccessInterface is being destroyed).
- */
-void unregisterAttributeAccessOverride(chip::app::AttributeAccessInterface * attrOverride);
-
-/**
* Get the semantic tags of the endpoint.
* Fills in the provided SemanticTagStruct with tag at index `index` if there is one,
* or returns CHIP_ERROR_NOT_FOUND if the index is out of range for the list of tag,
diff --git a/src/app/util/ember-compatibility-functions.h b/src/app/util/ember-compatibility-functions.h
index a0888ac..1a81e54 100644
--- a/src/app/util/ember-compatibility-functions.h
+++ b/src/app/util/ember-compatibility-functions.h
@@ -17,6 +17,7 @@
#include <access/SubjectDescriptor.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/ConcreteAttributePath.h>
#include <app/ConcreteCommandPath.h>
#include <app/ConcreteEventPath.h>
diff --git a/src/app/util/mock/attribute-storage.cpp b/src/app/util/mock/attribute-storage.cpp
index 7164600..cc1e192 100644
--- a/src/app/util/mock/attribute-storage.cpp
+++ b/src/app/util/mock/attribute-storage.cpp
@@ -267,11 +267,6 @@
namespace chip {
namespace app {
-AttributeAccessInterface * GetAttributeAccessOverride(EndpointId aEndpointId, ClusterId aClusterId)
-{
- return nullptr;
-}
-
EndpointId EnabledEndpointsWithServerCluster::operator*() const
{
return emberAfEndpointFromIndex(mEndpointIndex);
diff --git a/src/controller/tests/TestEventChunking.cpp b/src/controller/tests/TestEventChunking.cpp
index 74bee0f..0555e3e 100644
--- a/src/controller/tests/TestEventChunking.cpp
+++ b/src/controller/tests/TestEventChunking.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AppConfig.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/BufferedReadCallback.h>
#include <app/CommandHandlerInterface.h>
#include <app/EventLogging.h>
diff --git a/src/controller/tests/TestReadChunking.cpp b/src/controller/tests/TestReadChunking.cpp
index 1a1f9c7..1095e0f 100644
--- a/src/controller/tests/TestReadChunking.cpp
+++ b/src/controller/tests/TestReadChunking.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AppConfig.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/BufferedReadCallback.h>
#include <app/CommandHandlerInterface.h>
#include <app/GlobalAttributes.h>
diff --git a/src/controller/tests/TestWriteChunking.cpp b/src/controller/tests/TestWriteChunking.cpp
index d0555b8..2190195 100644
--- a/src/controller/tests/TestWriteChunking.cpp
+++ b/src/controller/tests/TestWriteChunking.cpp
@@ -23,6 +23,7 @@
#include <app-common/zap-generated/cluster-objects.h>
#include <app/AppConfig.h>
#include <app/AttributeAccessInterface.h>
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/CommandHandlerInterface.h>
#include <app/InteractionModelEngine.h>
#include <app/WriteClient.h>
diff --git a/src/darwin/Framework/CHIP/ServerEndpoint/MTRServerCluster.mm b/src/darwin/Framework/CHIP/ServerEndpoint/MTRServerCluster.mm
index df66ebf..dcd2f1e 100644
--- a/src/darwin/Framework/CHIP/ServerEndpoint/MTRServerCluster.mm
+++ b/src/darwin/Framework/CHIP/ServerEndpoint/MTRServerCluster.mm
@@ -35,7 +35,8 @@
#include <lib/support/SafeInt.h>
#include <protocols/interaction_model/StatusCode.h>
-// TODO: These attribute-*.h bits are a hack that should eventually go away.
+// TODO: These attribute-*.h and AttributeAccessInterfaceRegistry.h bits are a hack that should eventually go away.
+#include <app/AttributeAccessInterfaceRegistry.h>
#include <app/util/attribute-metadata.h>
#include <app/util/attribute-storage.h>
diff --git a/src/include/platform/ConnectivityManager.h b/src/include/platform/ConnectivityManager.h
index 3000248..90bab2a 100644
--- a/src/include/platform/ConnectivityManager.h
+++ b/src/include/platform/ConnectivityManager.h
@@ -24,7 +24,6 @@
#pragma once
#include <memory>
-#include <app/AttributeAccessInterface.h>
#include <app/icd/server/ICDServerConfig.h>
#include <inet/UDPEndPoint.h>
#include <lib/support/CodeUtils.h>
diff --git a/src/include/platform/ThreadStackManager.h b/src/include/platform/ThreadStackManager.h
index 540fb77..a28aea6 100644
--- a/src/include/platform/ThreadStackManager.h
+++ b/src/include/platform/ThreadStackManager.h
@@ -25,7 +25,6 @@
#include <app/icd/server/ICDServerConfig.h>
-#include <app/AttributeAccessInterface.h>
#include <app/util/basic-types.h>
#include <inet/IPAddress.h>
#include <lib/support/Span.h>
diff --git a/src/include/platform/internal/GenericConnectivityManagerImpl_NoThread.h b/src/include/platform/internal/GenericConnectivityManagerImpl_NoThread.h
index 865feb9..b8901cd 100755
--- a/src/include/platform/internal/GenericConnectivityManagerImpl_NoThread.h
+++ b/src/include/platform/internal/GenericConnectivityManagerImpl_NoThread.h
@@ -24,7 +24,6 @@
#pragma once
#include <app-common/zap-generated/ids/Attributes.h>
-#include <app/AttributeAccessInterface.h>
namespace chip {
namespace DeviceLayer {
diff --git a/src/include/platform/internal/GenericConnectivityManagerImpl_Thread.h b/src/include/platform/internal/GenericConnectivityManagerImpl_Thread.h
index f20412f..cf9a4a4 100755
--- a/src/include/platform/internal/GenericConnectivityManagerImpl_Thread.h
+++ b/src/include/platform/internal/GenericConnectivityManagerImpl_Thread.h
@@ -24,7 +24,6 @@
#pragma once
-#include <app/AttributeAccessInterface.h>
#include <app/icd/server/ICDServerConfig.h>
#include <lib/support/BitFlags.h>
#include <platform/ThreadStackManager.h>
diff --git a/src/platform/ASR/ConnectivityManagerImpl.cpp b/src/platform/ASR/ConnectivityManagerImpl.cpp
index fb023b7..2a8734e 100644
--- a/src/platform/ASR/ConnectivityManagerImpl.cpp
+++ b/src/platform/ASR/ConnectivityManagerImpl.cpp
@@ -52,7 +52,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/src/platform/Ameba/ConnectivityManagerImpl.cpp b/src/platform/Ameba/ConnectivityManagerImpl.cpp
index c72113d..6324989 100644
--- a/src/platform/Ameba/ConnectivityManagerImpl.cpp
+++ b/src/platform/Ameba/ConnectivityManagerImpl.cpp
@@ -55,7 +55,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/Beken/ConnectivityManagerImpl.cpp b/src/platform/Beken/ConnectivityManagerImpl.cpp
index 3065b1f..6adb1f8 100644
--- a/src/platform/Beken/ConnectivityManagerImpl.cpp
+++ b/src/platform/Beken/ConnectivityManagerImpl.cpp
@@ -55,7 +55,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/Darwin/ConnectivityManagerImpl.cpp b/src/platform/Darwin/ConnectivityManagerImpl.cpp
index e0a7711..a651813 100644
--- a/src/platform/Darwin/ConnectivityManagerImpl.cpp
+++ b/src/platform/Darwin/ConnectivityManagerImpl.cpp
@@ -21,8 +21,6 @@
#include <platform/ConnectivityManager.h>
#include <platform/internal/BLEManager.h>
-#include <new>
-
#include <lib/support/CodeUtils.h>
#include <lib/support/SafeInt.h>
#include <lib/support/logging/CHIPLogging.h>
@@ -51,7 +49,6 @@
#endif // TARGET_OS_OSX
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/ESP32/BLEManagerImpl.h b/src/platform/ESP32/BLEManagerImpl.h
index 5cb1421..fc946c9 100644
--- a/src/platform/ESP32/BLEManagerImpl.h
+++ b/src/platform/ESP32/BLEManagerImpl.h
@@ -30,6 +30,8 @@
#include "sdkconfig.h"
+#include <lib/core/Optional.h>
+
#if CONFIG_BT_BLUEDROID_ENABLED
#include "esp_bt.h"
diff --git a/src/platform/ESP32/ConnectivityManagerImpl.cpp b/src/platform/ESP32/ConnectivityManagerImpl.cpp
index 783ef4b..8514625 100644
--- a/src/platform/ESP32/ConnectivityManagerImpl.cpp
+++ b/src/platform/ESP32/ConnectivityManagerImpl.cpp
@@ -47,7 +47,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::app::Clusters::GeneralDiagnostics;
namespace chip {
diff --git a/src/platform/ESP32/ConnectivityManagerImpl_Ethernet.cpp b/src/platform/ESP32/ConnectivityManagerImpl_Ethernet.cpp
index b36c4b8..eacf3c4 100644
--- a/src/platform/ESP32/ConnectivityManagerImpl_Ethernet.cpp
+++ b/src/platform/ESP32/ConnectivityManagerImpl_Ethernet.cpp
@@ -43,7 +43,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using chip::DeviceLayer::Internal::ESP32Utils;
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp b/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp
index 5fefcb5..3810862 100644
--- a/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp
+++ b/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp
@@ -46,7 +46,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using chip::DeviceLayer::Internal::ESP32Utils;
namespace chip {
diff --git a/src/platform/ESP32/KeyValueStoreManagerImpl.cpp b/src/platform/ESP32/KeyValueStoreManagerImpl.cpp
index 5cd113e..6617bb2 100644
--- a/src/platform/ESP32/KeyValueStoreManagerImpl.cpp
+++ b/src/platform/ESP32/KeyValueStoreManagerImpl.cpp
@@ -24,12 +24,12 @@
#include <platform/ESP32/ScopedNvsHandle.h>
#include <platform/KeyValueStoreManager.h>
-#include <algorithm>
#include <string.h>
#include "nvs.h"
#include "nvs_flash.h"
#include <crypto/CHIPCryptoPAL.h>
+#include <lib/core/CHIPSafeCasts.h>
#include <lib/support/BytesToHex.h>
#include <lib/support/CodeUtils.h>
diff --git a/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp b/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp
index 9ac41f5..b78f6fe 100644
--- a/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp
+++ b/src/platform/Infineon/PSOC6/ConnectivityManagerImpl.cpp
@@ -55,7 +55,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Linux/ConnectivityManagerImpl.cpp b/src/platform/Linux/ConnectivityManagerImpl.cpp
index 7e7d2a1..f7edd47 100644
--- a/src/platform/Linux/ConnectivityManagerImpl.cpp
+++ b/src/platform/Linux/ConnectivityManagerImpl.cpp
@@ -67,7 +67,6 @@
#endif
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::Credentials;
using namespace ::chip::DeviceLayer;
using namespace ::chip::DeviceLayer::Internal;
diff --git a/src/platform/Linux/ThreadStackManagerImpl.cpp b/src/platform/Linux/ThreadStackManagerImpl.cpp
index 846b2db..40bd31e 100644
--- a/src/platform/Linux/ThreadStackManagerImpl.cpp
+++ b/src/platform/Linux/ThreadStackManagerImpl.cpp
@@ -18,7 +18,6 @@
#include <platform/internal/CHIPDeviceLayerInternal.h>
#include <platform/internal/DeviceNetworkInfo.h>
-#include <app/AttributeAccessInterface.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
#include <platform/GLibTypeDeleter.h>
diff --git a/src/platform/Linux/ThreadStackManagerImpl.h b/src/platform/Linux/ThreadStackManagerImpl.h
index 374108d..e9c1a82 100755
--- a/src/platform/Linux/ThreadStackManagerImpl.h
+++ b/src/platform/Linux/ThreadStackManagerImpl.h
@@ -20,7 +20,6 @@
#include <memory>
#include <vector>
-#include <app/AttributeAccessInterface.h>
#include <app/icd/server/ICDServerConfig.h>
#include <lib/support/ThreadOperationalDataset.h>
#include <platform/GLibTypeDeleter.h>
diff --git a/src/platform/Tizen/ConnectivityManagerImpl.h b/src/platform/Tizen/ConnectivityManagerImpl.h
index a22eb71..4d982ac 100644
--- a/src/platform/Tizen/ConnectivityManagerImpl.h
+++ b/src/platform/Tizen/ConnectivityManagerImpl.h
@@ -28,6 +28,8 @@
#include <system/SystemClock.h>
#include <system/SystemLayer.h>
+#include <app-common/zap-generated/cluster-enums.h>
+
#include "platform/internal/GenericConnectivityManagerImpl.h"
#include "platform/internal/GenericConnectivityManagerImpl_UDP.h"
#if INET_CONFIG_ENABLE_TCP_ENDPOINT
diff --git a/src/platform/Tizen/DiagnosticDataProviderImpl.h b/src/platform/Tizen/DiagnosticDataProviderImpl.h
index 80dd3ae..c234e23 100644
--- a/src/platform/Tizen/DiagnosticDataProviderImpl.h
+++ b/src/platform/Tizen/DiagnosticDataProviderImpl.h
@@ -24,6 +24,8 @@
#include <platform/DiagnosticDataProvider.h>
+#include <app-common/zap-generated/cluster-enums.h>
+
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/Tizen/ThreadStackManagerImpl.cpp b/src/platform/Tizen/ThreadStackManagerImpl.cpp
index f92676b..950b6ec 100644
--- a/src/platform/Tizen/ThreadStackManagerImpl.cpp
+++ b/src/platform/Tizen/ThreadStackManagerImpl.cpp
@@ -39,7 +39,6 @@
#include <thread.h>
#include <tizen_error.h>
-#include <app/AttributeAccessInterface.h>
#include <inet/IPAddress.h>
#include <lib/core/CHIPError.h>
#include <lib/core/DataModelTypes.h>
diff --git a/src/platform/Tizen/ThreadStackManagerImpl.h b/src/platform/Tizen/ThreadStackManagerImpl.h
index e4b256c..3c0206c 100644
--- a/src/platform/Tizen/ThreadStackManagerImpl.h
+++ b/src/platform/Tizen/ThreadStackManagerImpl.h
@@ -28,7 +28,6 @@
#include <thread.h>
-#include <app/AttributeAccessInterface.h>
#include <inet/IPAddress.h>
#include <lib/core/CHIPError.h>
#include <lib/core/DataModelTypes.h>
diff --git a/src/platform/Zephyr/ConnectivityManagerImpl.cpp b/src/platform/Zephyr/ConnectivityManagerImpl.cpp
index c5029f3..17cdf46 100644
--- a/src/platform/Zephyr/ConnectivityManagerImpl.cpp
+++ b/src/platform/Zephyr/ConnectivityManagerImpl.cpp
@@ -38,7 +38,6 @@
#endif
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.cpp b/src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.cpp
index 3fefcf7..5bef79b 100644
--- a/src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.cpp
+++ b/src/platform/Zephyr/wifi/ConnectivityManagerImplWiFi.cpp
@@ -29,7 +29,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/android/ConnectivityManagerImpl.cpp b/src/platform/android/ConnectivityManagerImpl.cpp
index 390cb5e..81fc070 100644
--- a/src/platform/android/ConnectivityManagerImpl.cpp
+++ b/src/platform/android/ConnectivityManagerImpl.cpp
@@ -46,7 +46,6 @@
#endif
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/bouffalolab/common/BLEManagerImpl.h b/src/platform/bouffalolab/common/BLEManagerImpl.h
index d5d571e..a0c69fe 100644
--- a/src/platform/bouffalolab/common/BLEManagerImpl.h
+++ b/src/platform/bouffalolab/common/BLEManagerImpl.h
@@ -14,11 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
#pragma once
+#include <platform/CHIPDeviceConfig.h>
+
#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
+#include <ble/BleLayer.h>
+
#include <bluetooth/bluetooth.h>
#include <bluetooth/conn.h>
#include <bluetooth/gatt.h>
diff --git a/src/platform/bouffalolab/common/ConnectivityManagerImpl.cpp b/src/platform/bouffalolab/common/ConnectivityManagerImpl.cpp
index 5679674..c6babf2 100644
--- a/src/platform/bouffalolab/common/ConnectivityManagerImpl.cpp
+++ b/src/platform/bouffalolab/common/ConnectivityManagerImpl.cpp
@@ -53,7 +53,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/cc13xx_26xx/ConnectivityManagerImpl.cpp b/src/platform/cc13xx_26xx/ConnectivityManagerImpl.cpp
index 186f7d8..c8b3b35 100644
--- a/src/platform/cc13xx_26xx/ConnectivityManagerImpl.cpp
+++ b/src/platform/cc13xx_26xx/ConnectivityManagerImpl.cpp
@@ -49,7 +49,6 @@
#include <lwip/netif.h>
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/cc32xx/ConnectivityManagerImpl.cpp b/src/platform/cc32xx/ConnectivityManagerImpl.cpp
index c42bfb4..fe629c4 100644
--- a/src/platform/cc32xx/ConnectivityManagerImpl.cpp
+++ b/src/platform/cc32xx/ConnectivityManagerImpl.cpp
@@ -62,7 +62,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
extern "C" void cc32xxLog(const char * aFormat, ...);
static struct netif * m_pNetIf = NULL;
diff --git a/src/platform/mbed/BLEManagerImpl.h b/src/platform/mbed/BLEManagerImpl.h
index e642b12..6dfb1d5 100644
--- a/src/platform/mbed/BLEManagerImpl.h
+++ b/src/platform/mbed/BLEManagerImpl.h
@@ -23,8 +23,12 @@
#pragma once
+#include <platform/CHIPDeviceConfig.h>
+
#if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
+#include <ble/BleLayer.h>
+
namespace chip {
namespace DeviceLayer {
namespace Internal {
diff --git a/src/platform/mt793x/ConnectivityManagerImpl.cpp b/src/platform/mt793x/ConnectivityManagerImpl.cpp
index e656a98..c3353c8 100644
--- a/src/platform/mt793x/ConnectivityManagerImpl.cpp
+++ b/src/platform/mt793x/ConnectivityManagerImpl.cpp
@@ -49,7 +49,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/mt793x/ConnectivityManagerImpl_WIFI.cpp b/src/platform/mt793x/ConnectivityManagerImpl_WIFI.cpp
index 5e2aa54..991223b 100644
--- a/src/platform/mt793x/ConnectivityManagerImpl_WIFI.cpp
+++ b/src/platform/mt793x/ConnectivityManagerImpl_WIFI.cpp
@@ -41,7 +41,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp b/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp
index b3bdede..92b3532 100644
--- a/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp
+++ b/src/platform/nrfconnect/wifi/ConnectivityManagerImplWiFi.cpp
@@ -29,7 +29,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
namespace chip {
namespace DeviceLayer {
diff --git a/src/platform/nxp/common/ConnectivityManagerImpl.cpp b/src/platform/nxp/common/ConnectivityManagerImpl.cpp
index 2d514dd..2753451 100644
--- a/src/platform/nxp/common/ConnectivityManagerImpl.cpp
+++ b/src/platform/nxp/common/ConnectivityManagerImpl.cpp
@@ -67,7 +67,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
using namespace ::chip::DeviceLayer::DeviceEventType;
diff --git a/src/platform/nxp/k32w/k32w0/ConnectivityManagerImpl.cpp b/src/platform/nxp/k32w/k32w0/ConnectivityManagerImpl.cpp
index 3182a87..3148917 100644
--- a/src/platform/nxp/k32w/k32w0/ConnectivityManagerImpl.cpp
+++ b/src/platform/nxp/k32w/k32w0/ConnectivityManagerImpl.cpp
@@ -48,7 +48,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/nxp/k32w/k32w1/ConnectivityManagerImpl.cpp b/src/platform/nxp/k32w/k32w1/ConnectivityManagerImpl.cpp
index 3182a87..3148917 100644
--- a/src/platform/nxp/k32w/k32w1/ConnectivityManagerImpl.cpp
+++ b/src/platform/nxp/k32w/k32w1/ConnectivityManagerImpl.cpp
@@ -48,7 +48,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp b/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp
index 93f1b18..5520eaa 100644
--- a/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp
+++ b/src/platform/nxp/mw320/ConnectivityManagerImpl.cpp
@@ -57,7 +57,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
using namespace ::chip::app::Clusters::GeneralDiagnostics;
using namespace ::chip::app::Clusters::WiFiNetworkDiagnostics;
diff --git a/src/platform/nxp/zephyr/ConnectivityManagerImpl.cpp b/src/platform/nxp/zephyr/ConnectivityManagerImpl.cpp
index 888e574..f927df2 100644
--- a/src/platform/nxp/zephyr/ConnectivityManagerImpl.cpp
+++ b/src/platform/nxp/zephyr/ConnectivityManagerImpl.cpp
@@ -38,7 +38,6 @@
#endif
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/qpg/ConnectivityManagerImpl.cpp b/src/platform/qpg/ConnectivityManagerImpl.cpp
index 0a3f507..50601c2 100644
--- a/src/platform/qpg/ConnectivityManagerImpl.cpp
+++ b/src/platform/qpg/ConnectivityManagerImpl.cpp
@@ -37,7 +37,6 @@
#include <platform/internal/BLEManager.h>
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp b/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp
index 214b097..1eb7b01 100644
--- a/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp
+++ b/src/platform/silabs/ConnectivityManagerImpl_WIFI.cpp
@@ -45,7 +45,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/silabs/efr32/ConnectivityManagerImpl.cpp b/src/platform/silabs/efr32/ConnectivityManagerImpl.cpp
index c38a5e5..e5d3b31 100644
--- a/src/platform/silabs/efr32/ConnectivityManagerImpl.cpp
+++ b/src/platform/silabs/efr32/ConnectivityManagerImpl.cpp
@@ -40,7 +40,6 @@
using namespace ::chip;
using namespace ::chip::Inet;
using namespace ::chip::System;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/stm32/ConnectivityManagerImpl.cpp b/src/platform/stm32/ConnectivityManagerImpl.cpp
index 0a3f507..50601c2 100644
--- a/src/platform/stm32/ConnectivityManagerImpl.cpp
+++ b/src/platform/stm32/ConnectivityManagerImpl.cpp
@@ -37,7 +37,6 @@
#include <platform/internal/BLEManager.h>
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/telink/ConnectivityManagerImpl.cpp b/src/platform/telink/ConnectivityManagerImpl.cpp
index 130a563..601bac3 100644
--- a/src/platform/telink/ConnectivityManagerImpl.cpp
+++ b/src/platform/telink/ConnectivityManagerImpl.cpp
@@ -38,7 +38,6 @@
#endif
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer::Internal;
namespace chip {
diff --git a/src/platform/webos/ConnectivityManagerImpl.cpp b/src/platform/webos/ConnectivityManagerImpl.cpp
index e78e5ab..e8640e1 100644
--- a/src/platform/webos/ConnectivityManagerImpl.cpp
+++ b/src/platform/webos/ConnectivityManagerImpl.cpp
@@ -65,7 +65,6 @@
#endif
using namespace ::chip;
-using namespace ::chip::TLV;
using namespace ::chip::DeviceLayer;
using namespace ::chip::DeviceLayer::Internal;
using namespace ::chip::app::Clusters::GeneralDiagnostics;
diff --git a/src/platform/webos/ThreadStackManagerImpl.cpp b/src/platform/webos/ThreadStackManagerImpl.cpp
index fdb49ce..cb538fa 100644
--- a/src/platform/webos/ThreadStackManagerImpl.cpp
+++ b/src/platform/webos/ThreadStackManagerImpl.cpp
@@ -18,7 +18,6 @@
#include <platform/internal/CHIPDeviceLayerInternal.h>
#include <platform/internal/DeviceNetworkInfo.h>
-#include <app/AttributeAccessInterface.h>
#include <lib/support/CodeUtils.h>
#include <lib/support/logging/CHIPLogging.h>
#include <platform/PlatformManager.h>
diff --git a/src/platform/webos/ThreadStackManagerImpl.h b/src/platform/webos/ThreadStackManagerImpl.h
index 59b1a8e..b102e16 100644
--- a/src/platform/webos/ThreadStackManagerImpl.h
+++ b/src/platform/webos/ThreadStackManagerImpl.h
@@ -20,7 +20,6 @@
#include <memory>
#include <vector>
-#include <app/AttributeAccessInterface.h>
#include <lib/support/ThreadOperationalDataset.h>
#include <platform/GLibTypeDeleter.h>
#include <platform/NetworkCommissioning.h>