From 24217841bcd00b0c63a5b57ef5b9815149bfbce4 Mon Sep 17 00:00:00 2001 From: Lazar Kovacic Date: Thu, 16 Dec 2021 01:41:22 +0100 Subject: [PATCH] Enable content launcher test for tv app (#12961) * Enable test and connect the logic * Zap generate files * Enabled List of Strings in java template * Run zap regen tool * Added delegate methods for attributes, updated linux and android tv app * Updated code per comments * Run zap regen * Restyle fix --- .../all-clusters-common/all-clusters-app.zap | 2 +- .../linux/include/tv-callbacks.cpp | 3 + examples/chip-tool/templates/tests.js | 1 + .../thermostat-common/thermostat.zap | 2 +- .../android/java/ContentLauncherManager.cpp | 329 +- .../android/java/ContentLauncherManager.h | 27 +- .../tcl/chip/tvapp/ContentLaunchManager.java | 4 +- .../chip/tvapp/ContentLaunchManagerStub.java | 4 +- examples/tv-app/linux/AppImpl.cpp | 2 +- .../tv-app/linux/include/cluster-init.cpp | 42 - .../ContentLauncherManager.cpp | 82 +- .../content-launcher/ContentLauncherManager.h | 17 +- examples/tv-app/linux/main.cpp | 15 +- examples/tv-app/tv-common/tv-app.zap | 6 +- examples/tv-casting-app/linux/main.cpp | 3 + .../tv-casting-common/tv-casting-app.zap | 2 +- .../content-launch-delegate.h | 64 + .../content-launch-server.cpp | 181 +- .../content-launch-server.h | 18 +- .../suites/TV_ContentLauncherCluster.yaml | 6 +- .../chip/content-launch-cluster.xml | 8 +- .../data_model/controller-clusters.zap | 2 +- .../java/templates/ClusterInfo-java.zapt | 2 +- .../java/zap-generated/CHIPCallbackTypes.h | 4 +- .../zap-generated/CHIPClustersRead-JNI.cpp | 14 +- .../java/zap-generated/CHIPReadCallbacks.cpp | 26 +- .../java/zap-generated/CHIPReadCallbacks.h | 16 +- .../chip/devicecontroller/ChipClusters.java | 10 +- .../devicecontroller/ClusterInfoMapping.java | 6 +- .../devicecontroller/ClusterReadMapping.java | 16 +- .../python/chip/clusters/CHIPClusters.py | 4 +- .../python/chip/clusters/Objects.py | 10 +- .../CHIPAttributeTLVValueDecoder.mm | 8 +- .../CHIP/zap-generated/CHIPCallbackBridge.mm | 12 +- .../CHIPCallbackBridge_internal.h | 24 +- .../CHIP/zap-generated/CHIPClustersObjc.h | 14 +- .../CHIP/zap-generated/CHIPClustersObjc.mm | 28 +- .../CHIP/zap-generated/CHIPTestClustersObjc.h | 2 +- .../zap-generated/CHIPTestClustersObjc.mm | 10 +- .../Framework/CHIPTests/CHIPClustersTests.m | 8 +- .../zap-generated/endpoint_config.h | 6 +- .../app-common/zap-generated/attribute-id.h | 2 +- .../zap-generated/cluster-objects.cpp | 4 +- .../zap-generated/cluster-objects.h | 21 +- .../app-common/zap-generated/enums.h | 4 + .../app-common/zap-generated/ids/Attributes.h | 4 +- .../zap-generated/cluster/Commands.h | 34 +- .../zap-generated/reporting/Commands.h | 3500 +++++++++++++++++ .../chip-tool/zap-generated/test/Commands.h | 211 + .../zap-generated/CHIPClientCallbacks.cpp | 10 +- .../zap-generated/CHIPClientCallbacks.h | 10 +- .../tv-app/zap-generated/attribute-size.cpp | 18 +- .../tv-app/zap-generated/endpoint_config.h | 18 +- .../zap-generated/attribute-size.cpp | 18 +- .../zap-generated/endpoint_config.h | 6 +- 55 files changed, 4351 insertions(+), 549 deletions(-) create mode 100644 src/app/clusters/content-launch-server/content-launch-delegate.h create mode 100644 zzz_generated/chip-tool/zap-generated/reporting/Commands.h 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 8a9a1208d23873..03dc97c466e1aa 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 @@ -14460,7 +14460,7 @@ ], "attributes": [ { - "name": "accepts header list", + "name": "accept header list", "code": 0, "mfgCode": null, "side": "server", diff --git a/examples/all-clusters-app/linux/include/tv-callbacks.cpp b/examples/all-clusters-app/linux/include/tv-callbacks.cpp index 79a6ee8413daac..917c3f0548cf1a 100644 --- a/examples/all-clusters-app/linux/include/tv-callbacks.cpp +++ b/examples/all-clusters-app/linux/include/tv-callbacks.cpp @@ -22,6 +22,9 @@ ******************************************************************************* ******************************************************************************/ +#include +#include + bool lowPowerClusterSleep() { return true; diff --git a/examples/chip-tool/templates/tests.js b/examples/chip-tool/templates/tests.js index 12ba90c3e99995..148577836863a4 100644 --- a/examples/chip-tool/templates/tests.js +++ b/examples/chip-tool/templates/tests.js @@ -173,6 +173,7 @@ function getTests() 'TV_MediaPlaybackCluster', 'TV_TvChannelCluster', 'TV_LowPowerCluster', + 'TV_ContentLauncherCluster', 'TV_MediaInputCluster', ]; diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap index a1bd8303bfdeee..0cdb8d71369ba0 100644 --- a/examples/thermostat/thermostat-common/thermostat.zap +++ b/examples/thermostat/thermostat-common/thermostat.zap @@ -13120,7 +13120,7 @@ ], "attributes": [ { - "name": "accepts header list", + "name": "accept header list", "code": 0, "mfgCode": null, "side": "server", diff --git a/examples/tv-app/android/java/ContentLauncherManager.cpp b/examples/tv-app/android/java/ContentLauncherManager.cpp index 9f7233f50c961b..984e9631861860 100644 --- a/examples/tv-app/android/java/ContentLauncherManager.cpp +++ b/examples/tv-app/android/java/ContentLauncherManager.cpp @@ -45,206 +45,9 @@ using namespace chip; ContentLauncherManager ContentLauncherManager::sInstance; -namespace { - -class ContentLauncherAttrAccess : public app::AttributeAccessInterface -{ -public: - ContentLauncherAttrAccess() : app::AttributeAccessInterface(Optional::Missing(), app::Clusters::ContentLauncher::Id) - {} - - CHIP_ERROR Read(const app::ConcreteReadAttributePath & aPath, app::AttributeValueEncoder & aEncoder) override - { - if (aPath.mAttributeId == app::Clusters::ContentLauncher::Attributes::AcceptsHeaderList::Id) - { - return ContentLauncherMgr().GetAcceptsHeader(aEncoder); - } - else if (aPath.mAttributeId == app::Clusters::ContentLauncher::Attributes::SupportedStreamingProtocols::Id) - { - return ContentLauncherMgr().GetSupportedStreamingTypes(aEncoder); - } - - return CHIP_NO_ERROR; - } -}; - -ContentLauncherAttrAccess gContentLauncherAttrAccess; - -} // anonymous namespace - -/** @brief Content Launch Cluster Init - * - * This function is called when a specific cluster is initialized. It gives the - * application an opportunity to take care of cluster initialization procedures. - * It is called exactly once for each endpoint where cluster is present. - * - * @param endpoint Ver.: always - * - */ -void emberAfContentLauncherClusterInitCallback(EndpointId endpoint) -{ - static bool attrAccessRegistered = false; - if (!attrAccessRegistered) - { - registerAttributeAccessOverride(&gContentLauncherAttrAccess); - attrAccessRegistered = true; - } -} - -ContentLaunchResponse contentLauncherClusterLaunchContent(chip::EndpointId endpointId, - std::list parameterList, bool autoplay, - const chip::CharSpan & data) -{ - return ContentLauncherMgr().LaunchContent(endpointId, parameterList, autoplay, data); -} - -ContentLaunchResponse contentLauncherClusterLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, - ContentLaunchBrandingInformation & brandingInformation) -{ - return ContentLauncherMgr().LaunchUrl(contentUrl, displayString, brandingInformation); -} - -void ContentLauncherManager::InitializeWithObjects(jobject managerObject) -{ - JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); - VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Failed to GetEnvForCurrentThread for ContentLauncherManager")); - - mContentLauncherManagerObject = env->NewGlobalRef(managerObject); - VerifyOrReturn(mContentLauncherManagerObject != nullptr, ChipLogError(Zcl, "Failed to NewGlobalRef ContentLauncherManager")); - - jclass ContentLauncherClass = env->GetObjectClass(managerObject); - VerifyOrReturn(ContentLauncherClass != nullptr, ChipLogError(Zcl, "Failed to get ContentLauncherManager Java class")); - - mGetAcceptsHeaderMethod = env->GetMethodID(ContentLauncherClass, "getAcceptsHeader", "()[Ljava/lang/String;"); - if (mGetAcceptsHeaderMethod == nullptr) - { - ChipLogError(Zcl, "Failed to access MediaInputManager 'getInputList' method"); - env->ExceptionClear(); - } - - mGetSupportedStreamingTypesMethod = env->GetMethodID(ContentLauncherClass, "getSupportedStreamingTypes", "()[I"); - if (mGetSupportedStreamingTypesMethod == nullptr) - { - ChipLogError(Zcl, "Failed to access MediaInputManager 'getSupportedStreamingTypes' method"); - env->ExceptionClear(); - } - - mLaunchContentMethod = env->GetMethodID( - ContentLauncherClass, "launchContent", - "([Lcom/tcl/chip/tvapp/ContentLaunchSearchParameter;ZLjava/lang/String;)Lcom/tcl/chip/tvapp/ContentLaunchResponse;"); - if (mLaunchContentMethod == nullptr) - { - ChipLogError(Zcl, "Failed to access MediaInputManager 'launchContent' method"); - env->ExceptionClear(); - } - - mLaunchUrlMethod = env->GetMethodID(ContentLauncherClass, "launchUrl", - "(Ljava/lang/String;Ljava/lang/String;Lcom/tcl/chip/tvapp/" - "ContentLaunchBrandingInformation;)Lcom/tcl/chip/tvapp/ContentLaunchResponse;"); - if (mLaunchUrlMethod == nullptr) - { - ChipLogError(AppServer, "Failed to access 'launchUrl' method"); - env->ExceptionClear(); - } -} - -CHIP_ERROR ContentLauncherManager::GetAcceptsHeader(chip::app::AttributeValueEncoder & aEncoder) -{ - CHIP_ERROR err = CHIP_NO_ERROR; - JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); - - ChipLogProgress(Zcl, "Received ContentLauncherManager::GetAcceptsHeader"); - VerifyOrExit(mContentLauncherManagerObject != nullptr, err = CHIP_ERROR_INCORRECT_STATE); - VerifyOrExit(mGetAcceptsHeaderMethod != nullptr, err = CHIP_ERROR_INCORRECT_STATE); - VerifyOrExit(env != NULL, err = CHIP_JNI_ERROR_NO_ENV); - - return aEncoder.EncodeList([this, env](const auto & encoder) -> CHIP_ERROR { - jobjectArray headersArray = (jobjectArray) env->CallObjectMethod(mContentLauncherManagerObject, mGetAcceptsHeaderMethod); - if (env->ExceptionCheck()) - { - ChipLogError(Zcl, "Java exception in ContentLauncherManager::GetAcceptsHeader"); - env->ExceptionDescribe(); - env->ExceptionClear(); - return CHIP_ERROR_INCORRECT_STATE; - } - - jint size = env->GetArrayLength(headersArray); - for (int i = 0; i < size; i++) - { - jstring acceptsheader = (jstring) env->GetObjectArrayElement(headersArray, i); - if (acceptsheader != nullptr) - { - JniUtfString header(env, acceptsheader); - - chip::ByteSpan bHeader((const uint8_t *) (header.c_str()), (size_t)(header.size())); - ReturnErrorOnFailure(encoder.Encode(bHeader)); - - // Todo: should be chanSpan? - // ReturnErrorOnFailure(encoder.Encode(header.charSpan())); - } - } - - return CHIP_NO_ERROR; - }); - -exit: - if (err != CHIP_NO_ERROR) - { - ChipLogError(Zcl, "ContentLauncherManager::GetAcceptsHeader status error: %s", err.AsString()); - } - - return err; -} - -CHIP_ERROR ContentLauncherManager::GetSupportedStreamingTypes(chip::app::AttributeValueEncoder & aEncoder) -{ - CHIP_ERROR err = CHIP_NO_ERROR; - JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); - - ChipLogProgress(Zcl, "Received ContentLauncherManager::GetSupportedStreamingTypes"); - VerifyOrExit(mContentLauncherManagerObject != nullptr, err = CHIP_ERROR_INCORRECT_STATE); - VerifyOrExit(mGetSupportedStreamingTypesMethod != nullptr, err = CHIP_ERROR_INCORRECT_STATE); - VerifyOrExit(env != NULL, err = CHIP_JNI_ERROR_NO_ENV); - - return aEncoder.EncodeList([this, env](const auto & encoder) -> CHIP_ERROR { - jintArray typesArray = (jintArray) env->CallObjectMethod(mContentLauncherManagerObject, mGetSupportedStreamingTypesMethod); - if (env->ExceptionCheck()) - { - ChipLogError(Zcl, "Java exception in ContentLauncherManager::GetSupportedStreamingTypes"); - env->ExceptionDescribe(); - env->ExceptionClear(); - return CHIP_ERROR_INCORRECT_STATE; - } - - jboolean isCopy = JNI_FALSE; - jint * ptypes = env->GetIntArrayElements(typesArray, &isCopy); - jint size = env->GetArrayLength(typesArray); - - CHIP_ERROR err = CHIP_NO_ERROR; - for (int i = 0; i < size; i++) - { - err = encoder.Encode(static_cast(ptypes[i])); - if (err != CHIP_NO_ERROR) - { - break; - } - } - env->ReleaseIntArrayElements(typesArray, ptypes, 0); - return err; - }); - -exit: - if (err != CHIP_NO_ERROR) - { - ChipLogError(Zcl, "ContentLauncherManager::GetAcceptsHeader status error: %s", err.AsString()); - } - - return err; -} - -ContentLaunchResponse ContentLauncherManager::LaunchContent(chip::EndpointId endpointId, - std::list parameterList, bool autoplay, - const chip::CharSpan & data) +ContentLaunchResponse ContentLauncherManager::HandleLaunchContent(chip::EndpointId endpointId, + const std::list & parameterList, + bool autoplay, const chip::CharSpan & data) { ContentLaunchResponse response; CHIP_ERROR err = CHIP_NO_ERROR; @@ -297,8 +100,9 @@ ContentLaunchResponse ContentLauncherManager::LaunchContent(chip::EndpointId end return response; } -ContentLaunchResponse ContentLauncherManager::LaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, - ContentLaunchBrandingInformation & brandingInformation) +ContentLaunchResponse +ContentLauncherManager::HandleLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, + const std::list & brandingInformation) { ContentLaunchResponse response; CHIP_ERROR err = CHIP_NO_ERROR; @@ -351,3 +155,124 @@ ContentLaunchResponse ContentLauncherManager::LaunchUrl(const chip::CharSpan & c return response; } + +std::list ContentLauncherManager::HandleGetAcceptHeaderList() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); + std::list acceptedHeadersList; + + ChipLogProgress(Zcl, "Received ContentLauncherManager::GetAcceptHeader"); + VerifyOrExit(mContentLauncherManagerObject != nullptr, err = CHIP_ERROR_INCORRECT_STATE); + VerifyOrExit(mGetAcceptHeaderMethod != nullptr, err = CHIP_ERROR_INCORRECT_STATE); + VerifyOrExit(env != NULL, err = CHIP_JNI_ERROR_NO_ENV); + + { + jobjectArray acceptedHeadersArray = + (jobjectArray) env->CallObjectMethod(mContentLauncherManagerObject, mGetAcceptHeaderMethod); + if (env->ExceptionCheck()) + { + ChipLogError(Zcl, "Java exception in ContentLauncherManager::GetAcceptHeader"); + env->ExceptionDescribe(); + env->ExceptionClear(); + err = CHIP_ERROR_INCORRECT_STATE; + goto exit; + } + + jint size = env->GetArrayLength(acceptedHeadersArray); + for (int i = 0; i < size; i++) + { + + jstring jAcceptedHeader = (jstring) env->GetObjectArrayElement(acceptedHeadersArray, i); + const char * convertedValue = (env)->GetStringUTFChars(jAcceptedHeader, JNI_FALSE); + std::string acceptedHeader = std::string(convertedValue, strlen(convertedValue)); + acceptedHeadersList.push_front(acceptedHeader); + } + } + +exit: + if (err != CHIP_NO_ERROR) + { + ChipLogError(Zcl, "ContentLauncherManager::GetAcceptHeader status error: %s", err.AsString()); + } + + return acceptedHeadersList; +} + +uint32_t ContentLauncherManager::HandleGetSupportedStreamingProtocols() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); + uint32_t supportedStreamingProtocols = 0; + + ChipLogProgress(Zcl, "Received ContentLauncherManager::GetSupportedStreamingProtocols"); + VerifyOrExit(mContentLauncherManagerObject != nullptr, err = CHIP_ERROR_INCORRECT_STATE); + VerifyOrExit(mGetSupportedStreamingProtocolsMethod != nullptr, err = CHIP_ERROR_INCORRECT_STATE); + VerifyOrExit(env != NULL, err = CHIP_JNI_ERROR_NO_ENV); + + { + jint jSupportedStreamingProtocols = + env->CallIntMethod(mContentLauncherManagerObject, mGetSupportedStreamingProtocolsMethod); + supportedStreamingProtocols = (uint32_t) jSupportedStreamingProtocols; + if (env->ExceptionCheck()) + { + ChipLogError(Zcl, "Java exception in ContentLauncherManager::GetAcceptHeader"); + env->ExceptionDescribe(); + env->ExceptionClear(); + err = CHIP_ERROR_INCORRECT_STATE; + goto exit; + } + } + +exit: + if (err != CHIP_NO_ERROR) + { + ChipLogError(Zcl, "ContentLauncherManager::GetSupportedStreamingProtocols status error: %s", err.AsString()); + } + + return supportedStreamingProtocols; +} + +void ContentLauncherManager::InitializeWithObjects(jobject managerObject) +{ + JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread(); + VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Failed to GetEnvForCurrentThread for ContentLauncherManager")); + + mContentLauncherManagerObject = env->NewGlobalRef(managerObject); + VerifyOrReturn(mContentLauncherManagerObject != nullptr, ChipLogError(Zcl, "Failed to NewGlobalRef ContentLauncherManager")); + + jclass ContentLauncherClass = env->GetObjectClass(managerObject); + VerifyOrReturn(ContentLauncherClass != nullptr, ChipLogError(Zcl, "Failed to get ContentLauncherManager Java class")); + + mGetAcceptHeaderMethod = env->GetMethodID(ContentLauncherClass, "getAcceptHeader", "()[Ljava/lang/String;"); + if (mGetAcceptHeaderMethod == nullptr) + { + ChipLogError(Zcl, "Failed to access MediaInputManager 'getInputList' method"); + env->ExceptionClear(); + } + + mGetSupportedStreamingProtocolsMethod = env->GetMethodID(ContentLauncherClass, "getSupportedStreamingProtocols", "()[I"); + if (mGetSupportedStreamingProtocolsMethod == nullptr) + { + ChipLogError(Zcl, "Failed to access MediaInputManager 'getSupportedStreamingProtocols' method"); + env->ExceptionClear(); + } + + mLaunchContentMethod = env->GetMethodID( + ContentLauncherClass, "launchContent", + "([Lcom/tcl/chip/tvapp/ContentLaunchSearchParameter;ZLjava/lang/String;)Lcom/tcl/chip/tvapp/ContentLaunchResponse;"); + if (mLaunchContentMethod == nullptr) + { + ChipLogError(Zcl, "Failed to access MediaInputManager 'launchContent' method"); + env->ExceptionClear(); + } + + mLaunchUrlMethod = env->GetMethodID(ContentLauncherClass, "launchUrl", + "(Ljava/lang/String;Ljava/lang/String;Lcom/tcl/chip/tvapp/" + "ContentLaunchBrandingInformation;)Lcom/tcl/chip/tvapp/ContentLaunchResponse;"); + if (mLaunchUrlMethod == nullptr) + { + ChipLogError(AppServer, "Failed to access 'launchUrl' method"); + env->ExceptionClear(); + } +} diff --git a/examples/tv-app/android/java/ContentLauncherManager.h b/examples/tv-app/android/java/ContentLauncherManager.h index 01b843530a2e77..4a7345ef51bb1e 100644 --- a/examples/tv-app/android/java/ContentLauncherManager.h +++ b/examples/tv-app/android/java/ContentLauncherManager.h @@ -21,31 +21,32 @@ #include #include -#include +#include #include #include #include -class ContentLauncherManager +class ContentLauncherManager : public chip::app::Clusters::ContentLauncher::Delegate { public: void InitializeWithObjects(jobject managerObject); - CHIP_ERROR GetAcceptsHeader(chip::app::AttributeValueEncoder & aEncoder); - CHIP_ERROR GetSupportedStreamingTypes(chip::app::AttributeValueEncoder & aEncoder); - ContentLaunchResponse LaunchContent(chip::EndpointId endpointId, std::list parameterList, bool autoplay, - const chip::CharSpan & data); - ContentLaunchResponse LaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, - ContentLaunchBrandingInformation & brandingInformation); + + ContentLaunchResponse HandleLaunchContent(chip::EndpointId endpointId, const std::list & parameterList, + bool autoplay, const chip::CharSpan & data) override; + ContentLaunchResponse HandleLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, + const std::list & brandingInformation) override; + std::list HandleGetAcceptHeaderList() override; + uint32_t HandleGetSupportedStreamingProtocols() override; private: friend ContentLauncherManager & ContentLauncherMgr(); static ContentLauncherManager sInstance; - jobject mContentLauncherManagerObject = nullptr; - jmethodID mGetAcceptsHeaderMethod = nullptr; - jmethodID mGetSupportedStreamingTypesMethod = nullptr; - jmethodID mLaunchContentMethod = nullptr; - jmethodID mLaunchUrlMethod = nullptr; + jobject mContentLauncherManagerObject = nullptr; + jmethodID mGetAcceptHeaderMethod = nullptr; + jmethodID mGetSupportedStreamingProtocolsMethod = nullptr; + jmethodID mLaunchContentMethod = nullptr; + jmethodID mLaunchUrlMethod = nullptr; }; inline ContentLauncherManager & ContentLauncherMgr() diff --git a/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManager.java b/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManager.java index ba8b209ad1e709..fe50a7a8420d0d 100755 --- a/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManager.java +++ b/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManager.java @@ -27,10 +27,10 @@ public interface ContentLaunchManager { * @return The list of content types supported by the Video Player or Content App in the form of * entries in the HTTP "Accept" request header. */ - String[] getAcceptsHeader(); + String[] getAcceptHeader(); /** @return The list information about supported streaming protocols in STREAMING_TYPE_XXX. */ - int[] getSupportedStreamingTypes(); + int[] getSupportedStreamingProtocols(); /** * Launch the specified content with optional search criteria. diff --git a/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManagerStub.java b/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManagerStub.java index cf95fa807b31a3..347b670cc58acf 100644 --- a/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManagerStub.java +++ b/examples/tv-app/android/java/src/com/tcl/chip/tvapp/ContentLaunchManagerStub.java @@ -7,7 +7,7 @@ public class ContentLaunchManagerStub implements ContentLaunchManager { private final String TAG = ContentLaunchManagerStub.class.getSimpleName(); @Override - public String[] getAcceptsHeader() { + public String[] getAcceptHeader() { String[] headers = new String[] { "application/dash+xml", "application/vnd.apple.mpegurl", "text/html", @@ -17,7 +17,7 @@ public String[] getAcceptsHeader() { } @Override - public int[] getSupportedStreamingTypes() { + public int[] getSupportedStreamingProtocols() { int[] types = new int[] {STREAMING_TYPE_DASH, STREAMING_TYPE_HLS}; return types; } diff --git a/examples/tv-app/linux/AppImpl.cpp b/examples/tv-app/linux/AppImpl.cpp index 6b667967bf28ac..437cb7379527a1 100644 --- a/examples/tv-app/linux/AppImpl.cpp +++ b/examples/tv-app/linux/AppImpl.cpp @@ -103,7 +103,7 @@ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END(); // Declare Content Launcher cluster attributes DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN(contentLauncherAttrs) -DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, +DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CONTENT_LAUNCHER_ACCEPT_HEADER_ATTRIBUTE_ID, ARRAY, kDescriptorAttributeArraySize, 0), /* accept header list */ DECLARE_DYNAMIC_ATTRIBUTE(ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_PROTOCOLS_ATTRIBUTE_ID, BITMAP32, 1, 0), /* streaming protocols */ diff --git a/examples/tv-app/linux/include/cluster-init.cpp b/examples/tv-app/linux/include/cluster-init.cpp index 8ec354664ee23c..54d6b1dab412a0 100644 --- a/examples/tv-app/linux/include/cluster-init.cpp +++ b/examples/tv-app/linux/include/cluster-init.cpp @@ -189,48 +189,6 @@ void emberAfAudioOutputClusterInitCallback(EndpointId endpoint) namespace { -class ContentLauncherAttrAccess : public app::AttributeAccessInterface -{ -public: - ContentLauncherAttrAccess() : app::AttributeAccessInterface(Optional::Missing(), app::Clusters::ContentLauncher::Id) - {} - - CHIP_ERROR Read(const app::ConcreteReadAttributePath & aPath, app::AttributeValueEncoder & aEncoder) override - { - if (aPath.mAttributeId == app::Clusters::ContentLauncher::Attributes::AcceptsHeaderList::Id) - { - return ContentLauncherManager().proxyGetAcceptsHeader(aEncoder); - } - - return CHIP_NO_ERROR; - } -}; - -ContentLauncherAttrAccess gContentLauncherAttrAccess; - -} // anonymous namespace - -/** @brief Content Launch Cluster Init - * - * This function is called when a specific cluster is initialized. It gives the - * application an opportunity to take care of cluster initialization procedures. - * It is called exactly once for each endpoint where cluster is present. - * - * @param endpoint Ver.: always - * - */ -void emberAfContentLauncherClusterInitCallback(EndpointId endpoint) -{ - static bool attrAccessRegistered = false; - if (!attrAccessRegistered) - { - registerAttributeAccessOverride(&gContentLauncherAttrAccess); - attrAccessRegistered = true; - } -} - -namespace { - TvAttrAccess gMediaInputAttrAccess; diff --git a/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.cpp b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.cpp index 0bb0a9df4e3c1b..17e5d5ef8d4080 100644 --- a/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.cpp +++ b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.cpp @@ -38,91 +38,55 @@ using namespace std; using namespace chip::AppPlatform; -CHIP_ERROR ContentLauncherManager::Init() +ContentLaunchResponse ContentLauncherManager::HandleLaunchContent(chip::EndpointId endpointId, + const std::list & parameterList, + bool autoplay, const chip::CharSpan & data) { - CHIP_ERROR err = CHIP_NO_ERROR; - - // TODO: Store feature map once it is supported - map featureMap; - featureMap["CS"] = true; - featureMap["UP"] = true; - featureMap["WA"] = true; - - SuccessOrExit(err); -exit: - return err; -} - -CHIP_ERROR ContentLauncherManager::proxyGetAcceptsHeader(chip::app::AttributeValueEncoder & aEncoder) -{ - ChipLogProgress(Zcl, "ContentLauncherManager::proxyGetAcceptsHeader "); - return aEncoder.EncodeList([](const auto & encoder) -> CHIP_ERROR { - std::list headerExample = { "image/*", "video/*" }; - - for (string entry : headerExample) - { - ReturnErrorOnFailure(encoder.Encode(chip::CharSpan(entry.c_str(), entry.length()))); - } - return CHIP_NO_ERROR; - }); -} - -CHIP_ERROR ContentLauncherManager::proxyGetSupportedStreamingTypes(chip::app::AttributeValueEncoder & aEncoder) -{ - ChipLogProgress(Zcl, "ContentLauncherManager::proxyGetSupportedStreamingTypes "); - return aEncoder.EncodeList([](const auto & encoder) -> CHIP_ERROR { - // ReturnErrorOnFailure(encoder.Encode(EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH)); - // ReturnErrorOnFailure(encoder.Encode(EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS)); - return CHIP_NO_ERROR; - }); -} - -ContentLaunchResponse ContentLauncherManager::proxyLaunchContentRequest(chip::EndpointId endpointId, - list parameterList, bool autoplay, - string data) -{ - ChipLogProgress(Zcl, "ContentLauncherManager::proxyLaunchContentRequest endpoint=%d", endpointId); + ChipLogProgress(Zcl, "ContentLauncherManager::HandleLaunchContent "); + string dataString(data.data(), data.size()); #if CHIP_DEVICE_CONFIG_APP_PLATFORM_ENABLED ContentApp * app = chip::AppPlatform::AppPlatform::GetInstance().GetContentAppByEndpointId(endpointId); if (app != NULL) { - return app->GetContentLauncher()->LaunchContent(parameterList, autoplay, data); + return app->GetContentLauncher()->LaunchContent(parameterList, autoplay, dataString); } #endif // CHIP_DEVICE_CONFIG_APP_PLATFORM_ENABLED // TODO: Insert code here ContentLaunchResponse response; response.err = CHIP_NO_ERROR; - response.data = "Example data"; + response.data = chip::CharSpan("exampleData", strlen("exampleData")); response.status = EMBER_ZCL_CONTENT_LAUNCH_STATUS_SUCCESS; return response; } -ContentLaunchResponse ContentLauncherManager::proxyLaunchUrlRequest(string contentUrl, string displayString, - ContentLaunchBrandingInformation brandingInformation) + +ContentLaunchResponse +ContentLauncherManager::HandleLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, + const std::list & brandingInformation) { - ChipLogProgress(Zcl, "ContentLauncherManager::proxyLaunchUrlRequest contentUrl=%s ", contentUrl.c_str()); + ChipLogProgress(Zcl, "ContentLauncherManager::HandleLaunchUrl"); + + string contentUrlString(contentUrl.data(), contentUrl.size()); + string displayStringString(displayString.data(), displayString.size()); // TODO: Insert code here ContentLaunchResponse response; response.err = CHIP_NO_ERROR; - response.data = "Example data"; + response.data = chip::CharSpan("exampleData", strlen("exampleData")); response.status = EMBER_ZCL_CONTENT_LAUNCH_STATUS_SUCCESS; return response; } -ContentLaunchResponse contentLauncherClusterLaunchContent(chip::EndpointId endpointId, - std::list parameterList, bool autoplay, - const chip::CharSpan & data) +std::list ContentLauncherManager::HandleGetAcceptHeaderList() { - string dataString(data.data(), data.size()); - return ContentLauncherManager().proxyLaunchContentRequest(endpointId, parameterList, autoplay, dataString); + ChipLogProgress(Zcl, "ContentLauncherManager::HandleGetAcceptHeaderList"); + return { "example", "example" }; } -ContentLaunchResponse contentLauncherClusterLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, - ContentLaunchBrandingInformation & brandingInformation) +uint32_t ContentLauncherManager::HandleGetSupportedStreamingProtocols() { - string contentUrlString(contentUrl.data(), contentUrl.size()); - string displayStringString(displayString.data(), displayString.size()); - return ContentLauncherManager().proxyLaunchUrlRequest(contentUrlString, displayStringString, brandingInformation); + ChipLogProgress(Zcl, "ContentLauncherManager::HandleGetSupportedStreamingProtocols"); + uint32_t streamingProtocols = 0; + return streamingProtocols; } diff --git a/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.h b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.h index aedeb2cc134b98..8ca6981e46591f 100644 --- a/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.h +++ b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.h @@ -20,21 +20,20 @@ #include #include -#include +#include #include #include #include #include -class ContentLauncherManager +class ContentLauncherManager : public chip::app::Clusters::ContentLauncher::Delegate { public: - CHIP_ERROR Init(); - CHIP_ERROR proxyGetAcceptsHeader(chip::app::AttributeValueEncoder & aEncoder); - CHIP_ERROR proxyGetSupportedStreamingTypes(chip::app::AttributeValueEncoder & aEncoder); - ContentLaunchResponse proxyLaunchContentRequest(chip::EndpointId endpointId, std::list parameterList, - bool autoplay, std::string data); - ContentLaunchResponse proxyLaunchUrlRequest(std::string contentUrl, std::string displayString, - ContentLaunchBrandingInformation brandingInformation); + ContentLaunchResponse HandleLaunchContent(chip::EndpointId endpointId, const std::list & parameterList, + bool autoplay, const chip::CharSpan & data) override; + ContentLaunchResponse HandleLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, + const std::list & brandingInformation) override; + std::list HandleGetAcceptHeaderList() override; + uint32_t HandleGetSupportedStreamingProtocols() override; }; diff --git a/examples/tv-app/linux/main.cpp b/examples/tv-app/linux/main.cpp index 35ca1a8d5fabf2..1aa352d280a00a 100644 --- a/examples/tv-app/linux/main.cpp +++ b/examples/tv-app/linux/main.cpp @@ -52,6 +52,11 @@ bool emberAfBasicClusterMfgSpecificPingCallback(chip::app::CommandHandler * comm return true; } +namespace { +static ContentLauncherManager contentLauncherManager; +constexpr chip::EndpointId kContentLauncherEndpoint = 1; +} // namespace + int main(int argc, char * argv[]) { CHIP_ERROR err = CHIP_NO_ERROR; @@ -72,10 +77,6 @@ int main(int argc, char * argv[]) err = AudioOutputManager().Init(); SuccessOrExit(err); - // Init Content Launcher Manager - err = ContentLauncherManager().Init(); - SuccessOrExit(err); - // Init Media Input Manager err = MediaInputManager().Init(); SuccessOrExit(err); @@ -115,3 +116,9 @@ int main(int argc, char * argv[]) } return 0; } + +void emberAfContentLauncherClusterInitCallback(EndpointId endpoint) +{ + ChipLogProgress(Zcl, "TV Linux App: ContentLauncherManager::SetDelegate"); + chip::app::Clusters::ContentLauncher::SetDelegate(kContentLauncherEndpoint, &contentLauncherManager); +} diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap index 17333d3c8e2cbe..e513682c2951b4 100644 --- a/examples/tv-app/tv-common/tv-app.zap +++ b/examples/tv-app/tv-common/tv-app.zap @@ -7491,7 +7491,7 @@ ], "attributes": [ { - "name": "accepts header list", + "name": "accept header list", "code": 0, "mfgCode": null, "side": "server", @@ -9209,7 +9209,7 @@ ], "attributes": [ { - "name": "accepts header list", + "name": "accept header list", "code": 0, "mfgCode": null, "side": "server", @@ -9682,7 +9682,7 @@ ], "attributes": [ { - "name": "accepts header list", + "name": "accept header list", "code": 0, "mfgCode": null, "side": "server", diff --git a/examples/tv-casting-app/linux/main.cpp b/examples/tv-casting-app/linux/main.cpp index 7cd5934347e967..2aee5c5b3422ba 100644 --- a/examples/tv-casting-app/linux/main.cpp +++ b/examples/tv-casting-app/linux/main.cpp @@ -30,6 +30,9 @@ #include #include +#include +#include + using namespace chip; using namespace chip::Controller; using namespace chip::Credentials; 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 549958969f00ea..25e30e2dc6c026 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 @@ -12526,7 +12526,7 @@ ], "attributes": [ { - "name": "accepts header list", + "name": "accept header list", "code": 0, "mfgCode": null, "side": "server", diff --git a/src/app/clusters/content-launch-server/content-launch-delegate.h b/src/app/clusters/content-launch-server/content-launch-delegate.h new file mode 100644 index 00000000000000..9974b2c2bde0b4 --- /dev/null +++ b/src/app/clusters/content-launch-server/content-launch-delegate.h @@ -0,0 +1,64 @@ +/* + * + * 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 +#include +#include + +struct ContentLaunchResponse +{ + CHIP_ERROR err; + chip::CharSpan data; + chip::app::Clusters::ContentLauncher::ContentLaunchStatus status; +}; + +namespace chip { +namespace app { +namespace Clusters { +namespace ContentLauncher { + +/** @brief + * Defines methods for implementing application-specific logic for the Content Launcher Cluster. + */ +class Delegate +{ +public: + virtual ContentLaunchResponse HandleLaunchContent(chip::EndpointId endpointId, + const std::list & parameterList, bool autoplay, + const chip::CharSpan & data) = 0; + + virtual ContentLaunchResponse HandleLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, + const std::list & brandingInformation) = 0; + + virtual std::list HandleGetAcceptHeaderList() = 0; + + virtual uint32_t HandleGetSupportedStreamingProtocols() = 0; + + virtual ~Delegate() = default; +}; + +} // namespace ContentLauncher +} // namespace Clusters +} // namespace app +} // namespace chip 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 c9b5bb5e9f94e3..9fe7e6a93806fc 100644 --- a/src/app/clusters/content-launch-server/content-launch-server.cpp +++ b/src/app/clusters/content-launch-server/content-launch-server.cpp @@ -39,19 +39,140 @@ ******************************************************************************/ #include "content-launch-server.h" + #include +#include +#include + +#include #include +#include +#include #include +#include #include using namespace chip; +using namespace chip::app; + +// ----------------------------------------------------------------------------- +// Delegate Implementation + +using chip::app::Clusters::ContentLauncher::Delegate; + +namespace { + +Delegate * gDelegateTable[EMBER_AF_CONTENT_LAUNCH_CLUSTER_SERVER_ENDPOINT_COUNT] = { nullptr }; + +Delegate * GetDelegate(EndpointId endpoint) +{ + uint16_t ep = emberAfFindClusterServerEndpointIndex(endpoint, chip::app::Clusters::ContentLauncher::Id); + return (ep == 0xFFFF ? NULL : gDelegateTable[ep]); +} + +bool isDelegateNull(Delegate * delegate, EndpointId endpoint) +{ + if (delegate == nullptr) + { + ChipLogError(Zcl, "Content Launcher has no delegate set for endpoint:%" PRIu16, endpoint); + return true; + } + return false; +} +} // namespace + +namespace chip { +namespace app { +namespace Clusters { +namespace ContentLauncher { + +void SetDelegate(EndpointId endpoint, Delegate * delegate) +{ + uint16_t ep = emberAfFindClusterServerEndpointIndex(endpoint, chip::app::Clusters::ContentLauncher::Id); + if (ep != 0xFFFF) + { + gDelegateTable[ep] = delegate; + } + else + { + } +} + +} // namespace ContentLauncher +} // namespace Clusters +} // namespace app +} // namespace chip + +// ----------------------------------------------------------------------------- +// Attribute Accessor Implementation + +namespace { + +class ContentLauncherAttrAccess : public app::AttributeAccessInterface +{ +public: + ContentLauncherAttrAccess() : + app::AttributeAccessInterface(Optional::Missing(), chip::app::Clusters::ContentLauncher::Id) + {} + + CHIP_ERROR Read(const app::ConcreteReadAttributePath & aPath, app::AttributeValueEncoder & aEncoder) override; + +private: + CHIP_ERROR ReadAcceptHeaderAttribute(app::AttributeValueEncoder & aEncoder, Delegate * delegate); + CHIP_ERROR ReadSupportedStreamingProtocols(app::AttributeValueEncoder & aEncoder, Delegate * delegate); +}; -ContentLaunchResponse contentLauncherClusterLaunchContent(chip::EndpointId endpointId, - std::list parameterList, bool autoplay, - const chip::CharSpan & data); +ContentLauncherAttrAccess gContentLauncherAttrAccess; -ContentLaunchResponse contentLauncherClusterLaunchUrl(const chip::CharSpan & contentUrl, const chip::CharSpan & displayString, - ContentLaunchBrandingInformation & brandingInformation); +CHIP_ERROR ContentLauncherAttrAccess::Read(const app::ConcreteReadAttributePath & aPath, app::AttributeValueEncoder & aEncoder) +{ + EndpointId endpoint = aPath.mEndpointId; + Delegate * delegate = GetDelegate(endpoint); + + if (isDelegateNull(delegate, endpoint)) + { + return CHIP_NO_ERROR; + } + + switch (aPath.mAttributeId) + { + case app::Clusters::ContentLauncher::Attributes::AcceptHeaderList::Id: { + return ReadAcceptHeaderAttribute(aEncoder, delegate); + } + case app::Clusters::ContentLauncher::Attributes::SupportedStreamingProtocols::Id: { + return ReadSupportedStreamingProtocols(aEncoder, delegate); + } + default: { + break; + } + } + + return CHIP_NO_ERROR; +} + +CHIP_ERROR ContentLauncherAttrAccess::ReadAcceptHeaderAttribute(app::AttributeValueEncoder & aEncoder, Delegate * delegate) +{ + std::list acceptHeaderList = delegate->HandleGetAcceptHeaderList(); + return aEncoder.EncodeList([acceptHeaderList](const auto & encoder) -> CHIP_ERROR { + for (const auto & acceptedHeader : acceptHeaderList) + { + CharSpan span(acceptedHeader.c_str(), acceptedHeader.length()); + ReturnErrorOnFailure(encoder.Encode(span)); + } + return CHIP_NO_ERROR; + }); +} + +CHIP_ERROR ContentLauncherAttrAccess::ReadSupportedStreamingProtocols(app::AttributeValueEncoder & aEncoder, Delegate * delegate) +{ + uint32_t streamingProtocols = delegate->HandleGetSupportedStreamingProtocols(); + return aEncoder.Encode(streamingProtocols); +} + +} // anonymous namespace + +// ----------------------------------------------------------------------------- +// Matter Framework Callbacks Implementation bool emberAfContentLauncherClusterLaunchContentCallback( chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, @@ -59,19 +180,27 @@ bool emberAfContentLauncherClusterLaunchContentCallback( { CHIP_ERROR err = CHIP_NO_ERROR; chip::app::Clusters::ContentLauncher::Commands::LaunchContentResponse::Type response; + EndpointId endpoint = commandPath.mEndpointId; auto & autoplay = commandData.autoPlay; auto & data = commandData.data; + // TODO: Decode the paramater and pass it to delegate + // auto searchIterator = commandData.search.begin(); std::list parameterList; - ContentLaunchResponse resp = contentLauncherClusterLaunchContent(emberAfCurrentEndpoint(), parameterList, autoplay, data); - VerifyOrExit(resp.err == CHIP_NO_ERROR, err = resp.err); + Delegate * delegate = GetDelegate(endpoint); + VerifyOrExit(isDelegateNull(delegate, endpoint) != true, err = CHIP_ERROR_INCORRECT_STATE); + + { + ContentLaunchResponse resp = delegate->HandleLaunchContent(emberAfCurrentEndpoint(), parameterList, autoplay, data); + VerifyOrExit(resp.err == CHIP_NO_ERROR, err = resp.err); - response.contentLaunchStatus = resp.status; - response.data = resp.data; + response.contentLaunchStatus = resp.status; + response.data = resp.data; - err = commandObj->AddResponseData(commandPath, response); - SuccessOrExit(err); + err = commandObj->AddResponseData(commandPath, response); + SuccessOrExit(err); + } exit: if (err != CHIP_NO_ERROR) @@ -90,19 +219,27 @@ bool emberAfContentLauncherClusterLaunchURLCallback( { CHIP_ERROR err = CHIP_NO_ERROR; chip::app::Clusters::ContentLauncher::Commands::LaunchURLResponse::Type response; + EndpointId endpoint = commandPath.mEndpointId; auto & contentUrl = commandData.contentURL; auto & displayString = commandData.displayString; - ContentLaunchBrandingInformation brandingInformation; + // TODO: Decode the paramater and pass it to delegate + // auto brandingInformationIterator = commandData.brandingInformation.begin(); + std::list brandingInformationList; + + Delegate * delegate = GetDelegate(endpoint); + VerifyOrExit(isDelegateNull(delegate, endpoint) != true, err = CHIP_ERROR_INCORRECT_STATE); - ContentLaunchResponse resp = contentLauncherClusterLaunchUrl(contentUrl, displayString, brandingInformation); - VerifyOrExit(resp.err == CHIP_NO_ERROR, err = resp.err); + { + ContentLaunchResponse resp = delegate->HandleLaunchUrl(contentUrl, displayString, brandingInformationList); + VerifyOrExit(resp.err == CHIP_NO_ERROR, err = resp.err); - response.contentLaunchStatus = resp.status; - response.data = resp.data; + response.contentLaunchStatus = resp.status; + response.data = resp.data; - err = commandObj->AddResponseData(commandPath, response); - SuccessOrExit(err); + err = commandObj->AddResponseData(commandPath, response); + SuccessOrExit(err); + } exit: if (err != CHIP_NO_ERROR) @@ -115,4 +252,10 @@ bool emberAfContentLauncherClusterLaunchURLCallback( return true; } -void MatterContentLauncherPluginServerInitCallback() {} +// ----------------------------------------------------------------------------- +// Plugin initialization + +void MatterContentLauncherPluginServerInitCallback(void) +{ + registerAttributeAccessOverride(&gContentLauncherAttrAccess); +} diff --git a/src/app/clusters/content-launch-server/content-launch-server.h b/src/app/clusters/content-launch-server/content-launch-server.h index 2d4934e5fc0eb9..7a0911078ffad5 100644 --- a/src/app/clusters/content-launch-server/content-launch-server.h +++ b/src/app/clusters/content-launch-server/content-launch-server.h @@ -17,12 +17,18 @@ #pragma once +#include "content-launch-delegate.h" #include #include -struct ContentLaunchResponse -{ - CHIP_ERROR err; - chip::CharSpan data; - chip::app::Clusters::ContentLauncher::ContentLaunchStatus status; -}; +namespace chip { +namespace app { +namespace Clusters { +namespace ContentLauncher { + +void SetDelegate(EndpointId endpoint, Delegate * delegate); + +} // namespace ContentLauncher +} // namespace Clusters +} // namespace app +} // namespace chip diff --git a/src/app/tests/suites/TV_ContentLauncherCluster.yaml b/src/app/tests/suites/TV_ContentLauncherCluster.yaml index 4da7df542fdf81..e2c6b5a38ef526 100644 --- a/src/app/tests/suites/TV_ContentLauncherCluster.yaml +++ b/src/app/tests/suites/TV_ContentLauncherCluster.yaml @@ -23,11 +23,11 @@ tests: cluster: "DelayCommands" command: "WaitForCommissionee" - - label: "Read attribute accepts header list" + - label: "Read attribute accept header list" command: "readAttribute" - attribute: "accepts header list" + attribute: "accept header list" response: - value: ["example1", "example2"] + value: ["example", "example"] - label: "Read attribute supported streaming protocols" command: "readAttribute" diff --git a/src/app/zap-templates/zcl/data-model/chip/content-launch-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/content-launch-cluster.xml index 23a618b0002422..db2e801b854662 100644 --- a/src/app/zap-templates/zcl/data-model/chip/content-launch-cluster.xml +++ b/src/app/zap-templates/zcl/data-model/chip/content-launch-cluster.xml @@ -26,7 +26,7 @@ limitations under the License. This cluster provides an interface for launching content on a media player device such as a TV or Speaker. - accepts header list + accept header list supported streaming protocols @@ -124,4 +124,10 @@ limitations under the License. + + + + + + diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap index 11abb13fddae82..eae49e72cf466e 100644 --- a/src/controller/data_model/controller-clusters.zap +++ b/src/controller/data_model/controller-clusters.zap @@ -11605,7 +11605,7 @@ ], "attributes": [ { - "name": "accepts header list", + "name": "accept header list", "code": 0, "mfgCode": null, "side": "server", diff --git a/src/controller/java/templates/ClusterInfo-java.zapt b/src/controller/java/templates/ClusterInfo-java.zapt index 7440c4188c51b4..f2b5a8e1590e49 100644 --- a/src/controller/java/templates/ClusterInfo-java.zapt +++ b/src/controller/java/templates/ClusterInfo-java.zapt @@ -255,7 +255,7 @@ public class ClusterInfoMapping { {{#if (isOctetString type)}} CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List"); {{else if (isCharString type)}} - // Add String field here after ByteSpan is properly emitted in C++ layer + CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List"); {{else}} {{! NOTE: asJavaBasicTypeForZclType does not handle isArray well, so add an inline partial to force isArray to false when we want the diff --git a/src/controller/java/zap-generated/CHIPCallbackTypes.h b/src/controller/java/zap-generated/CHIPCallbackTypes.h index 30ed8dc34d05b5..20da60db5d9177 100644 --- a/src/controller/java/zap-generated/CHIPCallbackTypes.h +++ b/src/controller/java/zap-generated/CHIPCallbackTypes.h @@ -299,8 +299,8 @@ typedef void (*CHIPContentLauncherClusterLaunchContentResponseCallbackType)( typedef void (*CHIPContentLauncherClusterLaunchURLResponseCallbackType)( void *, const chip::app::Clusters::ContentLauncher::Commands::LaunchURLResponse::DecodableType &); -typedef void (*CHIPContentLauncherClusterAcceptsHeaderListAttributeCallbackType)( - void *, const chip::app::Clusters::ContentLauncher::Attributes::AcceptsHeaderList::TypeInfo::DecodableType &); +typedef void (*CHIPContentLauncherClusterAcceptHeaderListAttributeCallbackType)( + void *, const chip::app::Clusters::ContentLauncher::Attributes::AcceptHeaderList::TypeInfo::DecodableType &); typedef void (*CHIPContentLauncherClusterSupportedStreamingProtocolsAttributeCallbackType)( void *, chip::app::Clusters::ContentLauncher::Attributes::SupportedStreamingProtocols::TypeInfo::DecodableArgType); typedef void (*CHIPContentLauncherClusterAttributeListAttributeCallbackType)( diff --git a/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp b/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp index 3827a67f7dccdf..124d180c2eaf01 100644 --- a/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp +++ b/src/controller/java/zap-generated/CHIPClustersRead-JNI.cpp @@ -4362,15 +4362,15 @@ JNI_METHOD(void, ColorControlCluster, readClusterRevisionAttribute)(JNIEnv * env onFailure.release(); } -JNI_METHOD(void, ContentLauncherCluster, readAcceptsHeaderListAttribute) +JNI_METHOD(void, ContentLauncherCluster, readAcceptHeaderListAttribute) (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback) { chip::DeviceLayer::StackLock lock; - using TypeInfo = chip::app::Clusters::ContentLauncher::Attributes::AcceptsHeaderList::TypeInfo; - std::unique_ptr - onSuccess(chip::Platform::New(callback, false), - chip::Platform::Delete); + using TypeInfo = chip::app::Clusters::ContentLauncher::Attributes::AcceptHeaderList::TypeInfo; + std::unique_ptr + onSuccess(chip::Platform::New(callback, false), + chip::Platform::Delete); VerifyOrReturn(onSuccess.get() != nullptr, chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException( env, callback, "Error creating native success callback", CHIP_ERROR_NO_MEMORY)); @@ -4388,7 +4388,7 @@ JNI_METHOD(void, ContentLauncherCluster, readAcceptsHeaderListAttribute) chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException( env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE)); - auto successFn = chip::Callback::Callback::FromCancelable( + auto successFn = chip::Callback::Callback::FromCancelable( onSuccess->Cancel()); auto failureFn = chip::Callback::Callback::FromCancelable(onFailure->Cancel()); err = cppCluster->ReadAttribute(onSuccess->mContext, successFn->mCall, failureFn->mCall); diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp index 13e1d628bb187d..2b4dab9fee21a6 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp @@ -2776,9 +2776,9 @@ void CHIPColorControlAttributeListAttributeCallback::CallbackFn(void * context, env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj); } -CHIPContentLauncherAcceptsHeaderListAttributeCallback::CHIPContentLauncherAcceptsHeaderListAttributeCallback(jobject javaCallback, - bool keepAlive) : - chip::Callback::Callback(CallbackFn, this), +CHIPContentLauncherAcceptHeaderListAttributeCallback::CHIPContentLauncherAcceptHeaderListAttributeCallback(jobject javaCallback, + bool keepAlive) : + chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive) { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); @@ -2795,7 +2795,7 @@ CHIPContentLauncherAcceptsHeaderListAttributeCallback::CHIPContentLauncherAccept } } -CHIPContentLauncherAcceptsHeaderListAttributeCallback::~CHIPContentLauncherAcceptsHeaderListAttributeCallback() +CHIPContentLauncherAcceptHeaderListAttributeCallback::~CHIPContentLauncherAcceptHeaderListAttributeCallback() { JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread(); if (env == nullptr) @@ -2806,8 +2806,8 @@ CHIPContentLauncherAcceptsHeaderListAttributeCallback::~CHIPContentLauncherAccep env->DeleteGlobalRef(javaCallbackRef); } -void CHIPContentLauncherAcceptsHeaderListAttributeCallback::CallbackFn( - void * context, const chip::app::DataModel::DecodableList & list) +void CHIPContentLauncherAcceptHeaderListAttributeCallback::CallbackFn( + void * context, const chip::app::DataModel::DecodableList & list) { chip::DeviceLayer::StackUnlock unlock; CHIP_ERROR err = CHIP_NO_ERROR; @@ -2816,8 +2816,8 @@ void CHIPContentLauncherAcceptsHeaderListAttributeCallback::CallbackFn( VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env")); - std::unique_ptr cppCallback( - reinterpret_cast(context), maybeDestroy); + std::unique_ptr cppCallback( + reinterpret_cast(context), maybeDestroy); // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback. javaCallbackRef = cppCallback.get()->javaCallbackRef; @@ -2844,20 +2844,20 @@ void CHIPContentLauncherAcceptsHeaderListAttributeCallback::CallbackFn( { auto & entry = iter.GetValue(); bool entryNull = false; - chip::ByteSpan entryValue = entry; + chip::CharSpan entryValue = entry; - jbyteArray entryObject = nullptr; + jstring entryObject = nullptr; + chip::UtfString entryStr(env, entryValue); if (!entryNull) { - entryObject = env->NewByteArray(entryValue.size()); - env->SetByteArrayRegion(entryObject, 0, entryValue.size(), reinterpret_cast(entryValue.data())); + entryObject = jstring(entryStr.jniValue()); } env->CallBooleanMethod(arrayListObj, arrayListAddMethod, entryObject); } VerifyOrReturn( iter.GetStatus() == CHIP_NO_ERROR, - ChipLogError(Zcl, "Error decoding AcceptsHeaderListAttribute value: %" CHIP_ERROR_FORMAT, iter.GetStatus().Format())); + ChipLogError(Zcl, "Error decoding AcceptHeaderListAttribute value: %" CHIP_ERROR_FORMAT, iter.GetStatus().Format())); env->ExceptionClear(); env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj); diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h index a409bb355690df..8e76b695508641 100644 --- a/src/controller/java/zap-generated/CHIPReadCallbacks.h +++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h @@ -1032,28 +1032,28 @@ class CHIPColorControlAttributeListAttributeCallback bool keepAlive; }; -class CHIPContentLauncherAcceptsHeaderListAttributeCallback - : public chip::Callback::Callback +class CHIPContentLauncherAcceptHeaderListAttributeCallback + : public chip::Callback::Callback { public: - CHIPContentLauncherAcceptsHeaderListAttributeCallback(jobject javaCallback, bool keepAlive = false); + CHIPContentLauncherAcceptHeaderListAttributeCallback(jobject javaCallback, bool keepAlive = false); - ~CHIPContentLauncherAcceptsHeaderListAttributeCallback(); + ~CHIPContentLauncherAcceptHeaderListAttributeCallback(); - static void maybeDestroy(CHIPContentLauncherAcceptsHeaderListAttributeCallback * callback) + static void maybeDestroy(CHIPContentLauncherAcceptHeaderListAttributeCallback * callback) { if (!callback->keepAlive) { callback->Cancel(); - chip::Platform::Delete(callback); + chip::Platform::Delete(callback); } } - static void CallbackFn(void * context, const chip::app::DataModel::DecodableList & list); + static void CallbackFn(void * context, const chip::app::DataModel::DecodableList & list); static void OnSubscriptionEstablished(void * context) { CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished( - reinterpret_cast(context)->javaCallbackRef); + reinterpret_cast(context)->javaCallbackRef); VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err))); }; diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java index f4bc1593fd904f..4101050502be0a 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java @@ -3285,7 +3285,7 @@ public interface LaunchURLResponseCallback { void onError(Exception error); } - public interface AcceptsHeaderListAttributeCallback { + public interface AcceptHeaderListAttributeCallback { void onSuccess(List valueList); void onError(Exception ex); @@ -3301,8 +3301,8 @@ public interface AttributeListAttributeCallback { default void onSubscriptionEstablished() {} } - public void readAcceptsHeaderListAttribute(AcceptsHeaderListAttributeCallback callback) { - readAcceptsHeaderListAttribute(chipClusterPtr, callback); + public void readAcceptHeaderListAttribute(AcceptHeaderListAttributeCallback callback) { + readAcceptHeaderListAttribute(chipClusterPtr, callback); } public void readSupportedStreamingProtocolsAttribute(LongAttributeCallback callback) { @@ -3333,8 +3333,8 @@ public void subscribeClusterRevisionAttribute( subscribeClusterRevisionAttribute(chipClusterPtr, callback, minInterval, maxInterval); } - private native void readAcceptsHeaderListAttribute( - long chipClusterPtr, AcceptsHeaderListAttributeCallback callback); + private native void readAcceptHeaderListAttribute( + long chipClusterPtr, AcceptHeaderListAttributeCallback callback); private native void readSupportedStreamingProtocolsAttribute( long chipClusterPtr, LongAttributeCallback callback); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java index 90903eccfe26d9..ab81448263a98d 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java @@ -889,8 +889,8 @@ public void onError(Exception error) { } } - public static class DelegatedContentLauncherClusterAcceptsHeaderListAttributeCallback - implements ChipClusters.ContentLauncherCluster.AcceptsHeaderListAttributeCallback, + public static class DelegatedContentLauncherClusterAcceptHeaderListAttributeCallback + implements ChipClusters.ContentLauncherCluster.AcceptHeaderListAttributeCallback, DelegatedClusterCallback { private ClusterCommandCallback callback; @@ -903,7 +903,7 @@ public void setCallbackDelegate(ClusterCommandCallback callback) { public void onSuccess(List valueList) { Map responseValues = new LinkedHashMap<>(); CommandResponseInfo commandResponseInfo = - new CommandResponseInfo("valueList", "List"); + new CommandResponseInfo("valueList", "List"); responseValues.put(commandResponseInfo, valueList); callback.onSuccess(responseValues); diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java index 3583754cfbe90c..062c4e11dd679e 100644 --- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java +++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java @@ -1673,23 +1673,23 @@ public Map> getReadAttributeMap() { "readClusterRevisionAttribute", readColorControlClusterRevisionAttributeInteractionInfo); readAttributeMap.put("colorControl", readColorControlInteractionInfo); Map readContentLauncherInteractionInfo = new LinkedHashMap<>(); - Map readContentLauncherAcceptsHeaderListCommandParams = + Map readContentLauncherAcceptHeaderListCommandParams = new LinkedHashMap(); - InteractionInfo readContentLauncherAcceptsHeaderListAttributeInteractionInfo = + InteractionInfo readContentLauncherAcceptHeaderListAttributeInteractionInfo = new InteractionInfo( (cluster, callback, commandArguments) -> { ((ChipClusters.ContentLauncherCluster) cluster) - .readAcceptsHeaderListAttribute( - (ChipClusters.ContentLauncherCluster.AcceptsHeaderListAttributeCallback) + .readAcceptHeaderListAttribute( + (ChipClusters.ContentLauncherCluster.AcceptHeaderListAttributeCallback) callback); }, () -> new ClusterInfoMapping - .DelegatedContentLauncherClusterAcceptsHeaderListAttributeCallback(), - readContentLauncherAcceptsHeaderListCommandParams); + .DelegatedContentLauncherClusterAcceptHeaderListAttributeCallback(), + readContentLauncherAcceptHeaderListCommandParams); readContentLauncherInteractionInfo.put( - "readAcceptsHeaderListAttribute", - readContentLauncherAcceptsHeaderListAttributeInteractionInfo); + "readAcceptHeaderListAttribute", + readContentLauncherAcceptHeaderListAttributeInteractionInfo); Map readContentLauncherSupportedStreamingProtocolsCommandParams = new LinkedHashMap(); InteractionInfo readContentLauncherSupportedStreamingProtocolsAttributeInteractionInfo = diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py index fc2a82f2a406e4..88d70aa5196a49 100644 --- a/src/controller/python/chip/clusters/CHIPClusters.py +++ b/src/controller/python/chip/clusters/CHIPClusters.py @@ -1362,9 +1362,9 @@ class ChipClusters: }, "attributes": { 0x00000000: { - "attributeName": "AcceptsHeaderList", + "attributeName": "AcceptHeaderList", "attributeId": 0x00000000, - "type": "bytes", + "type": "str", "reportable": True, }, 0x00000001: { diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py index 7252c9104976dc..afc2666be6162a 100644 --- a/src/controller/python/chip/clusters/Objects.py +++ b/src/controller/python/chip/clusters/Objects.py @@ -28653,14 +28653,14 @@ class ContentLauncher(Cluster): def descriptor(cls) -> ClusterObjectDescriptor: return ClusterObjectDescriptor( Fields = [ - ClusterObjectFieldDescriptor(Label="acceptsHeaderList", Tag=0x00000000, Type=typing.List[bytes]), + ClusterObjectFieldDescriptor(Label="acceptHeaderList", Tag=0x00000000, Type=typing.List[str]), ClusterObjectFieldDescriptor(Label="supportedStreamingProtocols", Tag=0x00000001, Type=uint), ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]), ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=typing.Optional[uint]), ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint), ]) - acceptsHeaderList: 'typing.List[bytes]' = None + acceptHeaderList: 'typing.List[str]' = None supportedStreamingProtocols: 'uint' = None attributeList: 'typing.List[uint]' = None featureMap: 'typing.Optional[uint]' = None @@ -28850,7 +28850,7 @@ def descriptor(cls) -> ClusterObjectDescriptor: class Attributes: @dataclass - class AcceptsHeaderList(ClusterAttributeDescriptor): + class AcceptHeaderList(ClusterAttributeDescriptor): @ChipUtility.classproperty def cluster_id(cls) -> int: return 0x050A @@ -28861,9 +28861,9 @@ def attribute_id(cls) -> int: @ChipUtility.classproperty def attribute_type(cls) -> ClusterObjectFieldDescriptor: - return ClusterObjectFieldDescriptor(Type=typing.List[bytes]) + return ClusterObjectFieldDescriptor(Type=typing.List[str]) - value: 'typing.List[bytes]' = field(default_factory=lambda: []) + value: 'typing.List[str]' = field(default_factory=lambda: []) @dataclass class SupportedStreamingProtocols(ClusterAttributeDescriptor): diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm index 5df08da8882552..460945b34975b9 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPAttributeTLVValueDecoder.mm @@ -1936,8 +1936,8 @@ id CHIPDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader case Clusters::ContentLauncher::Id: { using namespace Clusters::ContentLauncher; switch (aPath.mAttributeId) { - case Attributes::AcceptsHeaderList::Id: { - using TypeInfo = Attributes::AcceptsHeaderList::TypeInfo; + case Attributes::AcceptHeaderList::Id: { + using TypeInfo = Attributes::AcceptHeaderList::TypeInfo; TypeInfo::DecodableType cppValue; *aError = DataModel::Decode(aReader, cppValue); if (*aError != CHIP_NO_ERROR) { @@ -1948,8 +1948,8 @@ id CHIPDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::TLVReader auto iter_0 = cppValue.begin(); while (iter_0.Next()) { auto & entry_0 = iter_0.GetValue(); - NSData * newElement_0; - newElement_0 = [NSData dataWithBytes:entry_0.data() length:entry_0.size()]; + NSString * newElement_0; + newElement_0 = [[NSString alloc] initWithBytes:entry_0.data() length:entry_0.size() encoding:NSUTF8StringEncoding]; [array_0 addObject:newElement_0]; } { // Scope for the error so we will know what it's named diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm index e041b5dc1bdf8d..265deb06298007 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge.mm @@ -1610,16 +1610,16 @@ } } -void CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge::OnSuccessFn( - void * context, const chip::app::DataModel::DecodableList & value) +void CHIPContentLauncherAcceptHeaderListListAttributeCallbackBridge::OnSuccessFn( + void * context, const chip::app::DataModel::DecodableList & value) { NSArray * _Nonnull objCValue; auto * array_0 = [NSMutableArray new]; auto iter_0 = value.begin(); while (iter_0.Next()) { auto & entry_0 = iter_0.GetValue(); - NSData * newElement_0; - newElement_0 = [NSData dataWithBytes:entry_0.data() length:entry_0.size()]; + NSString * newElement_0; + newElement_0 = [[NSString alloc] initWithBytes:entry_0.data() length:entry_0.size() encoding:NSUTF8StringEncoding]; [array_0 addObject:newElement_0]; } { // Scope for the error so we will know what it's named @@ -1633,9 +1633,9 @@ DispatchSuccess(context, objCValue); }; -void CHIPContentLauncherAcceptsHeaderListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context) +void CHIPContentLauncherAcceptHeaderListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished(void * context) { - auto * self = static_cast(context); + auto * self = static_cast(context); if (!self->mQueue) { return; } diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h index 1e3603fbe12549..db13503bea1d50 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPCallbackBridge_internal.h @@ -1822,25 +1822,25 @@ class CHIPColorControlAttributeListListAttributeCallbackSubscriptionBridge SubscriptionEstablishedHandler mEstablishedHandler; }; -class CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge - : public CHIPCallbackBridge +class CHIPContentLauncherAcceptHeaderListListAttributeCallbackBridge + : public CHIPCallbackBridge { public: - CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, - CHIPActionBlock action, bool keepAlive = false) : - CHIPCallbackBridge(queue, handler, action, OnSuccessFn, keepAlive){}; + CHIPContentLauncherAcceptHeaderListListAttributeCallbackBridge(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::DataModel::DecodableList & value); + static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value); }; -class CHIPContentLauncherAcceptsHeaderListListAttributeCallbackSubscriptionBridge - : public CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge +class CHIPContentLauncherAcceptHeaderListListAttributeCallbackSubscriptionBridge + : public CHIPContentLauncherAcceptHeaderListListAttributeCallbackBridge { public: - CHIPContentLauncherAcceptsHeaderListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, - CHIPActionBlock action, - SubscriptionEstablishedHandler establishedHandler) : - CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge(queue, handler, action, true), + CHIPContentLauncherAcceptHeaderListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler, + CHIPActionBlock action, + SubscriptionEstablishedHandler establishedHandler) : + CHIPContentLauncherAcceptHeaderListListAttributeCallbackBridge(queue, handler, action, true), mEstablishedHandler(establishedHandler) {} diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h index 42dabdd81919e4..18ca18770e82e0 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.h @@ -1154,13 +1154,13 @@ NS_ASSUME_NONNULL_BEGIN completionHandler:(void (^)(CHIPContentLauncherClusterLaunchURLResponseParams * _Nullable data, NSError * _Nullable error))completionHandler; -- (void)readAttributeAcceptsHeaderListWithCompletionHandler:(void (^)(NSArray * _Nullable value, - NSError * _Nullable error))completionHandler; -- (void)subscribeAttributeAcceptsHeaderListWithMinInterval:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler - reportHandler: - (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler; +- (void)readAttributeAcceptHeaderListWithCompletionHandler:(void (^)(NSArray * _Nullable value, + NSError * _Nullable error))completionHandler; +- (void)subscribeAttributeAcceptHeaderListWithMinInterval:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler: + (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler; - (void)readAttributeSupportedStreamingProtocolsWithCompletionHandler:(void (^)(NSNumber * _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 c26fefa3c323ba..610c1597299347 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPClustersObjc.mm @@ -5063,33 +5063,33 @@ new CHIPContentLauncherClusterLaunchURLResponseCallbackBridge( }); } -- (void)readAttributeAcceptsHeaderListWithCompletionHandler:(void (^)(NSArray * _Nullable value, - NSError * _Nullable error))completionHandler +- (void)readAttributeAcceptHeaderListWithCompletionHandler:(void (^)(NSArray * _Nullable value, + NSError * _Nullable error))completionHandler { - new CHIPContentLauncherAcceptsHeaderListListAttributeCallbackBridge( + new CHIPContentLauncherAcceptHeaderListListAttributeCallbackBridge( self.callbackQueue, completionHandler, ^(Cancelable * success, Cancelable * failure) { - using TypeInfo = ContentLauncher::Attributes::AcceptsHeaderList::TypeInfo; - auto successFn = Callback::FromCancelable(success); + using TypeInfo = ContentLauncher::Attributes::AcceptHeaderList::TypeInfo; + auto successFn = Callback::FromCancelable(success); auto failureFn = Callback::FromCancelable(failure); return self.cppCluster.ReadAttribute(successFn->mContext, successFn->mCall, failureFn->mCall); }); } -- (void)subscribeAttributeAcceptsHeaderListWithMinInterval:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler - reportHandler: - (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler +- (void)subscribeAttributeAcceptHeaderListWithMinInterval:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + subscriptionEstablished:(SubscriptionEstablishedHandler _Nullable)subscriptionEstablishedHandler + reportHandler: + (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler { - new CHIPContentLauncherAcceptsHeaderListListAttributeCallbackSubscriptionBridge( + new CHIPContentLauncherAcceptHeaderListListAttributeCallbackSubscriptionBridge( self.callbackQueue, reportHandler, ^(Cancelable * success, Cancelable * failure) { - using TypeInfo = ContentLauncher::Attributes::AcceptsHeaderList::TypeInfo; - auto successFn = Callback::FromCancelable(success); + using TypeInfo = ContentLauncher::Attributes::AcceptHeaderList::TypeInfo; + auto successFn = Callback::FromCancelable(success); auto failureFn = Callback::FromCancelable(failure); return self.cppCluster.SubscribeAttribute(successFn->mContext, successFn->mCall, failureFn->mCall, minInterval, maxInterval, - CHIPContentLauncherAcceptsHeaderListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished); + CHIPContentLauncherAcceptHeaderListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished); }, subscriptionEstablishedHandler); } diff --git a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h index 5aa678b0be1c45..b6103a5cacdcde 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.h @@ -268,7 +268,7 @@ NS_ASSUME_NONNULL_BEGIN */ @interface CHIPTestContentLauncher : CHIPContentLauncher -- (void)writeAttributeAcceptsHeaderListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; +- (void)writeAttributeAcceptHeaderListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeAttributeListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler; - (void)writeAttributeClusterRevisionWithValue:(NSNumber * _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 633f34100cfdb8..228add49464638 100644 --- a/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm +++ b/src/darwin/Framework/CHIP/zap-generated/CHIPTestClustersObjc.mm @@ -2522,7 +2522,7 @@ @implementation CHIPTestContentLauncher return &_cppCluster; } -- (void)writeAttributeAcceptsHeaderListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler +- (void)writeAttributeAcceptHeaderListWithValue:(NSArray * _Nonnull)value completionHandler:(StatusCompletion)completionHandler { new CHIPDefaultSuccessCallbackBridge( self.callbackQueue, @@ -2531,7 +2531,7 @@ new CHIPDefaultSuccessCallbackBridge( }, ^(Cancelable * success, Cancelable * failure) { ListFreer listFreer; - using TypeInfo = ContentLauncher::Attributes::AcceptsHeaderList::TypeInfo; + using TypeInfo = ContentLauncher::Attributes::AcceptHeaderList::TypeInfo; TypeInfo::Type cppValue; { using ListType_0 = std::remove_reference_t; @@ -2543,12 +2543,12 @@ new CHIPDefaultSuccessCallbackBridge( } listFreer.add(listHolder_0); for (size_t i_0 = 0; i_0 < value.count; ++i_0) { - if (![value[i_0] isKindOfClass:[NSData class]]) { + if (![value[i_0] isKindOfClass:[NSString class]]) { // Wrong kind of value. return CHIP_ERROR_INVALID_ARGUMENT; } - auto element_0 = (NSData *) value[i_0]; - listHolder_0->mList[i_0] = [self asByteSpan:element_0]; + auto element_0 = (NSString *) value[i_0]; + listHolder_0->mList[i_0] = [self asCharSpan:element_0]; } cppValue = ListType_0(listHolder_0->mList, value.count); } else { diff --git a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m index 59a195869c5013..0e59cd44bfe3e3 100644 --- a/src/darwin/Framework/CHIPTests/CHIPClustersTests.m +++ b/src/darwin/Framework/CHIPTests/CHIPClustersTests.m @@ -38168,7 +38168,7 @@ - (void)testSendClusterColorControlReadAttributeClusterRevisionWithCompletionHan [self waitForExpectationsWithTimeout:kTimeoutInSeconds handler:nil]; } -- (void)testSendClusterContentLauncherReadAttributeAcceptsHeaderListWithCompletionHandler +- (void)testSendClusterContentLauncherReadAttributeAcceptHeaderListWithCompletionHandler { dispatch_queue_t queue = dispatch_get_main_queue(); @@ -38182,10 +38182,10 @@ - (void)testSendClusterContentLauncherReadAttributeAcceptsHeaderListWithCompleti XCTAssertNotNil(cluster); XCTestExpectation * expectation = - [self expectationWithDescription:@"ContentLauncherReadAttributeAcceptsHeaderListWithCompletionHandler"]; + [self expectationWithDescription:@"ContentLauncherReadAttributeAcceptHeaderListWithCompletionHandler"]; - [cluster readAttributeAcceptsHeaderListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { - NSLog(@"ContentLauncher AcceptsHeaderList Error: %@", err); + [cluster readAttributeAcceptHeaderListWithCompletionHandler:^(NSArray * _Nullable value, NSError * _Nullable err) { + NSLog(@"ContentLauncher AcceptHeaderList Error: %@", err); XCTAssertEqual(err.code, 0); [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 962979b7b6ae59..7065f4a7a36911 100644 --- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h +++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h @@ -466,7 +466,7 @@ \ /* Endpoint: 1, Cluster: Content Launcher (server), big-endian */ \ \ - /* 2264 - accepts header list, */ \ + /* 2264 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -1137,7 +1137,7 @@ \ /* Endpoint: 1, Cluster: Content Launcher (server), little-endian */ \ \ - /* 2264 - accepts header list, */ \ + /* 2264 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -2101,7 +2101,7 @@ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ - { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2264) }, /* accepts header list */ \ + { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2264) }, /* accept header list */ \ { 0x0001, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_LONG_DEFAULTS_INDEX(2518) }, /* supported streaming protocols */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ 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 ad86368560140c..9ddbd1f7a19abf 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 @@ -1416,7 +1416,7 @@ // Client attributes // Server attributes -#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_ACCEPT_HEADER_ATTRIBUTE_ID (0x0000) #define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_PROTOCOLS_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output 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 d5304c893ece03..196fdca17012fb 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 @@ -20930,8 +20930,8 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre { switch (path.mAttributeId) { - case Attributes::AcceptsHeaderList::TypeInfo::GetAttributeId(): - ReturnErrorOnFailure(DataModel::Decode(reader, acceptsHeaderList)); + case Attributes::AcceptHeaderList::TypeInfo::GetAttributeId(): + ReturnErrorOnFailure(DataModel::Decode(reader, acceptHeaderList)); break; case Attributes::SupportedStreamingProtocols::TypeInfo::GetAttributeId(): ReturnErrorOnFailure(DataModel::Decode(reader, supportedStreamingProtocols)); 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 6fcae15f1eb477..9db1340fbb4063 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 @@ -32153,6 +32153,13 @@ enum class ContentLaunchStatus : uint8_t using ContentLaunchStatus = EmberAfContentLaunchStatus; #endif +// Bitmap for SupportedStreamingProtocol +enum class SupportedStreamingProtocol : uint32_t +{ + kDash = 0x1, + kHls = 0x2, +}; + namespace Structs { namespace ContentLaunchDimension { enum class Fields @@ -32452,18 +32459,18 @@ struct DecodableType namespace Attributes { -namespace AcceptsHeaderList { +namespace AcceptHeaderList { struct TypeInfo { - using Type = chip::app::DataModel::List; - using DecodableType = chip::app::DataModel::DecodableList; - using DecodableArgType = const chip::app::DataModel::DecodableList &; + using Type = chip::app::DataModel::List; + using DecodableType = chip::app::DataModel::DecodableList; + using DecodableArgType = const chip::app::DataModel::DecodableList &; static constexpr ClusterId GetClusterId() { return Clusters::ContentLauncher::Id; } - static constexpr AttributeId GetAttributeId() { return Attributes::AcceptsHeaderList::Id; } + static constexpr AttributeId GetAttributeId() { return Attributes::AcceptHeaderList::Id; } static constexpr bool MustUseTimedWrite() { return false; } }; -} // namespace AcceptsHeaderList +} // namespace AcceptHeaderList namespace SupportedStreamingProtocols { struct TypeInfo { @@ -32521,7 +32528,7 @@ struct TypeInfo CHIP_ERROR Decode(TLV::TLVReader & reader, const ConcreteAttributePath & path); - Attributes::AcceptsHeaderList::TypeInfo::DecodableType acceptsHeaderList; + Attributes::AcceptHeaderList::TypeInfo::DecodableType acceptHeaderList; Attributes::SupportedStreamingProtocols::TypeInfo::DecodableType supportedStreamingProtocols; Attributes::AttributeList::TypeInfo::DecodableType attributeList; Attributes::FeatureMap::TypeInfo::DecodableType featureMap; diff --git a/zzz_generated/app-common/app-common/zap-generated/enums.h b/zzz_generated/app-common/app-common/zap-generated/enums.h index 70ce299d265bf8..93d0a3b6728194 100644 --- a/zzz_generated/app-common/app-common/zap-generated/enums.h +++ b/zzz_generated/app-common/app-common/zap-generated/enums.h @@ -1214,6 +1214,10 @@ enum EmberAfWiFiVersionType : uint8_t #define EMBER_AF_START_TIME_TIME_ENCODING_OFFSET (6) #define EMBER_AF_START_TIME_HOURS (65280) #define EMBER_AF_START_TIME_HOURS_OFFSET (8) +#define EMBER_AF_SUPPORTED_STREAMING_PROTOCOL_DASH (1) +#define EMBER_AF_SUPPORTED_STREAMING_PROTOCOL_DASH_OFFSET (0) +#define EMBER_AF_SUPPORTED_STREAMING_PROTOCOL_HLS (2) +#define EMBER_AF_SUPPORTED_STREAMING_PROTOCOL_HLS_OFFSET (1) #define EMBER_AF_SWITCH_FEATURE_LATCHING_SWITCH (1) #define EMBER_AF_SWITCH_FEATURE_LATCHING_SWITCH_OFFSET (0) #define EMBER_AF_SWITCH_FEATURE_MOMENTARY_SWITCH (2) 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 4794917210dd97..4f1e90becfd3b5 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 @@ -4952,9 +4952,9 @@ static constexpr AttributeId Id = Globals::Attributes::ClusterRevision::Id; namespace ContentLauncher { namespace Attributes { -namespace AcceptsHeaderList { +namespace AcceptHeaderList { static constexpr AttributeId Id = 0x00000000; -} // namespace AcceptsHeaderList +} // namespace AcceptHeaderList namespace SupportedStreamingProtocols { static constexpr AttributeId Id = 0x00000001; diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h index 87296cfed52b6e..2c3b863b1cf561 100644 --- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h @@ -13468,7 +13468,7 @@ class ReportColorControlClusterRevision : public ModelCommand | * LaunchURL | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | -| * AcceptsHeaderList | 0x0000 | +| * AcceptHeaderList | 0x0000 | | * SupportedStreamingProtocols | 0x0001 | | * AttributeList | 0xFFFB | | * ClusterRevision | 0xFFFD | @@ -13527,18 +13527,18 @@ class ContentLauncherLaunchURL : public ModelCommand }; /* - * Attribute AcceptsHeaderList + * Attribute AcceptHeaderList */ -class ReadContentLauncherAcceptsHeaderList : public ModelCommand +class ReadContentLauncherAcceptHeaderList : public ModelCommand { public: - ReadContentLauncherAcceptsHeaderList() : ModelCommand("read") + ReadContentLauncherAcceptHeaderList() : ModelCommand("read") { - AddArgument("attr-name", "accepts-header-list"); + AddArgument("attr-name", "accept-header-list"); ModelCommand::AddArguments(); } - ~ReadContentLauncherAcceptsHeaderList() {} + ~ReadContentLauncherAcceptHeaderList() {} CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { @@ -13546,29 +13546,29 @@ class ReadContentLauncherAcceptsHeaderList : public ModelCommand chip::Controller::ContentLauncherCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttribute( + return cluster.ReadAttribute( this, OnAttributeResponse, OnDefaultFailure); } - static void OnAttributeResponse(void * context, const chip::app::DataModel::DecodableList & value) + static void OnAttributeResponse(void * context, const chip::app::DataModel::DecodableList & value) { - OnGeneralAttributeResponse(context, "ContentLauncher.AcceptsHeaderList response", value); + OnGeneralAttributeResponse(context, "ContentLauncher.AcceptHeaderList response", value); } }; -class ReportContentLauncherAcceptsHeaderList : public ModelCommand +class ReportContentLauncherAcceptHeaderList : public ModelCommand { public: - ReportContentLauncherAcceptsHeaderList() : ModelCommand("report") + ReportContentLauncherAcceptHeaderList() : ModelCommand("report") { - AddArgument("attr-name", "accepts-header-list"); + AddArgument("attr-name", "accept-header-list"); AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); AddArgument("wait", 0, 1, &mWait); ModelCommand::AddArguments(); } - ~ReportContentLauncherAcceptsHeaderList() {} + ~ReportContentLauncherAcceptHeaderList() {} CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { @@ -13578,7 +13578,7 @@ class ReportContentLauncherAcceptsHeaderList : public ModelCommand cluster.Associate(device, endpointId); auto subscriptionEstablishedCallback = mWait ? OnDefaultSuccessResponseWithoutExit : OnDefaultSuccessResponse; - return cluster.SubscribeAttribute( + return cluster.SubscribeAttribute( this, OnValueReport, OnDefaultFailure, mMinInterval, mMaxInterval, subscriptionEstablishedCallback); } @@ -13587,9 +13587,9 @@ class ReportContentLauncherAcceptsHeaderList : public ModelCommand return chip::System::Clock::Seconds16(mWait ? UINT16_MAX : 10); } - static void OnValueReport(void * context, const chip::app::DataModel::DecodableList & value) + static void OnValueReport(void * context, const chip::app::DataModel::DecodableList & value) { - LogValue("ContentLauncher.AcceptsHeaderList report", 0, value); + LogValue("ContentLauncher.AcceptHeaderList report", 0, value); } private: @@ -51196,7 +51196,7 @@ void registerClusterContentLauncher(Commands & commands) commands_list clusterCommands = { make_unique(), // make_unique(), // - make_unique(), // + make_unique(), // make_unique(), // make_unique(), // make_unique(), // diff --git a/zzz_generated/chip-tool/zap-generated/reporting/Commands.h b/zzz_generated/chip-tool/zap-generated/reporting/Commands.h new file mode 100644 index 00000000000000..5077ca0a7c98e5 --- /dev/null +++ b/zzz_generated/chip-tool/zap-generated/reporting/Commands.h @@ -0,0 +1,3500 @@ +/* + * + * 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. + */ + +// THIS FILE IS GENERATED BY ZAP + +#pragma once + +#include "../cluster/Commands.h" // For the LogValue bits and read callbacks +#include + +typedef void (*UnsupportedAttributeCallback)(void * context); + +class Listen : public ReportingCommand +{ +public: + Listen() : ReportingCommand("listen") {} + + ~Listen() + { + delete onReportAccountLoginClusterRevisionCallback; + delete onReportAdministratorCommissioningClusterRevisionCallback; + delete onReportApplicationBasicVendorNameCallback; + delete onReportApplicationBasicVendorIdCallback; + delete onReportApplicationBasicApplicationNameCallback; + delete onReportApplicationBasicProductIdCallback; + delete onReportApplicationBasicApplicationStatusCallback; + delete onReportApplicationBasicApplicationVersionCallback; + delete onReportApplicationBasicClusterRevisionCallback; + delete onReportApplicationLauncherClusterRevisionCallback; + delete onReportAudioOutputCurrentAudioOutputCallback; + delete onReportAudioOutputClusterRevisionCallback; + delete onReportBarrierControlBarrierMovingStateCallback; + delete onReportBarrierControlBarrierSafetyStatusCallback; + delete onReportBarrierControlBarrierCapabilitiesCallback; + delete onReportBarrierControlBarrierPositionCallback; + delete onReportBarrierControlClusterRevisionCallback; + delete onReportBasicInteractionModelVersionCallback; + delete onReportBasicVendorNameCallback; + delete onReportBasicVendorIDCallback; + delete onReportBasicProductNameCallback; + delete onReportBasicProductIDCallback; + delete onReportBasicNodeLabelCallback; + delete onReportBasicLocationCallback; + delete onReportBasicHardwareVersionCallback; + delete onReportBasicHardwareVersionStringCallback; + delete onReportBasicSoftwareVersionCallback; + delete onReportBasicSoftwareVersionStringCallback; + delete onReportBasicManufacturingDateCallback; + delete onReportBasicPartNumberCallback; + delete onReportBasicProductURLCallback; + delete onReportBasicProductLabelCallback; + delete onReportBasicSerialNumberCallback; + delete onReportBasicLocalConfigDisabledCallback; + delete onReportBasicReachableCallback; + delete onReportBasicClusterRevisionCallback; + delete onReportBinaryInputBasicOutOfServiceCallback; + delete onReportBinaryInputBasicPresentValueCallback; + delete onReportBinaryInputBasicStatusFlagsCallback; + delete onReportBinaryInputBasicClusterRevisionCallback; + delete onReportBindingClusterRevisionCallback; + delete onReportBooleanStateStateValueCallback; + delete onReportBooleanStateClusterRevisionCallback; + delete onReportBridgedActionsSetupUrlCallback; + delete onReportBridgedActionsClusterRevisionCallback; + delete onReportBridgedDeviceBasicClusterRevisionCallback; + delete onReportColorControlCurrentHueCallback; + delete onReportColorControlCurrentSaturationCallback; + delete onReportColorControlRemainingTimeCallback; + delete onReportColorControlCurrentXCallback; + delete onReportColorControlCurrentYCallback; + delete onReportColorControlDriftCompensationCallback; + delete onReportColorControlCompensationTextCallback; + delete onReportColorControlColorTemperatureCallback; + delete onReportColorControlColorModeCallback; + delete onReportColorControlColorControlOptionsCallback; + delete onReportColorControlNumberOfPrimariesCallback; + delete onReportColorControlPrimary1XCallback; + delete onReportColorControlPrimary1YCallback; + delete onReportColorControlPrimary1IntensityCallback; + delete onReportColorControlPrimary2XCallback; + delete onReportColorControlPrimary2YCallback; + delete onReportColorControlPrimary2IntensityCallback; + delete onReportColorControlPrimary3XCallback; + delete onReportColorControlPrimary3YCallback; + delete onReportColorControlPrimary3IntensityCallback; + delete onReportColorControlPrimary4XCallback; + delete onReportColorControlPrimary4YCallback; + delete onReportColorControlPrimary4IntensityCallback; + delete onReportColorControlPrimary5XCallback; + delete onReportColorControlPrimary5YCallback; + delete onReportColorControlPrimary5IntensityCallback; + delete onReportColorControlPrimary6XCallback; + delete onReportColorControlPrimary6YCallback; + delete onReportColorControlPrimary6IntensityCallback; + delete onReportColorControlWhitePointXCallback; + delete onReportColorControlWhitePointYCallback; + delete onReportColorControlColorPointRXCallback; + delete onReportColorControlColorPointRYCallback; + delete onReportColorControlColorPointRIntensityCallback; + delete onReportColorControlColorPointGXCallback; + delete onReportColorControlColorPointGYCallback; + delete onReportColorControlColorPointGIntensityCallback; + delete onReportColorControlColorPointBXCallback; + delete onReportColorControlColorPointBYCallback; + delete onReportColorControlColorPointBIntensityCallback; + delete onReportColorControlEnhancedCurrentHueCallback; + delete onReportColorControlEnhancedColorModeCallback; + delete onReportColorControlColorLoopActiveCallback; + delete onReportColorControlColorLoopDirectionCallback; + delete onReportColorControlColorLoopTimeCallback; + delete onReportColorControlColorLoopStartEnhancedHueCallback; + delete onReportColorControlColorLoopStoredEnhancedHueCallback; + delete onReportColorControlColorCapabilitiesCallback; + delete onReportColorControlColorTempPhysicalMinCallback; + delete onReportColorControlColorTempPhysicalMaxCallback; + delete onReportColorControlCoupleColorTempToLevelMinMiredsCallback; + delete onReportColorControlStartUpColorTemperatureMiredsCallback; + delete onReportColorControlClusterRevisionCallback; + delete onReportContentLauncherSupportedStreamingProtocolsCallback; + delete onReportContentLauncherClusterRevisionCallback; + delete onReportDescriptorClusterRevisionCallback; + delete onReportDoorLockLockStateCallback; + delete onReportDoorLockLockTypeCallback; + delete onReportDoorLockActuatorEnabledCallback; + delete onReportDoorLockDoorStateCallback; + delete onReportDoorLockLanguageCallback; + delete onReportDoorLockAutoRelockTimeCallback; + delete onReportDoorLockSoundVolumeCallback; + delete onReportDoorLockOperatingModeCallback; + delete onReportDoorLockEnableOneTouchLockingCallback; + delete onReportDoorLockEnablePrivacyModeButtonCallback; + delete onReportDoorLockWrongCodeEntryLimitCallback; + delete onReportDoorLockClusterRevisionCallback; + delete onReportElectricalMeasurementMeasurementTypeCallback; + delete onReportElectricalMeasurementTotalActivePowerCallback; + delete onReportElectricalMeasurementRmsVoltageCallback; + delete onReportElectricalMeasurementRmsVoltageMinCallback; + delete onReportElectricalMeasurementRmsVoltageMaxCallback; + delete onReportElectricalMeasurementRmsCurrentCallback; + delete onReportElectricalMeasurementRmsCurrentMinCallback; + delete onReportElectricalMeasurementRmsCurrentMaxCallback; + delete onReportElectricalMeasurementActivePowerCallback; + delete onReportElectricalMeasurementActivePowerMinCallback; + delete onReportElectricalMeasurementActivePowerMaxCallback; + delete onReportElectricalMeasurementClusterRevisionCallback; + delete onReportEthernetNetworkDiagnosticsPHYRateCallback; + delete onReportEthernetNetworkDiagnosticsFullDuplexCallback; + delete onReportEthernetNetworkDiagnosticsPacketRxCountCallback; + delete onReportEthernetNetworkDiagnosticsPacketTxCountCallback; + delete onReportEthernetNetworkDiagnosticsTxErrCountCallback; + delete onReportEthernetNetworkDiagnosticsCollisionCountCallback; + delete onReportEthernetNetworkDiagnosticsOverrunCountCallback; + delete onReportEthernetNetworkDiagnosticsCarrierDetectCallback; + delete onReportEthernetNetworkDiagnosticsTimeSinceResetCallback; + delete onReportEthernetNetworkDiagnosticsClusterRevisionCallback; + delete onReportFixedLabelClusterRevisionCallback; + delete onReportFlowMeasurementMeasuredValueCallback; + delete onReportFlowMeasurementMinMeasuredValueCallback; + delete onReportFlowMeasurementMaxMeasuredValueCallback; + delete onReportFlowMeasurementToleranceCallback; + delete onReportFlowMeasurementClusterRevisionCallback; + delete onReportGeneralCommissioningBreadcrumbCallback; + delete onReportGeneralCommissioningClusterRevisionCallback; + delete onReportGeneralDiagnosticsRebootCountCallback; + delete onReportGeneralDiagnosticsUpTimeCallback; + delete onReportGeneralDiagnosticsTotalOperationalHoursCallback; + delete onReportGeneralDiagnosticsBootReasonsCallback; + delete onReportGeneralDiagnosticsClusterRevisionCallback; + delete onReportGroupKeyManagementClusterRevisionCallback; + delete onReportGroupsNameSupportCallback; + delete onReportGroupsClusterRevisionCallback; + delete onReportIdentifyIdentifyTimeCallback; + delete onReportIdentifyIdentifyTypeCallback; + delete onReportIdentifyClusterRevisionCallback; + delete onReportIlluminanceMeasurementMeasuredValueCallback; + delete onReportIlluminanceMeasurementMinMeasuredValueCallback; + delete onReportIlluminanceMeasurementMaxMeasuredValueCallback; + delete onReportIlluminanceMeasurementToleranceCallback; + delete onReportIlluminanceMeasurementLightSensorTypeCallback; + delete onReportIlluminanceMeasurementClusterRevisionCallback; + delete onReportKeypadInputClusterRevisionCallback; + delete onReportLevelControlCurrentLevelCallback; + delete onReportLevelControlRemainingTimeCallback; + delete onReportLevelControlMinLevelCallback; + delete onReportLevelControlMaxLevelCallback; + delete onReportLevelControlCurrentFrequencyCallback; + delete onReportLevelControlMinFrequencyCallback; + delete onReportLevelControlMaxFrequencyCallback; + delete onReportLevelControlOptionsCallback; + delete onReportLevelControlOnOffTransitionTimeCallback; + delete onReportLevelControlOnLevelCallback; + delete onReportLevelControlOnTransitionTimeCallback; + delete onReportLevelControlOffTransitionTimeCallback; + delete onReportLevelControlDefaultMoveRateCallback; + delete onReportLevelControlStartUpCurrentLevelCallback; + delete onReportLevelControlClusterRevisionCallback; + delete onReportLowPowerClusterRevisionCallback; + delete onReportMediaInputCurrentMediaInputCallback; + delete onReportMediaInputClusterRevisionCallback; + delete onReportMediaPlaybackPlaybackStateCallback; + delete onReportMediaPlaybackStartTimeCallback; + delete onReportMediaPlaybackDurationCallback; + delete onReportMediaPlaybackSeekRangeEndCallback; + delete onReportMediaPlaybackSeekRangeStartCallback; + delete onReportMediaPlaybackClusterRevisionCallback; + delete onReportModeSelectCurrentModeCallback; + delete onReportModeSelectOnModeCallback; + delete onReportModeSelectStartUpModeCallback; + delete onReportModeSelectDescriptionCallback; + delete onReportModeSelectClusterRevisionCallback; + delete onReportNetworkCommissioningFeatureMapCallback; + delete onReportNetworkCommissioningClusterRevisionCallback; + delete onReportOtaSoftwareUpdateProviderClusterRevisionCallback; + delete onReportOtaSoftwareUpdateRequestorDefaultOtaProviderCallback; + delete onReportOtaSoftwareUpdateRequestorUpdatePossibleCallback; + delete onReportOtaSoftwareUpdateRequestorClusterRevisionCallback; + delete onReportOccupancySensingOccupancyCallback; + delete onReportOccupancySensingOccupancySensorTypeCallback; + delete onReportOccupancySensingOccupancySensorTypeBitmapCallback; + delete onReportOccupancySensingClusterRevisionCallback; + delete onReportOnOffOnOffCallback; + delete onReportOnOffGlobalSceneControlCallback; + delete onReportOnOffOnTimeCallback; + delete onReportOnOffOffWaitTimeCallback; + delete onReportOnOffStartUpOnOffCallback; + delete onReportOnOffFeatureMapCallback; + delete onReportOnOffClusterRevisionCallback; + delete onReportOnOffSwitchConfigurationSwitchTypeCallback; + delete onReportOnOffSwitchConfigurationSwitchActionsCallback; + delete onReportOnOffSwitchConfigurationClusterRevisionCallback; + delete onReportOperationalCredentialsSupportedFabricsCallback; + delete onReportOperationalCredentialsCommissionedFabricsCallback; + delete onReportOperationalCredentialsCurrentFabricIndexCallback; + delete onReportOperationalCredentialsClusterRevisionCallback; + delete onReportPowerSourceStatusCallback; + delete onReportPowerSourceOrderCallback; + delete onReportPowerSourceDescriptionCallback; + delete onReportPowerSourceBatteryVoltageCallback; + delete onReportPowerSourceBatteryPercentRemainingCallback; + delete onReportPowerSourceBatteryTimeRemainingCallback; + delete onReportPowerSourceBatteryChargeLevelCallback; + delete onReportPowerSourceBatteryChargeStateCallback; + delete onReportPowerSourceFeatureMapCallback; + delete onReportPowerSourceClusterRevisionCallback; + delete onReportPressureMeasurementMeasuredValueCallback; + delete onReportPressureMeasurementMinMeasuredValueCallback; + delete onReportPressureMeasurementMaxMeasuredValueCallback; + delete onReportPressureMeasurementClusterRevisionCallback; + delete onReportPumpConfigurationAndControlMaxPressureCallback; + delete onReportPumpConfigurationAndControlMaxSpeedCallback; + delete onReportPumpConfigurationAndControlMaxFlowCallback; + delete onReportPumpConfigurationAndControlMinConstPressureCallback; + delete onReportPumpConfigurationAndControlMaxConstPressureCallback; + delete onReportPumpConfigurationAndControlMinCompPressureCallback; + delete onReportPumpConfigurationAndControlMaxCompPressureCallback; + delete onReportPumpConfigurationAndControlMinConstSpeedCallback; + delete onReportPumpConfigurationAndControlMaxConstSpeedCallback; + delete onReportPumpConfigurationAndControlMinConstFlowCallback; + delete onReportPumpConfigurationAndControlMaxConstFlowCallback; + delete onReportPumpConfigurationAndControlMinConstTempCallback; + delete onReportPumpConfigurationAndControlMaxConstTempCallback; + delete onReportPumpConfigurationAndControlPumpStatusCallback; + delete onReportPumpConfigurationAndControlEffectiveOperationModeCallback; + delete onReportPumpConfigurationAndControlEffectiveControlModeCallback; + delete onReportPumpConfigurationAndControlCapacityCallback; + delete onReportPumpConfigurationAndControlSpeedCallback; + delete onReportPumpConfigurationAndControlLifetimeRunningHoursCallback; + delete onReportPumpConfigurationAndControlPowerCallback; + delete onReportPumpConfigurationAndControlLifetimeEnergyConsumedCallback; + delete onReportPumpConfigurationAndControlOperationModeCallback; + delete onReportPumpConfigurationAndControlControlModeCallback; + delete onReportPumpConfigurationAndControlAlarmMaskCallback; + delete onReportPumpConfigurationAndControlFeatureMapCallback; + delete onReportPumpConfigurationAndControlClusterRevisionCallback; + delete onReportRelativeHumidityMeasurementMeasuredValueCallback; + delete onReportRelativeHumidityMeasurementMinMeasuredValueCallback; + delete onReportRelativeHumidityMeasurementMaxMeasuredValueCallback; + delete onReportRelativeHumidityMeasurementToleranceCallback; + delete onReportRelativeHumidityMeasurementClusterRevisionCallback; + delete onReportScenesSceneCountCallback; + delete onReportScenesCurrentSceneCallback; + delete onReportScenesCurrentGroupCallback; + delete onReportScenesSceneValidCallback; + delete onReportScenesNameSupportCallback; + delete onReportScenesClusterRevisionCallback; + delete onReportSoftwareDiagnosticsCurrentHeapFreeCallback; + delete onReportSoftwareDiagnosticsCurrentHeapUsedCallback; + delete onReportSoftwareDiagnosticsCurrentHeapHighWatermarkCallback; + delete onReportSoftwareDiagnosticsClusterRevisionCallback; + delete onReportSwitchNumberOfPositionsCallback; + delete onReportSwitchCurrentPositionCallback; + delete onReportSwitchMultiPressMaxCallback; + delete onReportSwitchFeatureMapCallback; + delete onReportSwitchClusterRevisionCallback; + delete onReportTvChannelClusterRevisionCallback; + delete onReportTargetNavigatorClusterRevisionCallback; + delete onReportTemperatureMeasurementMeasuredValueCallback; + delete onReportTemperatureMeasurementMinMeasuredValueCallback; + delete onReportTemperatureMeasurementMaxMeasuredValueCallback; + delete onReportTemperatureMeasurementToleranceCallback; + delete onReportTemperatureMeasurementClusterRevisionCallback; + delete onReportTestClusterBooleanCallback; + delete onReportTestClusterBitmap8Callback; + delete onReportTestClusterBitmap16Callback; + delete onReportTestClusterBitmap32Callback; + delete onReportTestClusterBitmap64Callback; + delete onReportTestClusterInt8uCallback; + delete onReportTestClusterInt16uCallback; + delete onReportTestClusterInt24uCallback; + delete onReportTestClusterInt32uCallback; + delete onReportTestClusterInt40uCallback; + delete onReportTestClusterInt48uCallback; + delete onReportTestClusterInt56uCallback; + delete onReportTestClusterInt64uCallback; + delete onReportTestClusterInt8sCallback; + delete onReportTestClusterInt16sCallback; + delete onReportTestClusterInt24sCallback; + delete onReportTestClusterInt32sCallback; + delete onReportTestClusterInt40sCallback; + delete onReportTestClusterInt48sCallback; + delete onReportTestClusterInt56sCallback; + delete onReportTestClusterInt64sCallback; + delete onReportTestClusterEnum8Callback; + delete onReportTestClusterEnum16Callback; + delete onReportTestClusterFloatSingleCallback; + delete onReportTestClusterFloatDoubleCallback; + delete onReportTestClusterOctetStringCallback; + delete onReportTestClusterLongOctetStringCallback; + delete onReportTestClusterCharStringCallback; + delete onReportTestClusterLongCharStringCallback; + delete onReportTestClusterEpochUsCallback; + delete onReportTestClusterEpochSCallback; + delete onReportTestClusterVendorIdCallback; + delete onReportTestClusterEnumAttrCallback; + delete onReportTestClusterRangeRestrictedInt8uCallback; + delete onReportTestClusterRangeRestrictedInt8sCallback; + delete onReportTestClusterRangeRestrictedInt16uCallback; + delete onReportTestClusterRangeRestrictedInt16sCallback; + delete onReportTestClusterUnsupportedCallback; + delete onReportTestClusterNullableBooleanCallback; + delete onReportTestClusterNullableBitmap8Callback; + delete onReportTestClusterNullableBitmap16Callback; + delete onReportTestClusterNullableBitmap32Callback; + delete onReportTestClusterNullableBitmap64Callback; + delete onReportTestClusterNullableInt8uCallback; + delete onReportTestClusterNullableInt16uCallback; + delete onReportTestClusterNullableInt24uCallback; + delete onReportTestClusterNullableInt32uCallback; + delete onReportTestClusterNullableInt40uCallback; + delete onReportTestClusterNullableInt48uCallback; + delete onReportTestClusterNullableInt56uCallback; + delete onReportTestClusterNullableInt64uCallback; + delete onReportTestClusterNullableInt8sCallback; + delete onReportTestClusterNullableInt16sCallback; + delete onReportTestClusterNullableInt24sCallback; + delete onReportTestClusterNullableInt32sCallback; + delete onReportTestClusterNullableInt40sCallback; + delete onReportTestClusterNullableInt48sCallback; + delete onReportTestClusterNullableInt56sCallback; + delete onReportTestClusterNullableInt64sCallback; + delete onReportTestClusterNullableEnum8Callback; + delete onReportTestClusterNullableEnum16Callback; + delete onReportTestClusterNullableFloatSingleCallback; + delete onReportTestClusterNullableFloatDoubleCallback; + delete onReportTestClusterNullableOctetStringCallback; + delete onReportTestClusterNullableCharStringCallback; + delete onReportTestClusterNullableEnumAttrCallback; + delete onReportTestClusterNullableRangeRestrictedInt8uCallback; + delete onReportTestClusterNullableRangeRestrictedInt8sCallback; + delete onReportTestClusterNullableRangeRestrictedInt16uCallback; + delete onReportTestClusterNullableRangeRestrictedInt16sCallback; + delete onReportTestClusterClusterRevisionCallback; + delete onReportThermostatLocalTemperatureCallback; + delete onReportThermostatAbsMinHeatSetpointLimitCallback; + delete onReportThermostatAbsMaxHeatSetpointLimitCallback; + delete onReportThermostatAbsMinCoolSetpointLimitCallback; + delete onReportThermostatAbsMaxCoolSetpointLimitCallback; + delete onReportThermostatOccupiedCoolingSetpointCallback; + delete onReportThermostatOccupiedHeatingSetpointCallback; + delete onReportThermostatMinHeatSetpointLimitCallback; + delete onReportThermostatMaxHeatSetpointLimitCallback; + delete onReportThermostatMinCoolSetpointLimitCallback; + delete onReportThermostatMaxCoolSetpointLimitCallback; + delete onReportThermostatMinSetpointDeadBandCallback; + delete onReportThermostatControlSequenceOfOperationCallback; + delete onReportThermostatSystemModeCallback; + delete onReportThermostatStartOfWeekCallback; + delete onReportThermostatNumberOfWeeklyTransitionsCallback; + delete onReportThermostatNumberOfDailyTransitionsCallback; + delete onReportThermostatFeatureMapCallback; + delete onReportThermostatClusterRevisionCallback; + delete onReportThermostatUserInterfaceConfigurationTemperatureDisplayModeCallback; + delete onReportThermostatUserInterfaceConfigurationKeypadLockoutCallback; + delete onReportThermostatUserInterfaceConfigurationScheduleProgrammingVisibilityCallback; + delete onReportThermostatUserInterfaceConfigurationClusterRevisionCallback; + delete onReportThreadNetworkDiagnosticsChannelCallback; + delete onReportThreadNetworkDiagnosticsRoutingRoleCallback; + delete onReportThreadNetworkDiagnosticsNetworkNameCallback; + delete onReportThreadNetworkDiagnosticsPanIdCallback; + delete onReportThreadNetworkDiagnosticsExtendedPanIdCallback; + delete onReportThreadNetworkDiagnosticsMeshLocalPrefixCallback; + delete onReportThreadNetworkDiagnosticsOverrunCountCallback; + delete onReportThreadNetworkDiagnosticsPartitionIdCallback; + delete onReportThreadNetworkDiagnosticsWeightingCallback; + delete onReportThreadNetworkDiagnosticsDataVersionCallback; + delete onReportThreadNetworkDiagnosticsStableDataVersionCallback; + delete onReportThreadNetworkDiagnosticsLeaderRouterIdCallback; + delete onReportThreadNetworkDiagnosticsDetachedRoleCountCallback; + delete onReportThreadNetworkDiagnosticsChildRoleCountCallback; + delete onReportThreadNetworkDiagnosticsRouterRoleCountCallback; + delete onReportThreadNetworkDiagnosticsLeaderRoleCountCallback; + delete onReportThreadNetworkDiagnosticsAttachAttemptCountCallback; + delete onReportThreadNetworkDiagnosticsPartitionIdChangeCountCallback; + delete onReportThreadNetworkDiagnosticsBetterPartitionAttachAttemptCountCallback; + delete onReportThreadNetworkDiagnosticsParentChangeCountCallback; + delete onReportThreadNetworkDiagnosticsTxTotalCountCallback; + delete onReportThreadNetworkDiagnosticsTxUnicastCountCallback; + delete onReportThreadNetworkDiagnosticsTxBroadcastCountCallback; + delete onReportThreadNetworkDiagnosticsTxAckRequestedCountCallback; + delete onReportThreadNetworkDiagnosticsTxAckedCountCallback; + delete onReportThreadNetworkDiagnosticsTxNoAckRequestedCountCallback; + delete onReportThreadNetworkDiagnosticsTxDataCountCallback; + delete onReportThreadNetworkDiagnosticsTxDataPollCountCallback; + delete onReportThreadNetworkDiagnosticsTxBeaconCountCallback; + delete onReportThreadNetworkDiagnosticsTxBeaconRequestCountCallback; + delete onReportThreadNetworkDiagnosticsTxOtherCountCallback; + delete onReportThreadNetworkDiagnosticsTxRetryCountCallback; + delete onReportThreadNetworkDiagnosticsTxDirectMaxRetryExpiryCountCallback; + delete onReportThreadNetworkDiagnosticsTxIndirectMaxRetryExpiryCountCallback; + delete onReportThreadNetworkDiagnosticsTxErrCcaCountCallback; + delete onReportThreadNetworkDiagnosticsTxErrAbortCountCallback; + delete onReportThreadNetworkDiagnosticsTxErrBusyChannelCountCallback; + delete onReportThreadNetworkDiagnosticsRxTotalCountCallback; + delete onReportThreadNetworkDiagnosticsRxUnicastCountCallback; + delete onReportThreadNetworkDiagnosticsRxBroadcastCountCallback; + delete onReportThreadNetworkDiagnosticsRxDataCountCallback; + delete onReportThreadNetworkDiagnosticsRxDataPollCountCallback; + delete onReportThreadNetworkDiagnosticsRxBeaconCountCallback; + delete onReportThreadNetworkDiagnosticsRxBeaconRequestCountCallback; + delete onReportThreadNetworkDiagnosticsRxOtherCountCallback; + delete onReportThreadNetworkDiagnosticsRxAddressFilteredCountCallback; + delete onReportThreadNetworkDiagnosticsRxDestAddrFilteredCountCallback; + delete onReportThreadNetworkDiagnosticsRxDuplicatedCountCallback; + delete onReportThreadNetworkDiagnosticsRxErrNoFrameCountCallback; + delete onReportThreadNetworkDiagnosticsRxErrUnknownNeighborCountCallback; + delete onReportThreadNetworkDiagnosticsRxErrInvalidSrcAddrCountCallback; + delete onReportThreadNetworkDiagnosticsRxErrSecCountCallback; + delete onReportThreadNetworkDiagnosticsRxErrFcsCountCallback; + delete onReportThreadNetworkDiagnosticsRxErrOtherCountCallback; + delete onReportThreadNetworkDiagnosticsActiveTimestampCallback; + delete onReportThreadNetworkDiagnosticsPendingTimestampCallback; + delete onReportThreadNetworkDiagnosticsDelayCallback; + delete onReportThreadNetworkDiagnosticsChannelMaskCallback; + delete onReportThreadNetworkDiagnosticsClusterRevisionCallback; + delete onReportWakeOnLanWakeOnLanMacAddressCallback; + delete onReportWakeOnLanClusterRevisionCallback; + delete onReportWiFiNetworkDiagnosticsBssidCallback; + delete onReportWiFiNetworkDiagnosticsSecurityTypeCallback; + delete onReportWiFiNetworkDiagnosticsWiFiVersionCallback; + delete onReportWiFiNetworkDiagnosticsChannelNumberCallback; + delete onReportWiFiNetworkDiagnosticsRssiCallback; + delete onReportWiFiNetworkDiagnosticsBeaconLostCountCallback; + delete onReportWiFiNetworkDiagnosticsBeaconRxCountCallback; + delete onReportWiFiNetworkDiagnosticsPacketMulticastRxCountCallback; + delete onReportWiFiNetworkDiagnosticsPacketMulticastTxCountCallback; + delete onReportWiFiNetworkDiagnosticsPacketUnicastRxCountCallback; + delete onReportWiFiNetworkDiagnosticsPacketUnicastTxCountCallback; + delete onReportWiFiNetworkDiagnosticsCurrentMaxRateCallback; + delete onReportWiFiNetworkDiagnosticsOverrunCountCallback; + delete onReportWiFiNetworkDiagnosticsClusterRevisionCallback; + delete onReportWindowCoveringTypeCallback; + delete onReportWindowCoveringCurrentPositionLiftCallback; + delete onReportWindowCoveringCurrentPositionTiltCallback; + delete onReportWindowCoveringConfigStatusCallback; + delete onReportWindowCoveringCurrentPositionLiftPercentageCallback; + delete onReportWindowCoveringCurrentPositionTiltPercentageCallback; + delete onReportWindowCoveringOperationalStatusCallback; + delete onReportWindowCoveringTargetPositionLiftPercent100thsCallback; + delete onReportWindowCoveringTargetPositionTiltPercent100thsCallback; + delete onReportWindowCoveringEndProductTypeCallback; + delete onReportWindowCoveringCurrentPositionLiftPercent100thsCallback; + delete onReportWindowCoveringCurrentPositionTiltPercent100thsCallback; + delete onReportWindowCoveringInstalledOpenLimitLiftCallback; + delete onReportWindowCoveringInstalledClosedLimitLiftCallback; + delete onReportWindowCoveringInstalledOpenLimitTiltCallback; + delete onReportWindowCoveringInstalledClosedLimitTiltCallback; + delete onReportWindowCoveringModeCallback; + delete onReportWindowCoveringSafetyStatusCallback; + delete onReportWindowCoveringFeatureMapCallback; + delete onReportWindowCoveringClusterRevisionCallback; + } + + void AddReportCallbacks(NodeId remoteId, uint8_t endpointId) override + { + chip::app::CHIPDeviceCallbacksMgr & callbacksMgr = chip::app::CHIPDeviceCallbacksMgr::GetInstance(); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050E, 0xFFFD, onReportAccountLoginClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003C, 0xFFFD, + onReportAdministratorCommissioningClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050D, 0x0000, onReportApplicationBasicVendorNameCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050D, 0x0001, onReportApplicationBasicVendorIdCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050D, 0x0002, + onReportApplicationBasicApplicationNameCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050D, 0x0003, onReportApplicationBasicProductIdCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050D, 0x0005, + onReportApplicationBasicApplicationStatusCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050D, 0x0006, + onReportApplicationBasicApplicationVersionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050D, 0xFFFD, + onReportApplicationBasicClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050C, 0xFFFD, + onReportApplicationLauncherClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050B, 0x0001, + onReportAudioOutputCurrentAudioOutputCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050B, 0xFFFD, onReportAudioOutputClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0103, 0x0001, + onReportBarrierControlBarrierMovingStateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0103, 0x0002, + onReportBarrierControlBarrierSafetyStatusCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0103, 0x0003, + onReportBarrierControlBarrierCapabilitiesCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0103, 0x000A, + onReportBarrierControlBarrierPositionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0103, 0xFFFD, + onReportBarrierControlClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0000, onReportBasicInteractionModelVersionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0001, onReportBasicVendorNameCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0002, onReportBasicVendorIDCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0003, onReportBasicProductNameCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0004, onReportBasicProductIDCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0005, onReportBasicNodeLabelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0006, onReportBasicLocationCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0007, onReportBasicHardwareVersionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0008, onReportBasicHardwareVersionStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0009, onReportBasicSoftwareVersionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x000A, onReportBasicSoftwareVersionStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x000B, onReportBasicManufacturingDateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x000C, onReportBasicPartNumberCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x000D, onReportBasicProductURLCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x000E, onReportBasicProductLabelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x000F, onReportBasicSerialNumberCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0010, onReportBasicLocalConfigDisabledCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0x0011, onReportBasicReachableCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0028, 0xFFFD, onReportBasicClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x000F, 0x0051, onReportBinaryInputBasicOutOfServiceCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x000F, 0x0055, onReportBinaryInputBasicPresentValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x000F, 0x006F, onReportBinaryInputBasicStatusFlagsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x000F, 0xFFFD, + onReportBinaryInputBasicClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x001E, 0xFFFD, onReportBindingClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0045, 0x0000, onReportBooleanStateStateValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0045, 0xFFFD, onReportBooleanStateClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0025, 0x0002, onReportBridgedActionsSetupUrlCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0025, 0xFFFD, + onReportBridgedActionsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0039, 0xFFFD, + onReportBridgedDeviceBasicClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0000, onReportColorControlCurrentHueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0001, + onReportColorControlCurrentSaturationCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0002, onReportColorControlRemainingTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0003, onReportColorControlCurrentXCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0004, onReportColorControlCurrentYCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0005, + onReportColorControlDriftCompensationCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0006, onReportColorControlCompensationTextCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0007, onReportColorControlColorTemperatureCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0008, onReportColorControlColorModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x000F, + onReportColorControlColorControlOptionsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0010, + onReportColorControlNumberOfPrimariesCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0011, onReportColorControlPrimary1XCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0012, onReportColorControlPrimary1YCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0013, + onReportColorControlPrimary1IntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0015, onReportColorControlPrimary2XCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0016, onReportColorControlPrimary2YCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0017, + onReportColorControlPrimary2IntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0019, onReportColorControlPrimary3XCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x001A, onReportColorControlPrimary3YCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x001B, + onReportColorControlPrimary3IntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0020, onReportColorControlPrimary4XCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0021, onReportColorControlPrimary4YCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0022, + onReportColorControlPrimary4IntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0024, onReportColorControlPrimary5XCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0025, onReportColorControlPrimary5YCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0026, + onReportColorControlPrimary5IntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0028, onReportColorControlPrimary6XCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0029, onReportColorControlPrimary6YCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x002A, + onReportColorControlPrimary6IntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0030, onReportColorControlWhitePointXCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0031, onReportColorControlWhitePointYCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0032, onReportColorControlColorPointRXCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0033, onReportColorControlColorPointRYCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0034, + onReportColorControlColorPointRIntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0036, onReportColorControlColorPointGXCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0037, onReportColorControlColorPointGYCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x0038, + onReportColorControlColorPointGIntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x003A, onReportColorControlColorPointBXCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x003B, onReportColorControlColorPointBYCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x003C, + onReportColorControlColorPointBIntensityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4000, + onReportColorControlEnhancedCurrentHueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4001, + onReportColorControlEnhancedColorModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4002, onReportColorControlColorLoopActiveCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4003, + onReportColorControlColorLoopDirectionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4004, onReportColorControlColorLoopTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4005, + onReportColorControlColorLoopStartEnhancedHueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4006, + onReportColorControlColorLoopStoredEnhancedHueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x400A, + onReportColorControlColorCapabilitiesCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x400B, + onReportColorControlColorTempPhysicalMinCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x400C, + onReportColorControlColorTempPhysicalMaxCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x400D, + onReportColorControlCoupleColorTempToLevelMinMiredsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0x4010, + onReportColorControlStartUpColorTemperatureMiredsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0300, 0xFFFD, onReportColorControlClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050A, 0x0001, + onReportContentLauncherSupportedStreamingProtocolsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050A, 0xFFFD, + onReportContentLauncherClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x001D, 0xFFFD, onReportDescriptorClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0000, onReportDoorLockLockStateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0001, onReportDoorLockLockTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0002, onReportDoorLockActuatorEnabledCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0003, onReportDoorLockDoorStateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0021, onReportDoorLockLanguageCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0023, onReportDoorLockAutoRelockTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0024, onReportDoorLockSoundVolumeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0025, onReportDoorLockOperatingModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0029, + onReportDoorLockEnableOneTouchLockingCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x002B, + onReportDoorLockEnablePrivacyModeButtonCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0x0030, onReportDoorLockWrongCodeEntryLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0101, 0xFFFD, onReportDoorLockClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x0000, + onReportElectricalMeasurementMeasurementTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x0304, + onReportElectricalMeasurementTotalActivePowerCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x0505, + onReportElectricalMeasurementRmsVoltageCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x0506, + onReportElectricalMeasurementRmsVoltageMinCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x0507, + onReportElectricalMeasurementRmsVoltageMaxCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x0508, + onReportElectricalMeasurementRmsCurrentCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x0509, + onReportElectricalMeasurementRmsCurrentMinCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x050A, + onReportElectricalMeasurementRmsCurrentMaxCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x050B, + onReportElectricalMeasurementActivePowerCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x050C, + onReportElectricalMeasurementActivePowerMinCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0x050D, + onReportElectricalMeasurementActivePowerMaxCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0B04, 0xFFFD, + onReportElectricalMeasurementClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0000, + onReportEthernetNetworkDiagnosticsPHYRateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0001, + onReportEthernetNetworkDiagnosticsFullDuplexCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0002, + onReportEthernetNetworkDiagnosticsPacketRxCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0003, + onReportEthernetNetworkDiagnosticsPacketTxCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0004, + onReportEthernetNetworkDiagnosticsTxErrCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0005, + onReportEthernetNetworkDiagnosticsCollisionCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0006, + onReportEthernetNetworkDiagnosticsOverrunCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0007, + onReportEthernetNetworkDiagnosticsCarrierDetectCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0x0008, + onReportEthernetNetworkDiagnosticsTimeSinceResetCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0037, 0xFFFD, + onReportEthernetNetworkDiagnosticsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0040, 0xFFFD, onReportFixedLabelClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0404, 0x0000, onReportFlowMeasurementMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0404, 0x0001, + onReportFlowMeasurementMinMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0404, 0x0002, + onReportFlowMeasurementMaxMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0404, 0x0003, onReportFlowMeasurementToleranceCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0404, 0xFFFD, + onReportFlowMeasurementClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0030, 0x0000, + onReportGeneralCommissioningBreadcrumbCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0030, 0xFFFD, + onReportGeneralCommissioningClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0033, 0x0001, + onReportGeneralDiagnosticsRebootCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0033, 0x0002, onReportGeneralDiagnosticsUpTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0033, 0x0003, + onReportGeneralDiagnosticsTotalOperationalHoursCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0033, 0x0004, + onReportGeneralDiagnosticsBootReasonsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0033, 0xFFFD, + onReportGeneralDiagnosticsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003F, 0xFFFD, + onReportGroupKeyManagementClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0004, 0x0000, onReportGroupsNameSupportCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0004, 0xFFFD, onReportGroupsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0003, 0x0000, onReportIdentifyIdentifyTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0003, 0x0001, onReportIdentifyIdentifyTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0003, 0xFFFD, onReportIdentifyClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0400, 0x0000, + onReportIlluminanceMeasurementMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0400, 0x0001, + onReportIlluminanceMeasurementMinMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0400, 0x0002, + onReportIlluminanceMeasurementMaxMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0400, 0x0003, + onReportIlluminanceMeasurementToleranceCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0400, 0x0004, + onReportIlluminanceMeasurementLightSensorTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0400, 0xFFFD, + onReportIlluminanceMeasurementClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0509, 0xFFFD, onReportKeypadInputClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0000, onReportLevelControlCurrentLevelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0001, onReportLevelControlRemainingTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0002, onReportLevelControlMinLevelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0003, onReportLevelControlMaxLevelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0004, onReportLevelControlCurrentFrequencyCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0005, onReportLevelControlMinFrequencyCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0006, onReportLevelControlMaxFrequencyCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x000F, onReportLevelControlOptionsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0010, + onReportLevelControlOnOffTransitionTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0011, onReportLevelControlOnLevelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0012, onReportLevelControlOnTransitionTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0013, + onReportLevelControlOffTransitionTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x0014, onReportLevelControlDefaultMoveRateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0x4000, + onReportLevelControlStartUpCurrentLevelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0008, 0xFFFD, onReportLevelControlClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0508, 0xFFFD, onReportLowPowerClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0507, 0x0001, onReportMediaInputCurrentMediaInputCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0507, 0xFFFD, onReportMediaInputClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0506, 0x0000, onReportMediaPlaybackPlaybackStateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0506, 0x0001, onReportMediaPlaybackStartTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0506, 0x0002, onReportMediaPlaybackDurationCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0506, 0x0005, onReportMediaPlaybackSeekRangeEndCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0506, 0x0006, onReportMediaPlaybackSeekRangeStartCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0506, 0xFFFD, onReportMediaPlaybackClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0050, 0x0000, onReportModeSelectCurrentModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0050, 0x0002, onReportModeSelectOnModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0050, 0x0003, onReportModeSelectStartUpModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0050, 0x0004, onReportModeSelectDescriptionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0050, 0xFFFD, onReportModeSelectClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0031, 0xFFFC, + onReportNetworkCommissioningFeatureMapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0031, 0xFFFD, + onReportNetworkCommissioningClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0029, 0xFFFD, + onReportOtaSoftwareUpdateProviderClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002A, 0x0001, + onReportOtaSoftwareUpdateRequestorDefaultOtaProviderCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002A, 0x0002, + onReportOtaSoftwareUpdateRequestorUpdatePossibleCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002A, 0xFFFD, + onReportOtaSoftwareUpdateRequestorClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0406, 0x0000, onReportOccupancySensingOccupancyCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0406, 0x0001, + onReportOccupancySensingOccupancySensorTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0406, 0x0002, + onReportOccupancySensingOccupancySensorTypeBitmapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0406, 0xFFFD, + onReportOccupancySensingClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0006, 0x0000, onReportOnOffOnOffCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0006, 0x4000, onReportOnOffGlobalSceneControlCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0006, 0x4001, onReportOnOffOnTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0006, 0x4002, onReportOnOffOffWaitTimeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0006, 0x4003, onReportOnOffStartUpOnOffCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0006, 0xFFFC, onReportOnOffFeatureMapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0006, 0xFFFD, onReportOnOffClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0007, 0x0000, + onReportOnOffSwitchConfigurationSwitchTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0007, 0x0010, + onReportOnOffSwitchConfigurationSwitchActionsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0007, 0xFFFD, + onReportOnOffSwitchConfigurationClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003E, 0x0002, + onReportOperationalCredentialsSupportedFabricsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003E, 0x0003, + onReportOperationalCredentialsCommissionedFabricsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003E, 0x0005, + onReportOperationalCredentialsCurrentFabricIndexCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003E, 0xFFFD, + onReportOperationalCredentialsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x0000, onReportPowerSourceStatusCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x0001, onReportPowerSourceOrderCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x0002, onReportPowerSourceDescriptionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x000B, onReportPowerSourceBatteryVoltageCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x000C, + onReportPowerSourceBatteryPercentRemainingCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x000D, + onReportPowerSourceBatteryTimeRemainingCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x000E, + onReportPowerSourceBatteryChargeLevelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0x001A, + onReportPowerSourceBatteryChargeStateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0xFFFC, onReportPowerSourceFeatureMapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x002F, 0xFFFD, onReportPowerSourceClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0403, 0x0000, + onReportPressureMeasurementMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0403, 0x0001, + onReportPressureMeasurementMinMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0403, 0x0002, + onReportPressureMeasurementMaxMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0403, 0xFFFD, + onReportPressureMeasurementClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0000, + onReportPumpConfigurationAndControlMaxPressureCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0001, + onReportPumpConfigurationAndControlMaxSpeedCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0002, + onReportPumpConfigurationAndControlMaxFlowCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0003, + onReportPumpConfigurationAndControlMinConstPressureCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0004, + onReportPumpConfigurationAndControlMaxConstPressureCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0005, + onReportPumpConfigurationAndControlMinCompPressureCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0006, + onReportPumpConfigurationAndControlMaxCompPressureCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0007, + onReportPumpConfigurationAndControlMinConstSpeedCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0008, + onReportPumpConfigurationAndControlMaxConstSpeedCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0009, + onReportPumpConfigurationAndControlMinConstFlowCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x000A, + onReportPumpConfigurationAndControlMaxConstFlowCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x000B, + onReportPumpConfigurationAndControlMinConstTempCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x000C, + onReportPumpConfigurationAndControlMaxConstTempCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0010, + onReportPumpConfigurationAndControlPumpStatusCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0011, + onReportPumpConfigurationAndControlEffectiveOperationModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0012, + onReportPumpConfigurationAndControlEffectiveControlModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0013, + onReportPumpConfigurationAndControlCapacityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0014, + onReportPumpConfigurationAndControlSpeedCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0015, + onReportPumpConfigurationAndControlLifetimeRunningHoursCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0016, + onReportPumpConfigurationAndControlPowerCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0017, + onReportPumpConfigurationAndControlLifetimeEnergyConsumedCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0020, + onReportPumpConfigurationAndControlOperationModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0021, + onReportPumpConfigurationAndControlControlModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0x0022, + onReportPumpConfigurationAndControlAlarmMaskCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0xFFFC, + onReportPumpConfigurationAndControlFeatureMapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0200, 0xFFFD, + onReportPumpConfigurationAndControlClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0405, 0x0000, + onReportRelativeHumidityMeasurementMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0405, 0x0001, + onReportRelativeHumidityMeasurementMinMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0405, 0x0002, + onReportRelativeHumidityMeasurementMaxMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0405, 0x0003, + onReportRelativeHumidityMeasurementToleranceCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0405, 0xFFFD, + onReportRelativeHumidityMeasurementClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0005, 0x0000, onReportScenesSceneCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0005, 0x0001, onReportScenesCurrentSceneCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0005, 0x0002, onReportScenesCurrentGroupCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0005, 0x0003, onReportScenesSceneValidCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0005, 0x0004, onReportScenesNameSupportCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0005, 0xFFFD, onReportScenesClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0034, 0x0001, + onReportSoftwareDiagnosticsCurrentHeapFreeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0034, 0x0002, + onReportSoftwareDiagnosticsCurrentHeapUsedCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0034, 0x0003, + onReportSoftwareDiagnosticsCurrentHeapHighWatermarkCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0034, 0xFFFD, + onReportSoftwareDiagnosticsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003B, 0x0000, onReportSwitchNumberOfPositionsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003B, 0x0001, onReportSwitchCurrentPositionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003B, 0x0002, onReportSwitchMultiPressMaxCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003B, 0xFFFC, onReportSwitchFeatureMapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x003B, 0xFFFD, onReportSwitchClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0504, 0xFFFD, onReportTvChannelClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0505, 0xFFFD, + onReportTargetNavigatorClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0402, 0x0000, + onReportTemperatureMeasurementMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0402, 0x0001, + onReportTemperatureMeasurementMinMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0402, 0x0002, + onReportTemperatureMeasurementMaxMeasuredValueCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0402, 0x0003, + onReportTemperatureMeasurementToleranceCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0402, 0xFFFD, + onReportTemperatureMeasurementClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0000, onReportTestClusterBooleanCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0001, onReportTestClusterBitmap8Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0002, onReportTestClusterBitmap16Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0003, onReportTestClusterBitmap32Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0004, onReportTestClusterBitmap64Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0005, onReportTestClusterInt8uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0006, onReportTestClusterInt16uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0007, onReportTestClusterInt24uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0008, onReportTestClusterInt32uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0009, onReportTestClusterInt40uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x000A, onReportTestClusterInt48uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x000B, onReportTestClusterInt56uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x000C, onReportTestClusterInt64uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x000D, onReportTestClusterInt8sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x000E, onReportTestClusterInt16sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x000F, onReportTestClusterInt24sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0010, onReportTestClusterInt32sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0011, onReportTestClusterInt40sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0012, onReportTestClusterInt48sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0013, onReportTestClusterInt56sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0014, onReportTestClusterInt64sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0015, onReportTestClusterEnum8Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0016, onReportTestClusterEnum16Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0017, onReportTestClusterFloatSingleCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0018, onReportTestClusterFloatDoubleCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0019, onReportTestClusterOctetStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x001D, onReportTestClusterLongOctetStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x001E, onReportTestClusterCharStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x001F, onReportTestClusterLongCharStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0020, onReportTestClusterEpochUsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0021, onReportTestClusterEpochSCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0022, onReportTestClusterVendorIdCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0024, onReportTestClusterEnumAttrCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0026, + onReportTestClusterRangeRestrictedInt8uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0027, + onReportTestClusterRangeRestrictedInt8sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0028, + onReportTestClusterRangeRestrictedInt16uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x0029, + onReportTestClusterRangeRestrictedInt16sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x00FF, onReportTestClusterUnsupportedCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8000, onReportTestClusterNullableBooleanCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8001, onReportTestClusterNullableBitmap8Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8002, onReportTestClusterNullableBitmap16Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8003, onReportTestClusterNullableBitmap32Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8004, onReportTestClusterNullableBitmap64Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8005, onReportTestClusterNullableInt8uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8006, onReportTestClusterNullableInt16uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8007, onReportTestClusterNullableInt24uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8008, onReportTestClusterNullableInt32uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8009, onReportTestClusterNullableInt40uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x800A, onReportTestClusterNullableInt48uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x800B, onReportTestClusterNullableInt56uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x800C, onReportTestClusterNullableInt64uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x800D, onReportTestClusterNullableInt8sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x800E, onReportTestClusterNullableInt16sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x800F, onReportTestClusterNullableInt24sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8010, onReportTestClusterNullableInt32sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8011, onReportTestClusterNullableInt40sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8012, onReportTestClusterNullableInt48sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8013, onReportTestClusterNullableInt56sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8014, onReportTestClusterNullableInt64sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8015, onReportTestClusterNullableEnum8Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8016, onReportTestClusterNullableEnum16Callback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8017, + onReportTestClusterNullableFloatSingleCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8018, + onReportTestClusterNullableFloatDoubleCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8019, + onReportTestClusterNullableOctetStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x801E, + onReportTestClusterNullableCharStringCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8024, onReportTestClusterNullableEnumAttrCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8026, + onReportTestClusterNullableRangeRestrictedInt8uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8027, + onReportTestClusterNullableRangeRestrictedInt8sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8028, + onReportTestClusterNullableRangeRestrictedInt16uCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0x8029, + onReportTestClusterNullableRangeRestrictedInt16sCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x050F, 0xFFFD, onReportTestClusterClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0000, onReportThermostatLocalTemperatureCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0003, + onReportThermostatAbsMinHeatSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0004, + onReportThermostatAbsMaxHeatSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0005, + onReportThermostatAbsMinCoolSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0006, + onReportThermostatAbsMaxCoolSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0011, + onReportThermostatOccupiedCoolingSetpointCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0012, + onReportThermostatOccupiedHeatingSetpointCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0015, + onReportThermostatMinHeatSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0016, + onReportThermostatMaxHeatSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0017, + onReportThermostatMinCoolSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0018, + onReportThermostatMaxCoolSetpointLimitCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0019, + onReportThermostatMinSetpointDeadBandCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x001B, + onReportThermostatControlSequenceOfOperationCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x001C, onReportThermostatSystemModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0020, onReportThermostatStartOfWeekCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0021, + onReportThermostatNumberOfWeeklyTransitionsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0x0022, + onReportThermostatNumberOfDailyTransitionsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0xFFFC, onReportThermostatFeatureMapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0201, 0xFFFD, onReportThermostatClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0204, 0x0000, + onReportThermostatUserInterfaceConfigurationTemperatureDisplayModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0204, 0x0001, + onReportThermostatUserInterfaceConfigurationKeypadLockoutCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0204, 0x0002, + onReportThermostatUserInterfaceConfigurationScheduleProgrammingVisibilityCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0204, 0xFFFD, + onReportThermostatUserInterfaceConfigurationClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0000, + onReportThreadNetworkDiagnosticsChannelCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0001, + onReportThreadNetworkDiagnosticsRoutingRoleCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0002, + onReportThreadNetworkDiagnosticsNetworkNameCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0003, + onReportThreadNetworkDiagnosticsPanIdCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0004, + onReportThreadNetworkDiagnosticsExtendedPanIdCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0005, + onReportThreadNetworkDiagnosticsMeshLocalPrefixCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0006, + onReportThreadNetworkDiagnosticsOverrunCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0009, + onReportThreadNetworkDiagnosticsPartitionIdCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x000A, + onReportThreadNetworkDiagnosticsWeightingCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x000B, + onReportThreadNetworkDiagnosticsDataVersionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x000C, + onReportThreadNetworkDiagnosticsStableDataVersionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x000D, + onReportThreadNetworkDiagnosticsLeaderRouterIdCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x000E, + onReportThreadNetworkDiagnosticsDetachedRoleCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x000F, + onReportThreadNetworkDiagnosticsChildRoleCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0010, + onReportThreadNetworkDiagnosticsRouterRoleCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0011, + onReportThreadNetworkDiagnosticsLeaderRoleCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0012, + onReportThreadNetworkDiagnosticsAttachAttemptCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0013, + onReportThreadNetworkDiagnosticsPartitionIdChangeCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0014, + onReportThreadNetworkDiagnosticsBetterPartitionAttachAttemptCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0015, + onReportThreadNetworkDiagnosticsParentChangeCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0016, + onReportThreadNetworkDiagnosticsTxTotalCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0017, + onReportThreadNetworkDiagnosticsTxUnicastCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0018, + onReportThreadNetworkDiagnosticsTxBroadcastCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0019, + onReportThreadNetworkDiagnosticsTxAckRequestedCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x001A, + onReportThreadNetworkDiagnosticsTxAckedCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x001B, + onReportThreadNetworkDiagnosticsTxNoAckRequestedCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x001C, + onReportThreadNetworkDiagnosticsTxDataCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x001D, + onReportThreadNetworkDiagnosticsTxDataPollCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x001E, + onReportThreadNetworkDiagnosticsTxBeaconCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x001F, + onReportThreadNetworkDiagnosticsTxBeaconRequestCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0020, + onReportThreadNetworkDiagnosticsTxOtherCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0021, + onReportThreadNetworkDiagnosticsTxRetryCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0022, + onReportThreadNetworkDiagnosticsTxDirectMaxRetryExpiryCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0023, + onReportThreadNetworkDiagnosticsTxIndirectMaxRetryExpiryCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0024, + onReportThreadNetworkDiagnosticsTxErrCcaCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0025, + onReportThreadNetworkDiagnosticsTxErrAbortCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0026, + onReportThreadNetworkDiagnosticsTxErrBusyChannelCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0027, + onReportThreadNetworkDiagnosticsRxTotalCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0028, + onReportThreadNetworkDiagnosticsRxUnicastCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0029, + onReportThreadNetworkDiagnosticsRxBroadcastCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x002A, + onReportThreadNetworkDiagnosticsRxDataCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x002B, + onReportThreadNetworkDiagnosticsRxDataPollCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x002C, + onReportThreadNetworkDiagnosticsRxBeaconCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x002D, + onReportThreadNetworkDiagnosticsRxBeaconRequestCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x002E, + onReportThreadNetworkDiagnosticsRxOtherCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x002F, + onReportThreadNetworkDiagnosticsRxAddressFilteredCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0030, + onReportThreadNetworkDiagnosticsRxDestAddrFilteredCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0031, + onReportThreadNetworkDiagnosticsRxDuplicatedCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0032, + onReportThreadNetworkDiagnosticsRxErrNoFrameCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0033, + onReportThreadNetworkDiagnosticsRxErrUnknownNeighborCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0034, + onReportThreadNetworkDiagnosticsRxErrInvalidSrcAddrCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0035, + onReportThreadNetworkDiagnosticsRxErrSecCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0036, + onReportThreadNetworkDiagnosticsRxErrFcsCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0037, + onReportThreadNetworkDiagnosticsRxErrOtherCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0038, + onReportThreadNetworkDiagnosticsActiveTimestampCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x0039, + onReportThreadNetworkDiagnosticsPendingTimestampCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x003A, + onReportThreadNetworkDiagnosticsDelayCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0x003C, + onReportThreadNetworkDiagnosticsChannelMaskCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0035, 0xFFFD, + onReportThreadNetworkDiagnosticsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0503, 0x0000, onReportWakeOnLanWakeOnLanMacAddressCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0503, 0xFFFD, onReportWakeOnLanClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0000, onReportWiFiNetworkDiagnosticsBssidCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0001, + onReportWiFiNetworkDiagnosticsSecurityTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0002, + onReportWiFiNetworkDiagnosticsWiFiVersionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0003, + onReportWiFiNetworkDiagnosticsChannelNumberCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0004, onReportWiFiNetworkDiagnosticsRssiCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0005, + onReportWiFiNetworkDiagnosticsBeaconLostCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0006, + onReportWiFiNetworkDiagnosticsBeaconRxCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0007, + onReportWiFiNetworkDiagnosticsPacketMulticastRxCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0008, + onReportWiFiNetworkDiagnosticsPacketMulticastTxCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x0009, + onReportWiFiNetworkDiagnosticsPacketUnicastRxCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x000A, + onReportWiFiNetworkDiagnosticsPacketUnicastTxCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x000B, + onReportWiFiNetworkDiagnosticsCurrentMaxRateCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0x000C, + onReportWiFiNetworkDiagnosticsOverrunCountCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0036, 0xFFFD, + onReportWiFiNetworkDiagnosticsClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0000, onReportWindowCoveringTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0003, + onReportWindowCoveringCurrentPositionLiftCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0004, + onReportWindowCoveringCurrentPositionTiltCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0007, onReportWindowCoveringConfigStatusCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0008, + onReportWindowCoveringCurrentPositionLiftPercentageCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0009, + onReportWindowCoveringCurrentPositionTiltPercentageCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x000A, + onReportWindowCoveringOperationalStatusCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x000B, + onReportWindowCoveringTargetPositionLiftPercent100thsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x000C, + onReportWindowCoveringTargetPositionTiltPercent100thsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x000D, onReportWindowCoveringEndProductTypeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x000E, + onReportWindowCoveringCurrentPositionLiftPercent100thsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x000F, + onReportWindowCoveringCurrentPositionTiltPercent100thsCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0010, + onReportWindowCoveringInstalledOpenLimitLiftCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0011, + onReportWindowCoveringInstalledClosedLimitLiftCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0012, + onReportWindowCoveringInstalledOpenLimitTiltCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0013, + onReportWindowCoveringInstalledClosedLimitTiltCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x0017, onReportWindowCoveringModeCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0x001A, onReportWindowCoveringSafetyStatusCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0xFFFC, onReportWindowCoveringFeatureMapCallback->Cancel(), + BasicAttributeFilter); + callbacksMgr.AddReportCallback(remoteId, endpointId, 0x0102, 0xFFFD, + onReportWindowCoveringClusterRevisionCallback->Cancel(), + BasicAttributeFilter); + } + +private: + chip::Callback::Callback * + onReportAccountLoginClusterRevisionCallback = + new chip::Callback::Callback( + ReadAccountLoginClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportAdministratorCommissioningClusterRevisionCallback = + new chip::Callback::Callback( + ReadAdministratorCommissioningClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationBasicVendorNameCallback = + new chip::Callback::Callback( + ReadApplicationBasicVendorName::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationBasicVendorIdCallback = + new chip::Callback::Callback( + ReadApplicationBasicVendorId::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationBasicApplicationNameCallback = + new chip::Callback::Callback( + ReadApplicationBasicApplicationName::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationBasicProductIdCallback = + new chip::Callback::Callback( + ReadApplicationBasicProductId::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationBasicApplicationStatusCallback = + new chip::Callback::Callback( + ReadApplicationBasicApplicationStatus::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationBasicApplicationVersionCallback = + new chip::Callback::Callback( + ReadApplicationBasicApplicationVersion::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationBasicClusterRevisionCallback = + new chip::Callback::Callback( + ReadApplicationBasicClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportApplicationLauncherClusterRevisionCallback = + new chip::Callback::Callback( + ReadApplicationLauncherClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportAudioOutputCurrentAudioOutputCallback = + new chip::Callback::Callback( + ReadAudioOutputCurrentAudioOutput::OnAttributeResponse, this); + chip::Callback::Callback * + onReportAudioOutputClusterRevisionCallback = + new chip::Callback::Callback( + ReadAudioOutputClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBarrierControlBarrierMovingStateCallback = + new chip::Callback::Callback( + ReadBarrierControlBarrierMovingState::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBarrierControlBarrierSafetyStatusCallback = + new chip::Callback::Callback( + ReadBarrierControlBarrierSafetyStatus::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBarrierControlBarrierCapabilitiesCallback = + new chip::Callback::Callback( + ReadBarrierControlBarrierCapabilities::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBarrierControlBarrierPositionCallback = + new chip::Callback::Callback( + ReadBarrierControlBarrierPosition::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBarrierControlClusterRevisionCallback = + new chip::Callback::Callback( + ReadBarrierControlClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBasicInteractionModelVersionCallback = + new chip::Callback::Callback( + ReadBasicInteractionModelVersion::OnAttributeResponse, this); + chip::Callback::Callback * onReportBasicVendorNameCallback = + new chip::Callback::Callback(ReadBasicVendorName::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicVendorIDCallback = + new chip::Callback::Callback(ReadBasicVendorID::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicProductNameCallback = + new chip::Callback::Callback( + ReadBasicProductName::OnAttributeResponse, this); + chip::Callback::Callback * onReportBasicProductIDCallback = + new chip::Callback::Callback(ReadBasicProductID::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicNodeLabelCallback = + new chip::Callback::Callback(ReadBasicNodeLabel::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicLocationCallback = + new chip::Callback::Callback(ReadBasicLocation::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicHardwareVersionCallback = + new chip::Callback::Callback( + ReadBasicHardwareVersion::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBasicHardwareVersionStringCallback = + new chip::Callback::Callback( + ReadBasicHardwareVersionString::OnAttributeResponse, this); + chip::Callback::Callback * onReportBasicSoftwareVersionCallback = + new chip::Callback::Callback( + ReadBasicSoftwareVersion::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBasicSoftwareVersionStringCallback = + new chip::Callback::Callback( + ReadBasicSoftwareVersionString::OnAttributeResponse, this); + chip::Callback::Callback * onReportBasicManufacturingDateCallback = + new chip::Callback::Callback( + ReadBasicManufacturingDate::OnAttributeResponse, this); + chip::Callback::Callback * onReportBasicPartNumberCallback = + new chip::Callback::Callback(ReadBasicPartNumber::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicProductURLCallback = + new chip::Callback::Callback(ReadBasicProductURL::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicProductLabelCallback = + new chip::Callback::Callback( + ReadBasicProductLabel::OnAttributeResponse, this); + chip::Callback::Callback * onReportBasicSerialNumberCallback = + new chip::Callback::Callback( + ReadBasicSerialNumber::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBasicLocalConfigDisabledCallback = + new chip::Callback::Callback( + ReadBasicLocalConfigDisabled::OnAttributeResponse, this); + chip::Callback::Callback * onReportBasicReachableCallback = + new chip::Callback::Callback(ReadBasicReachable::OnAttributeResponse, + this); + chip::Callback::Callback * onReportBasicClusterRevisionCallback = + new chip::Callback::Callback( + ReadBasicClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBinaryInputBasicOutOfServiceCallback = + new chip::Callback::Callback( + ReadBinaryInputBasicOutOfService::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBinaryInputBasicPresentValueCallback = + new chip::Callback::Callback( + ReadBinaryInputBasicPresentValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBinaryInputBasicStatusFlagsCallback = + new chip::Callback::Callback( + ReadBinaryInputBasicStatusFlags::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBinaryInputBasicClusterRevisionCallback = + new chip::Callback::Callback( + ReadBinaryInputBasicClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportBindingClusterRevisionCallback = + new chip::Callback::Callback( + ReadBindingClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportBooleanStateStateValueCallback = + new chip::Callback::Callback( + ReadBooleanStateStateValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBooleanStateClusterRevisionCallback = + new chip::Callback::Callback( + ReadBooleanStateClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportBridgedActionsSetupUrlCallback = + new chip::Callback::Callback( + ReadBridgedActionsSetupUrl::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBridgedActionsClusterRevisionCallback = + new chip::Callback::Callback( + ReadBridgedActionsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportBridgedDeviceBasicClusterRevisionCallback = + new chip::Callback::Callback( + ReadBridgedDeviceBasicClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlCurrentHueCallback = + new chip::Callback::Callback( + ReadColorControlCurrentHue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlCurrentSaturationCallback = + new chip::Callback::Callback( + ReadColorControlCurrentSaturation::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlRemainingTimeCallback = + new chip::Callback::Callback( + ReadColorControlRemainingTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlCurrentXCallback = + new chip::Callback::Callback( + ReadColorControlCurrentX::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlCurrentYCallback = + new chip::Callback::Callback( + ReadColorControlCurrentY::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlDriftCompensationCallback = + new chip::Callback::Callback( + ReadColorControlDriftCompensation::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlCompensationTextCallback = + new chip::Callback::Callback( + ReadColorControlCompensationText::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorTemperatureCallback = + new chip::Callback::Callback( + ReadColorControlColorTemperature::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlColorModeCallback = + new chip::Callback::Callback( + ReadColorControlColorMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorControlOptionsCallback = + new chip::Callback::Callback( + ReadColorControlColorControlOptions::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlNumberOfPrimariesCallback = + new chip::Callback::Callback( + ReadColorControlNumberOfPrimaries::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary1XCallback = + new chip::Callback::Callback( + ReadColorControlPrimary1X::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary1YCallback = + new chip::Callback::Callback( + ReadColorControlPrimary1Y::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlPrimary1IntensityCallback = + new chip::Callback::Callback( + ReadColorControlPrimary1Intensity::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary2XCallback = + new chip::Callback::Callback( + ReadColorControlPrimary2X::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary2YCallback = + new chip::Callback::Callback( + ReadColorControlPrimary2Y::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlPrimary2IntensityCallback = + new chip::Callback::Callback( + ReadColorControlPrimary2Intensity::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary3XCallback = + new chip::Callback::Callback( + ReadColorControlPrimary3X::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary3YCallback = + new chip::Callback::Callback( + ReadColorControlPrimary3Y::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlPrimary3IntensityCallback = + new chip::Callback::Callback( + ReadColorControlPrimary3Intensity::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary4XCallback = + new chip::Callback::Callback( + ReadColorControlPrimary4X::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary4YCallback = + new chip::Callback::Callback( + ReadColorControlPrimary4Y::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlPrimary4IntensityCallback = + new chip::Callback::Callback( + ReadColorControlPrimary4Intensity::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary5XCallback = + new chip::Callback::Callback( + ReadColorControlPrimary5X::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary5YCallback = + new chip::Callback::Callback( + ReadColorControlPrimary5Y::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlPrimary5IntensityCallback = + new chip::Callback::Callback( + ReadColorControlPrimary5Intensity::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary6XCallback = + new chip::Callback::Callback( + ReadColorControlPrimary6X::OnAttributeResponse, this); + chip::Callback::Callback * onReportColorControlPrimary6YCallback = + new chip::Callback::Callback( + ReadColorControlPrimary6Y::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlPrimary6IntensityCallback = + new chip::Callback::Callback( + ReadColorControlPrimary6Intensity::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlWhitePointXCallback = + new chip::Callback::Callback( + ReadColorControlWhitePointX::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlWhitePointYCallback = + new chip::Callback::Callback( + ReadColorControlWhitePointY::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointRXCallback = + new chip::Callback::Callback( + ReadColorControlColorPointRX::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointRYCallback = + new chip::Callback::Callback( + ReadColorControlColorPointRY::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointRIntensityCallback = + new chip::Callback::Callback( + ReadColorControlColorPointRIntensity::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointGXCallback = + new chip::Callback::Callback( + ReadColorControlColorPointGX::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointGYCallback = + new chip::Callback::Callback( + ReadColorControlColorPointGY::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointGIntensityCallback = + new chip::Callback::Callback( + ReadColorControlColorPointGIntensity::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointBXCallback = + new chip::Callback::Callback( + ReadColorControlColorPointBX::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointBYCallback = + new chip::Callback::Callback( + ReadColorControlColorPointBY::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorPointBIntensityCallback = + new chip::Callback::Callback( + ReadColorControlColorPointBIntensity::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlEnhancedCurrentHueCallback = + new chip::Callback::Callback( + ReadColorControlEnhancedCurrentHue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlEnhancedColorModeCallback = + new chip::Callback::Callback( + ReadColorControlEnhancedColorMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorLoopActiveCallback = + new chip::Callback::Callback( + ReadColorControlColorLoopActive::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorLoopDirectionCallback = + new chip::Callback::Callback( + ReadColorControlColorLoopDirection::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorLoopTimeCallback = + new chip::Callback::Callback( + ReadColorControlColorLoopTime::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorLoopStartEnhancedHueCallback = + new chip::Callback::Callback( + ReadColorControlColorLoopStartEnhancedHue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorLoopStoredEnhancedHueCallback = + new chip::Callback::Callback( + ReadColorControlColorLoopStoredEnhancedHue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorCapabilitiesCallback = + new chip::Callback::Callback( + ReadColorControlColorCapabilities::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorTempPhysicalMinCallback = + new chip::Callback::Callback( + ReadColorControlColorTempPhysicalMin::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlColorTempPhysicalMaxCallback = + new chip::Callback::Callback( + ReadColorControlColorTempPhysicalMax::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlCoupleColorTempToLevelMinMiredsCallback = + new chip::Callback::Callback( + ReadColorControlCoupleColorTempToLevelMinMireds::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlStartUpColorTemperatureMiredsCallback = + new chip::Callback::Callback( + ReadColorControlStartUpColorTemperatureMireds::OnAttributeResponse, this); + chip::Callback::Callback * + onReportColorControlClusterRevisionCallback = + new chip::Callback::Callback( + ReadColorControlClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportContentLauncherSupportedStreamingProtocolsCallback = + new chip::Callback::Callback( + ReadContentLauncherSupportedStreamingProtocols::OnAttributeResponse, this); + chip::Callback::Callback * + onReportContentLauncherClusterRevisionCallback = + new chip::Callback::Callback( + ReadContentLauncherClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportDescriptorClusterRevisionCallback = + new chip::Callback::Callback( + ReadDescriptorClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportDoorLockLockStateCallback = + new chip::Callback::Callback( + ReadDoorLockLockState::OnAttributeResponse, this); + chip::Callback::Callback * onReportDoorLockLockTypeCallback = + new chip::Callback::Callback( + ReadDoorLockLockType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportDoorLockActuatorEnabledCallback = + new chip::Callback::Callback( + ReadDoorLockActuatorEnabled::OnAttributeResponse, this); + chip::Callback::Callback * onReportDoorLockDoorStateCallback = + new chip::Callback::Callback( + ReadDoorLockDoorState::OnAttributeResponse, this); + chip::Callback::Callback * onReportDoorLockLanguageCallback = + new chip::Callback::Callback( + ReadDoorLockLanguage::OnAttributeResponse, this); + chip::Callback::Callback * onReportDoorLockAutoRelockTimeCallback = + new chip::Callback::Callback( + ReadDoorLockAutoRelockTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportDoorLockSoundVolumeCallback = + new chip::Callback::Callback( + ReadDoorLockSoundVolume::OnAttributeResponse, this); + chip::Callback::Callback * onReportDoorLockOperatingModeCallback = + new chip::Callback::Callback( + ReadDoorLockOperatingMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportDoorLockEnableOneTouchLockingCallback = + new chip::Callback::Callback( + ReadDoorLockEnableOneTouchLocking::OnAttributeResponse, this); + chip::Callback::Callback * + onReportDoorLockEnablePrivacyModeButtonCallback = + new chip::Callback::Callback( + ReadDoorLockEnablePrivacyModeButton::OnAttributeResponse, this); + chip::Callback::Callback * + onReportDoorLockWrongCodeEntryLimitCallback = + new chip::Callback::Callback( + ReadDoorLockWrongCodeEntryLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportDoorLockClusterRevisionCallback = + new chip::Callback::Callback( + ReadDoorLockClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementMeasurementTypeCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementMeasurementType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementTotalActivePowerCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementTotalActivePower::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementRmsVoltageCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementRmsVoltage::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementRmsVoltageMinCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementRmsVoltageMin::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementRmsVoltageMaxCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementRmsVoltageMax::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementRmsCurrentCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementRmsCurrent::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementRmsCurrentMinCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementRmsCurrentMin::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementRmsCurrentMaxCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementRmsCurrentMax::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementActivePowerCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementActivePower::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementActivePowerMinCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementActivePowerMin::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementActivePowerMaxCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementActivePowerMax::OnAttributeResponse, this); + chip::Callback::Callback * + onReportElectricalMeasurementClusterRevisionCallback = + new chip::Callback::Callback( + ReadElectricalMeasurementClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsPHYRateCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsPHYRate::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsFullDuplexCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsFullDuplex::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsPacketRxCountCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsPacketRxCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsPacketTxCountCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsPacketTxCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsTxErrCountCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsTxErrCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsCollisionCountCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsCollisionCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsOverrunCountCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsOverrunCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsCarrierDetectCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsCarrierDetect::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsTimeSinceResetCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsTimeSinceReset::OnAttributeResponse, this); + chip::Callback::Callback * + onReportEthernetNetworkDiagnosticsClusterRevisionCallback = + new chip::Callback::Callback( + ReadEthernetNetworkDiagnosticsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportFixedLabelClusterRevisionCallback = + new chip::Callback::Callback( + ReadFixedLabelClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportFlowMeasurementMeasuredValueCallback = + new chip::Callback::Callback( + ReadFlowMeasurementMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportFlowMeasurementMinMeasuredValueCallback = + new chip::Callback::Callback( + ReadFlowMeasurementMinMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportFlowMeasurementMaxMeasuredValueCallback = + new chip::Callback::Callback( + ReadFlowMeasurementMaxMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportFlowMeasurementToleranceCallback = + new chip::Callback::Callback( + ReadFlowMeasurementTolerance::OnAttributeResponse, this); + chip::Callback::Callback * + onReportFlowMeasurementClusterRevisionCallback = + new chip::Callback::Callback( + ReadFlowMeasurementClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGeneralCommissioningBreadcrumbCallback = + new chip::Callback::Callback( + ReadGeneralCommissioningBreadcrumb::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGeneralCommissioningClusterRevisionCallback = + new chip::Callback::Callback( + ReadGeneralCommissioningClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGeneralDiagnosticsRebootCountCallback = + new chip::Callback::Callback( + ReadGeneralDiagnosticsRebootCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGeneralDiagnosticsUpTimeCallback = + new chip::Callback::Callback( + ReadGeneralDiagnosticsUpTime::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGeneralDiagnosticsTotalOperationalHoursCallback = + new chip::Callback::Callback( + ReadGeneralDiagnosticsTotalOperationalHours::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGeneralDiagnosticsBootReasonsCallback = + new chip::Callback::Callback( + ReadGeneralDiagnosticsBootReasons::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGeneralDiagnosticsClusterRevisionCallback = + new chip::Callback::Callback( + ReadGeneralDiagnosticsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportGroupKeyManagementClusterRevisionCallback = + new chip::Callback::Callback( + ReadGroupKeyManagementClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportGroupsNameSupportCallback = + new chip::Callback::Callback( + ReadGroupsNameSupport::OnAttributeResponse, this); + chip::Callback::Callback * onReportGroupsClusterRevisionCallback = + new chip::Callback::Callback( + ReadGroupsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportIdentifyIdentifyTimeCallback = + new chip::Callback::Callback( + ReadIdentifyIdentifyTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportIdentifyIdentifyTypeCallback = + new chip::Callback::Callback( + ReadIdentifyIdentifyType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportIdentifyClusterRevisionCallback = + new chip::Callback::Callback( + ReadIdentifyClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportIlluminanceMeasurementMeasuredValueCallback = + new chip::Callback::Callback( + ReadIlluminanceMeasurementMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportIlluminanceMeasurementMinMeasuredValueCallback = + new chip::Callback::Callback( + ReadIlluminanceMeasurementMinMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportIlluminanceMeasurementMaxMeasuredValueCallback = + new chip::Callback::Callback( + ReadIlluminanceMeasurementMaxMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportIlluminanceMeasurementToleranceCallback = + new chip::Callback::Callback( + ReadIlluminanceMeasurementTolerance::OnAttributeResponse, this); + chip::Callback::Callback * + onReportIlluminanceMeasurementLightSensorTypeCallback = + new chip::Callback::Callback( + ReadIlluminanceMeasurementLightSensorType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportIlluminanceMeasurementClusterRevisionCallback = + new chip::Callback::Callback( + ReadIlluminanceMeasurementClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportKeypadInputClusterRevisionCallback = + new chip::Callback::Callback( + ReadKeypadInputClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlCurrentLevelCallback = + new chip::Callback::Callback( + ReadLevelControlCurrentLevel::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlRemainingTimeCallback = + new chip::Callback::Callback( + ReadLevelControlRemainingTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportLevelControlMinLevelCallback = + new chip::Callback::Callback( + ReadLevelControlMinLevel::OnAttributeResponse, this); + chip::Callback::Callback * onReportLevelControlMaxLevelCallback = + new chip::Callback::Callback( + ReadLevelControlMaxLevel::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlCurrentFrequencyCallback = + new chip::Callback::Callback( + ReadLevelControlCurrentFrequency::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlMinFrequencyCallback = + new chip::Callback::Callback( + ReadLevelControlMinFrequency::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlMaxFrequencyCallback = + new chip::Callback::Callback( + ReadLevelControlMaxFrequency::OnAttributeResponse, this); + chip::Callback::Callback * onReportLevelControlOptionsCallback = + new chip::Callback::Callback( + ReadLevelControlOptions::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlOnOffTransitionTimeCallback = + new chip::Callback::Callback( + ReadLevelControlOnOffTransitionTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportLevelControlOnLevelCallback = + new chip::Callback::Callback( + ReadLevelControlOnLevel::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlOnTransitionTimeCallback = + new chip::Callback::Callback( + ReadLevelControlOnTransitionTime::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlOffTransitionTimeCallback = + new chip::Callback::Callback( + ReadLevelControlOffTransitionTime::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlDefaultMoveRateCallback = + new chip::Callback::Callback( + ReadLevelControlDefaultMoveRate::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlStartUpCurrentLevelCallback = + new chip::Callback::Callback( + ReadLevelControlStartUpCurrentLevel::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLevelControlClusterRevisionCallback = + new chip::Callback::Callback( + ReadLevelControlClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportLowPowerClusterRevisionCallback = + new chip::Callback::Callback( + ReadLowPowerClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportMediaInputCurrentMediaInputCallback = + new chip::Callback::Callback( + ReadMediaInputCurrentMediaInput::OnAttributeResponse, this); + chip::Callback::Callback * + onReportMediaInputClusterRevisionCallback = + new chip::Callback::Callback( + ReadMediaInputClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportMediaPlaybackPlaybackStateCallback = + new chip::Callback::Callback( + ReadMediaPlaybackPlaybackState::OnAttributeResponse, this); + chip::Callback::Callback * onReportMediaPlaybackStartTimeCallback = + new chip::Callback::Callback( + ReadMediaPlaybackStartTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportMediaPlaybackDurationCallback = + new chip::Callback::Callback( + ReadMediaPlaybackDuration::OnAttributeResponse, this); + chip::Callback::Callback * + onReportMediaPlaybackSeekRangeEndCallback = + new chip::Callback::Callback( + ReadMediaPlaybackSeekRangeEnd::OnAttributeResponse, this); + chip::Callback::Callback * + onReportMediaPlaybackSeekRangeStartCallback = + new chip::Callback::Callback( + ReadMediaPlaybackSeekRangeStart::OnAttributeResponse, this); + chip::Callback::Callback * + onReportMediaPlaybackClusterRevisionCallback = + new chip::Callback::Callback( + ReadMediaPlaybackClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportModeSelectCurrentModeCallback = + new chip::Callback::Callback( + ReadModeSelectCurrentMode::OnAttributeResponse, this); + chip::Callback::Callback * onReportModeSelectOnModeCallback = + new chip::Callback::Callback( + ReadModeSelectOnMode::OnAttributeResponse, this); + chip::Callback::Callback * onReportModeSelectStartUpModeCallback = + new chip::Callback::Callback( + ReadModeSelectStartUpMode::OnAttributeResponse, this); + chip::Callback::Callback * onReportModeSelectDescriptionCallback = + new chip::Callback::Callback( + ReadModeSelectDescription::OnAttributeResponse, this); + chip::Callback::Callback * + onReportModeSelectClusterRevisionCallback = + new chip::Callback::Callback( + ReadModeSelectClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportNetworkCommissioningFeatureMapCallback = + new chip::Callback::Callback( + ReadNetworkCommissioningFeatureMap::OnAttributeResponse, this); + chip::Callback::Callback * + onReportNetworkCommissioningClusterRevisionCallback = + new chip::Callback::Callback( + ReadNetworkCommissioningClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOtaSoftwareUpdateProviderClusterRevisionCallback = + new chip::Callback::Callback( + ReadOtaSoftwareUpdateProviderClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOtaSoftwareUpdateRequestorDefaultOtaProviderCallback = + new chip::Callback::Callback( + ReadOtaSoftwareUpdateRequestorDefaultOtaProvider::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOtaSoftwareUpdateRequestorUpdatePossibleCallback = + new chip::Callback::Callback( + ReadOtaSoftwareUpdateRequestorUpdatePossible::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOtaSoftwareUpdateRequestorClusterRevisionCallback = + new chip::Callback::Callback( + ReadOtaSoftwareUpdateRequestorClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOccupancySensingOccupancyCallback = + new chip::Callback::Callback( + ReadOccupancySensingOccupancy::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOccupancySensingOccupancySensorTypeCallback = + new chip::Callback::Callback( + ReadOccupancySensingOccupancySensorType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOccupancySensingOccupancySensorTypeBitmapCallback = + new chip::Callback::Callback( + ReadOccupancySensingOccupancySensorTypeBitmap::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOccupancySensingClusterRevisionCallback = + new chip::Callback::Callback( + ReadOccupancySensingClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportOnOffOnOffCallback = + new chip::Callback::Callback(ReadOnOffOnOff::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOnOffGlobalSceneControlCallback = + new chip::Callback::Callback( + ReadOnOffGlobalSceneControl::OnAttributeResponse, this); + chip::Callback::Callback * onReportOnOffOnTimeCallback = + new chip::Callback::Callback(ReadOnOffOnTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportOnOffOffWaitTimeCallback = + new chip::Callback::Callback( + ReadOnOffOffWaitTime::OnAttributeResponse, this); + chip::Callback::Callback * onReportOnOffStartUpOnOffCallback = + new chip::Callback::Callback( + ReadOnOffStartUpOnOff::OnAttributeResponse, this); + chip::Callback::Callback * onReportOnOffFeatureMapCallback = + new chip::Callback::Callback(ReadOnOffFeatureMap::OnAttributeResponse, + this); + chip::Callback::Callback * onReportOnOffClusterRevisionCallback = + new chip::Callback::Callback( + ReadOnOffClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOnOffSwitchConfigurationSwitchTypeCallback = + new chip::Callback::Callback( + ReadOnOffSwitchConfigurationSwitchType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOnOffSwitchConfigurationSwitchActionsCallback = + new chip::Callback::Callback( + ReadOnOffSwitchConfigurationSwitchActions::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOnOffSwitchConfigurationClusterRevisionCallback = + new chip::Callback::Callback( + ReadOnOffSwitchConfigurationClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOperationalCredentialsSupportedFabricsCallback = + new chip::Callback::Callback( + ReadOperationalCredentialsSupportedFabrics::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOperationalCredentialsCommissionedFabricsCallback = + new chip::Callback::Callback( + ReadOperationalCredentialsCommissionedFabrics::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOperationalCredentialsCurrentFabricIndexCallback = + new chip::Callback::Callback( + ReadOperationalCredentialsCurrentFabricIndex::OnAttributeResponse, this); + chip::Callback::Callback * + onReportOperationalCredentialsClusterRevisionCallback = + new chip::Callback::Callback( + ReadOperationalCredentialsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportPowerSourceStatusCallback = + new chip::Callback::Callback( + ReadPowerSourceStatus::OnAttributeResponse, this); + chip::Callback::Callback * onReportPowerSourceOrderCallback = + new chip::Callback::Callback( + ReadPowerSourceOrder::OnAttributeResponse, this); + chip::Callback::Callback * onReportPowerSourceDescriptionCallback = + new chip::Callback::Callback( + ReadPowerSourceDescription::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPowerSourceBatteryVoltageCallback = + new chip::Callback::Callback( + ReadPowerSourceBatteryVoltage::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPowerSourceBatteryPercentRemainingCallback = + new chip::Callback::Callback( + ReadPowerSourceBatteryPercentRemaining::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPowerSourceBatteryTimeRemainingCallback = + new chip::Callback::Callback( + ReadPowerSourceBatteryTimeRemaining::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPowerSourceBatteryChargeLevelCallback = + new chip::Callback::Callback( + ReadPowerSourceBatteryChargeLevel::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPowerSourceBatteryChargeStateCallback = + new chip::Callback::Callback( + ReadPowerSourceBatteryChargeState::OnAttributeResponse, this); + chip::Callback::Callback * onReportPowerSourceFeatureMapCallback = + new chip::Callback::Callback( + ReadPowerSourceFeatureMap::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPowerSourceClusterRevisionCallback = + new chip::Callback::Callback( + ReadPowerSourceClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPressureMeasurementMeasuredValueCallback = + new chip::Callback::Callback( + ReadPressureMeasurementMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPressureMeasurementMinMeasuredValueCallback = + new chip::Callback::Callback( + ReadPressureMeasurementMinMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPressureMeasurementMaxMeasuredValueCallback = + new chip::Callback::Callback( + ReadPressureMeasurementMaxMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPressureMeasurementClusterRevisionCallback = + new chip::Callback::Callback( + ReadPressureMeasurementClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxPressureCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxPressure::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxSpeedCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxSpeed::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxFlowCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxFlow::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMinConstPressureCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMinConstPressure::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxConstPressureCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxConstPressure::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMinCompPressureCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMinCompPressure::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxCompPressureCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxCompPressure::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMinConstSpeedCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMinConstSpeed::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxConstSpeedCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxConstSpeed::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMinConstFlowCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMinConstFlow::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxConstFlowCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxConstFlow::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMinConstTempCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMinConstTemp::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlMaxConstTempCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlMaxConstTemp::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlPumpStatusCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlPumpStatus::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlEffectiveOperationModeCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlEffectiveOperationMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlEffectiveControlModeCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlEffectiveControlMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlCapacityCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlCapacity::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlSpeedCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlSpeed::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlLifetimeRunningHoursCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlLifetimeRunningHours::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlPowerCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlPower::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlLifetimeEnergyConsumedCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlLifetimeEnergyConsumed::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlOperationModeCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlOperationMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlControlModeCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlControlMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlAlarmMaskCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlAlarmMask::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlFeatureMapCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlFeatureMap::OnAttributeResponse, this); + chip::Callback::Callback * + onReportPumpConfigurationAndControlClusterRevisionCallback = + new chip::Callback::Callback( + ReadPumpConfigurationAndControlClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportRelativeHumidityMeasurementMeasuredValueCallback = + new chip::Callback::Callback( + ReadRelativeHumidityMeasurementMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportRelativeHumidityMeasurementMinMeasuredValueCallback = + new chip::Callback::Callback( + ReadRelativeHumidityMeasurementMinMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportRelativeHumidityMeasurementMaxMeasuredValueCallback = + new chip::Callback::Callback( + ReadRelativeHumidityMeasurementMaxMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportRelativeHumidityMeasurementToleranceCallback = + new chip::Callback::Callback( + ReadRelativeHumidityMeasurementTolerance::OnAttributeResponse, this); + chip::Callback::Callback * + onReportRelativeHumidityMeasurementClusterRevisionCallback = + new chip::Callback::Callback( + ReadRelativeHumidityMeasurementClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportScenesSceneCountCallback = + new chip::Callback::Callback( + ReadScenesSceneCount::OnAttributeResponse, this); + chip::Callback::Callback * onReportScenesCurrentSceneCallback = + new chip::Callback::Callback( + ReadScenesCurrentScene::OnAttributeResponse, this); + chip::Callback::Callback * onReportScenesCurrentGroupCallback = + new chip::Callback::Callback( + ReadScenesCurrentGroup::OnAttributeResponse, this); + chip::Callback::Callback * onReportScenesSceneValidCallback = + new chip::Callback::Callback( + ReadScenesSceneValid::OnAttributeResponse, this); + chip::Callback::Callback * onReportScenesNameSupportCallback = + new chip::Callback::Callback( + ReadScenesNameSupport::OnAttributeResponse, this); + chip::Callback::Callback * onReportScenesClusterRevisionCallback = + new chip::Callback::Callback( + ReadScenesClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportSoftwareDiagnosticsCurrentHeapFreeCallback = + new chip::Callback::Callback( + ReadSoftwareDiagnosticsCurrentHeapFree::OnAttributeResponse, this); + chip::Callback::Callback * + onReportSoftwareDiagnosticsCurrentHeapUsedCallback = + new chip::Callback::Callback( + ReadSoftwareDiagnosticsCurrentHeapUsed::OnAttributeResponse, this); + chip::Callback::Callback * + onReportSoftwareDiagnosticsCurrentHeapHighWatermarkCallback = + new chip::Callback::Callback( + ReadSoftwareDiagnosticsCurrentHeapHighWatermark::OnAttributeResponse, this); + chip::Callback::Callback * + onReportSoftwareDiagnosticsClusterRevisionCallback = + new chip::Callback::Callback( + ReadSoftwareDiagnosticsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportSwitchNumberOfPositionsCallback = + new chip::Callback::Callback( + ReadSwitchNumberOfPositions::OnAttributeResponse, this); + chip::Callback::Callback * onReportSwitchCurrentPositionCallback = + new chip::Callback::Callback( + ReadSwitchCurrentPosition::OnAttributeResponse, this); + chip::Callback::Callback * onReportSwitchMultiPressMaxCallback = + new chip::Callback::Callback( + ReadSwitchMultiPressMax::OnAttributeResponse, this); + chip::Callback::Callback * onReportSwitchFeatureMapCallback = + new chip::Callback::Callback( + ReadSwitchFeatureMap::OnAttributeResponse, this); + chip::Callback::Callback * onReportSwitchClusterRevisionCallback = + new chip::Callback::Callback( + ReadSwitchClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTvChannelClusterRevisionCallback = + new chip::Callback::Callback( + ReadTvChannelClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTargetNavigatorClusterRevisionCallback = + new chip::Callback::Callback( + ReadTargetNavigatorClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTemperatureMeasurementMeasuredValueCallback = + new chip::Callback::Callback( + ReadTemperatureMeasurementMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTemperatureMeasurementMinMeasuredValueCallback = + new chip::Callback::Callback( + ReadTemperatureMeasurementMinMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTemperatureMeasurementMaxMeasuredValueCallback = + new chip::Callback::Callback( + ReadTemperatureMeasurementMaxMeasuredValue::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTemperatureMeasurementToleranceCallback = + new chip::Callback::Callback( + ReadTemperatureMeasurementTolerance::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTemperatureMeasurementClusterRevisionCallback = + new chip::Callback::Callback( + ReadTemperatureMeasurementClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterBooleanCallback = + new chip::Callback::Callback( + ReadTestClusterBoolean::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterBitmap8Callback = + new chip::Callback::Callback( + ReadTestClusterBitmap8::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterBitmap16Callback = + new chip::Callback::Callback( + ReadTestClusterBitmap16::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterBitmap32Callback = + new chip::Callback::Callback( + ReadTestClusterBitmap32::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterBitmap64Callback = + new chip::Callback::Callback( + ReadTestClusterBitmap64::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt8uCallback = + new chip::Callback::Callback( + ReadTestClusterInt8u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt16uCallback = + new chip::Callback::Callback( + ReadTestClusterInt16u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt24uCallback = + new chip::Callback::Callback( + ReadTestClusterInt24u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt32uCallback = + new chip::Callback::Callback( + ReadTestClusterInt32u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt40uCallback = + new chip::Callback::Callback( + ReadTestClusterInt40u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt48uCallback = + new chip::Callback::Callback( + ReadTestClusterInt48u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt56uCallback = + new chip::Callback::Callback( + ReadTestClusterInt56u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt64uCallback = + new chip::Callback::Callback( + ReadTestClusterInt64u::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt8sCallback = + new chip::Callback::Callback( + ReadTestClusterInt8s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt16sCallback = + new chip::Callback::Callback( + ReadTestClusterInt16s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt24sCallback = + new chip::Callback::Callback( + ReadTestClusterInt24s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt32sCallback = + new chip::Callback::Callback( + ReadTestClusterInt32s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt40sCallback = + new chip::Callback::Callback( + ReadTestClusterInt40s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt48sCallback = + new chip::Callback::Callback( + ReadTestClusterInt48s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt56sCallback = + new chip::Callback::Callback( + ReadTestClusterInt56s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterInt64sCallback = + new chip::Callback::Callback( + ReadTestClusterInt64s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterEnum8Callback = + new chip::Callback::Callback( + ReadTestClusterEnum8::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterEnum16Callback = + new chip::Callback::Callback( + ReadTestClusterEnum16::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterFloatSingleCallback = + new chip::Callback::Callback( + ReadTestClusterFloatSingle::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterFloatDoubleCallback = + new chip::Callback::Callback( + ReadTestClusterFloatDouble::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterOctetStringCallback = + new chip::Callback::Callback( + ReadTestClusterOctetString::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterLongOctetStringCallback = + new chip::Callback::Callback( + ReadTestClusterLongOctetString::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterCharStringCallback = + new chip::Callback::Callback( + ReadTestClusterCharString::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterLongCharStringCallback = + new chip::Callback::Callback( + ReadTestClusterLongCharString::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterEpochUsCallback = + new chip::Callback::Callback( + ReadTestClusterEpochUs::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterEpochSCallback = + new chip::Callback::Callback( + ReadTestClusterEpochS::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterVendorIdCallback = + new chip::Callback::Callback( + ReadTestClusterVendorId::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterEnumAttrCallback = + new chip::Callback::Callback( + ReadTestClusterEnumAttr::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterRangeRestrictedInt8uCallback = + new chip::Callback::Callback( + ReadTestClusterRangeRestrictedInt8u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterRangeRestrictedInt8sCallback = + new chip::Callback::Callback( + ReadTestClusterRangeRestrictedInt8s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterRangeRestrictedInt16uCallback = + new chip::Callback::Callback( + ReadTestClusterRangeRestrictedInt16u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterRangeRestrictedInt16sCallback = + new chip::Callback::Callback( + ReadTestClusterRangeRestrictedInt16s::OnAttributeResponse, this); + chip::Callback::Callback * onReportTestClusterUnsupportedCallback = + new chip::Callback::Callback( + ReadTestClusterUnsupported::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableBooleanCallback = + new chip::Callback::Callback( + ReadTestClusterNullableBoolean::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableBitmap8Callback = + new chip::Callback::Callback( + ReadTestClusterNullableBitmap8::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableBitmap16Callback = + new chip::Callback::Callback( + ReadTestClusterNullableBitmap16::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableBitmap32Callback = + new chip::Callback::Callback( + ReadTestClusterNullableBitmap32::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableBitmap64Callback = + new chip::Callback::Callback( + ReadTestClusterNullableBitmap64::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt8uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt8u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt16uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt16u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt24uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt24u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt32uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt32u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt40uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt40u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt48uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt48u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt56uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt56u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt64uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt64u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt8sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt8s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt16sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt16s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt24sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt24s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt32sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt32s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt40sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt40s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt48sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt48s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt56sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt56s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableInt64sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableInt64s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableEnum8Callback = + new chip::Callback::Callback( + ReadTestClusterNullableEnum8::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableEnum16Callback = + new chip::Callback::Callback( + ReadTestClusterNullableEnum16::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableFloatSingleCallback = + new chip::Callback::Callback( + ReadTestClusterNullableFloatSingle::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableFloatDoubleCallback = + new chip::Callback::Callback( + ReadTestClusterNullableFloatDouble::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableOctetStringCallback = + new chip::Callback::Callback( + ReadTestClusterNullableOctetString::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableCharStringCallback = + new chip::Callback::Callback( + ReadTestClusterNullableCharString::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableEnumAttrCallback = + new chip::Callback::Callback( + ReadTestClusterNullableEnumAttr::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableRangeRestrictedInt8uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableRangeRestrictedInt8u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableRangeRestrictedInt8sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableRangeRestrictedInt8s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableRangeRestrictedInt16uCallback = + new chip::Callback::Callback( + ReadTestClusterNullableRangeRestrictedInt16u::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterNullableRangeRestrictedInt16sCallback = + new chip::Callback::Callback( + ReadTestClusterNullableRangeRestrictedInt16s::OnAttributeResponse, this); + chip::Callback::Callback * + onReportTestClusterClusterRevisionCallback = + new chip::Callback::Callback( + ReadTestClusterClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatLocalTemperatureCallback = + new chip::Callback::Callback( + ReadThermostatLocalTemperature::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatAbsMinHeatSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatAbsMinHeatSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatAbsMaxHeatSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatAbsMaxHeatSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatAbsMinCoolSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatAbsMinCoolSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatAbsMaxCoolSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatAbsMaxCoolSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatOccupiedCoolingSetpointCallback = + new chip::Callback::Callback( + ReadThermostatOccupiedCoolingSetpoint::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatOccupiedHeatingSetpointCallback = + new chip::Callback::Callback( + ReadThermostatOccupiedHeatingSetpoint::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatMinHeatSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatMinHeatSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatMaxHeatSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatMaxHeatSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatMinCoolSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatMinCoolSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatMaxCoolSetpointLimitCallback = + new chip::Callback::Callback( + ReadThermostatMaxCoolSetpointLimit::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatMinSetpointDeadBandCallback = + new chip::Callback::Callback( + ReadThermostatMinSetpointDeadBand::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatControlSequenceOfOperationCallback = + new chip::Callback::Callback( + ReadThermostatControlSequenceOfOperation::OnAttributeResponse, this); + chip::Callback::Callback * onReportThermostatSystemModeCallback = + new chip::Callback::Callback( + ReadThermostatSystemMode::OnAttributeResponse, this); + chip::Callback::Callback * onReportThermostatStartOfWeekCallback = + new chip::Callback::Callback( + ReadThermostatStartOfWeek::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatNumberOfWeeklyTransitionsCallback = + new chip::Callback::Callback( + ReadThermostatNumberOfWeeklyTransitions::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatNumberOfDailyTransitionsCallback = + new chip::Callback::Callback( + ReadThermostatNumberOfDailyTransitions::OnAttributeResponse, this); + chip::Callback::Callback * onReportThermostatFeatureMapCallback = + new chip::Callback::Callback( + ReadThermostatFeatureMap::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatClusterRevisionCallback = + new chip::Callback::Callback( + ReadThermostatClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatUserInterfaceConfigurationTemperatureDisplayModeCallback = new chip::Callback::Callback( + ReadThermostatUserInterfaceConfigurationTemperatureDisplayMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatUserInterfaceConfigurationKeypadLockoutCallback = + new chip::Callback::Callback( + ReadThermostatUserInterfaceConfigurationKeypadLockout::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatUserInterfaceConfigurationScheduleProgrammingVisibilityCallback = new chip::Callback::Callback( + ReadThermostatUserInterfaceConfigurationScheduleProgrammingVisibility::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThermostatUserInterfaceConfigurationClusterRevisionCallback = + new chip::Callback::Callback( + ReadThermostatUserInterfaceConfigurationClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsChannelCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsChannel::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRoutingRoleCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRoutingRole::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsNetworkNameCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsNetworkName::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsPanIdCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsPanId::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsExtendedPanIdCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsExtendedPanId::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsMeshLocalPrefixCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsMeshLocalPrefix::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsOverrunCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsOverrunCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsPartitionIdCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsPartitionId::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsWeightingCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsWeighting::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsDataVersionCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsDataVersion::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsStableDataVersionCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsStableDataVersion::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsLeaderRouterIdCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsLeaderRouterId::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsDetachedRoleCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsDetachedRoleCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsChildRoleCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsChildRoleCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRouterRoleCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRouterRoleCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsLeaderRoleCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsLeaderRoleCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsAttachAttemptCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsAttachAttemptCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsPartitionIdChangeCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsPartitionIdChangeCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsBetterPartitionAttachAttemptCountCallback = new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsBetterPartitionAttachAttemptCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsParentChangeCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsParentChangeCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxTotalCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxTotalCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxUnicastCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxUnicastCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxBroadcastCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxBroadcastCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxAckRequestedCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxAckRequestedCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxAckedCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxAckedCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxNoAckRequestedCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxNoAckRequestedCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxDataCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxDataCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxDataPollCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxDataPollCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxBeaconCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxBeaconCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxBeaconRequestCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxBeaconRequestCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxOtherCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxOtherCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxRetryCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxRetryCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxDirectMaxRetryExpiryCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxDirectMaxRetryExpiryCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxIndirectMaxRetryExpiryCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxIndirectMaxRetryExpiryCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxErrCcaCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxErrCcaCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxErrAbortCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxErrAbortCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsTxErrBusyChannelCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsTxErrBusyChannelCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxTotalCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxTotalCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxUnicastCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxUnicastCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxBroadcastCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxBroadcastCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxDataCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxDataCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxDataPollCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxDataPollCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxBeaconCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxBeaconCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxBeaconRequestCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxBeaconRequestCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxOtherCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxOtherCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxAddressFilteredCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxAddressFilteredCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxDestAddrFilteredCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxDestAddrFilteredCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxDuplicatedCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxDuplicatedCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxErrNoFrameCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxErrNoFrameCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxErrUnknownNeighborCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxErrUnknownNeighborCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxErrInvalidSrcAddrCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxErrInvalidSrcAddrCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxErrSecCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxErrSecCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxErrFcsCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxErrFcsCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsRxErrOtherCountCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsRxErrOtherCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsActiveTimestampCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsActiveTimestamp::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsPendingTimestampCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsPendingTimestamp::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsDelayCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsDelay::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsChannelMaskCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsChannelMask::OnAttributeResponse, this); + chip::Callback::Callback * + onReportThreadNetworkDiagnosticsClusterRevisionCallback = + new chip::Callback::Callback( + ReadThreadNetworkDiagnosticsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWakeOnLanWakeOnLanMacAddressCallback = + new chip::Callback::Callback( + ReadWakeOnLanWakeOnLanMacAddress::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWakeOnLanClusterRevisionCallback = + new chip::Callback::Callback( + ReadWakeOnLanClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsBssidCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsBssid::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsSecurityTypeCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsSecurityType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsWiFiVersionCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsWiFiVersion::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsChannelNumberCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsChannelNumber::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsRssiCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsRssi::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsBeaconLostCountCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsBeaconLostCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsBeaconRxCountCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsBeaconRxCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsPacketMulticastRxCountCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsPacketMulticastRxCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsPacketMulticastTxCountCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsPacketMulticastTxCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsPacketUnicastRxCountCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsPacketUnicastRxCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsPacketUnicastTxCountCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsPacketUnicastTxCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsCurrentMaxRateCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsCurrentMaxRate::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsOverrunCountCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsOverrunCount::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWiFiNetworkDiagnosticsClusterRevisionCallback = + new chip::Callback::Callback( + ReadWiFiNetworkDiagnosticsClusterRevision::OnAttributeResponse, this); + chip::Callback::Callback * onReportWindowCoveringTypeCallback = + new chip::Callback::Callback( + ReadWindowCoveringType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringCurrentPositionLiftCallback = + new chip::Callback::Callback( + ReadWindowCoveringCurrentPositionLift::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringCurrentPositionTiltCallback = + new chip::Callback::Callback( + ReadWindowCoveringCurrentPositionTilt::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringConfigStatusCallback = + new chip::Callback::Callback( + ReadWindowCoveringConfigStatus::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringCurrentPositionLiftPercentageCallback = + new chip::Callback::Callback( + ReadWindowCoveringCurrentPositionLiftPercentage::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringCurrentPositionTiltPercentageCallback = + new chip::Callback::Callback( + ReadWindowCoveringCurrentPositionTiltPercentage::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringOperationalStatusCallback = + new chip::Callback::Callback( + ReadWindowCoveringOperationalStatus::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringTargetPositionLiftPercent100thsCallback = + new chip::Callback::Callback( + ReadWindowCoveringTargetPositionLiftPercent100ths::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringTargetPositionTiltPercent100thsCallback = + new chip::Callback::Callback( + ReadWindowCoveringTargetPositionTiltPercent100ths::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringEndProductTypeCallback = + new chip::Callback::Callback( + ReadWindowCoveringEndProductType::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringCurrentPositionLiftPercent100thsCallback = + new chip::Callback::Callback( + ReadWindowCoveringCurrentPositionLiftPercent100ths::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringCurrentPositionTiltPercent100thsCallback = + new chip::Callback::Callback( + ReadWindowCoveringCurrentPositionTiltPercent100ths::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringInstalledOpenLimitLiftCallback = + new chip::Callback::Callback( + ReadWindowCoveringInstalledOpenLimitLift::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringInstalledClosedLimitLiftCallback = + new chip::Callback::Callback( + ReadWindowCoveringInstalledClosedLimitLift::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringInstalledOpenLimitTiltCallback = + new chip::Callback::Callback( + ReadWindowCoveringInstalledOpenLimitTilt::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringInstalledClosedLimitTiltCallback = + new chip::Callback::Callback( + ReadWindowCoveringInstalledClosedLimitTilt::OnAttributeResponse, this); + chip::Callback::Callback * onReportWindowCoveringModeCallback = + new chip::Callback::Callback( + ReadWindowCoveringMode::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringSafetyStatusCallback = + new chip::Callback::Callback( + ReadWindowCoveringSafetyStatus::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringFeatureMapCallback = + new chip::Callback::Callback( + ReadWindowCoveringFeatureMap::OnAttributeResponse, this); + chip::Callback::Callback * + onReportWindowCoveringClusterRevisionCallback = + new chip::Callback::Callback( + ReadWindowCoveringClusterRevision::OnAttributeResponse, this); +}; + +void registerCommandsReporting(Commands & commands) +{ + const char * clusterName = "Reporting"; + + commands_list clusterCommands = { + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h index 095aeb6fee7a82..1ace8321bb8565 100644 --- a/zzz_generated/chip-tool/zap-generated/test/Commands.h +++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h @@ -130,6 +130,7 @@ class TestList : public Command printf("TV_MediaPlaybackCluster\n"); printf("TV_TvChannelCluster\n"); printf("TV_LowPowerCluster\n"); + printf("TV_ContentLauncherCluster\n"); printf("TV_MediaInputCluster\n"); printf("TestCluster\n"); printf("TestClusterComplexTypes\n"); @@ -33967,6 +33968,215 @@ class TV_LowPowerCluster : public TestCommand void OnSuccessResponse_1() { NextTest(); } }; +class TV_ContentLauncherCluster : public TestCommand +{ +public: + TV_ContentLauncherCluster() : TestCommand("TV_ContentLauncherCluster"), mTestIndex(0) {} + + /////////// TestCommand Interface ///////// + void NextTest() override + { + CHIP_ERROR err = CHIP_NO_ERROR; + + if (0 == mTestIndex) + { + ChipLogProgress(chipTool, " **** Test Start: TV_ContentLauncherCluster\n"); + } + + if (mTestCount == mTestIndex) + { + ChipLogProgress(chipTool, " **** Test Complete: TV_ContentLauncherCluster\n"); + SetCommandExitStatus(CHIP_NO_ERROR); + return; + } + + Wait(); + + // Ensure we increment mTestIndex before we start running the relevant + // command. That way if we lose the timeslice after we send the message + // but before our function call returns, we won't end up with an + // incorrect mTestIndex value observed when we get the response. + switch (mTestIndex++) + { + case 0: + ChipLogProgress(chipTool, " ***** Test Step 0 : Wait for the commissioned device to be retrieved\n"); + err = TestWaitForTheCommissionedDeviceToBeRetrieved_0(); + break; + case 1: + ChipLogProgress(chipTool, " ***** Test Step 1 : Read attribute accept header list\n"); + err = TestReadAttributeAcceptHeaderList_1(); + break; + case 2: + ChipLogProgress(chipTool, " ***** Test Step 2 : Read attribute supported streaming protocols\n"); + err = TestReadAttributeSupportedStreamingProtocols_2(); + break; + case 3: + ChipLogProgress(chipTool, " ***** Test Step 3 : Launch Content Command\n"); + err = TestLaunchContentCommand_3(); + break; + case 4: + ChipLogProgress(chipTool, " ***** Test Step 4 : Launch URL Command\n"); + err = TestLaunchUrlCommand_4(); + break; + } + + if (CHIP_NO_ERROR != err) + { + ChipLogError(chipTool, " ***** Test Failure: %s\n", chip::ErrorStr(err)); + SetCommandExitStatus(err); + } + } + +private: + std::atomic_uint16_t mTestIndex; + const uint16_t mTestCount = 5; + + static void OnFailureCallback_1(void * context, EmberAfStatus status) + { + (static_cast(context))->OnFailureResponse_1(status); + } + + static void OnSuccessCallback_1(void * context, const chip::app::DataModel::DecodableList & acceptHeaderList) + { + (static_cast(context))->OnSuccessResponse_1(acceptHeaderList); + } + + static void OnFailureCallback_2(void * context, EmberAfStatus status) + { + (static_cast(context))->OnFailureResponse_2(status); + } + + static void OnSuccessCallback_2(void * context, uint32_t supportedStreamingProtocols) + { + (static_cast(context))->OnSuccessResponse_2(supportedStreamingProtocols); + } + + // + // Tests methods + // + + CHIP_ERROR TestWaitForTheCommissionedDeviceToBeRetrieved_0() + { + SetIdentity(kIdentityAlpha); + return WaitForCommissionee(); + } + + CHIP_ERROR TestReadAttributeAcceptHeaderList_1() + { + const chip::EndpointId endpoint = mEndpointId.HasValue() ? mEndpointId.Value() : 1; + chip::Controller::ContentLauncherClusterTest cluster; + cluster.Associate(mDevices[kIdentityAlpha], endpoint); + + ReturnErrorOnFailure(cluster.ReadAttribute( + this, OnSuccessCallback_1, OnFailureCallback_1)); + return CHIP_NO_ERROR; + } + + void OnFailureResponse_1(EmberAfStatus status) { ThrowFailureResponse(); } + + void OnSuccessResponse_1(const chip::app::DataModel::DecodableList & acceptHeaderList) + { + auto iter = acceptHeaderList.begin(); + VerifyOrReturn(CheckNextListItemDecodes("acceptHeaderList", iter, 0)); + VerifyOrReturn(CheckValueAsString("acceptHeaderList[0]", iter.GetValue(), chip::CharSpan("example", 7))); + VerifyOrReturn(CheckNextListItemDecodes("acceptHeaderList", iter, 1)); + VerifyOrReturn(CheckValueAsString("acceptHeaderList[1]", iter.GetValue(), chip::CharSpan("example", 7))); + VerifyOrReturn(CheckNoMoreListItems("acceptHeaderList", iter, 2)); + + NextTest(); + } + + CHIP_ERROR TestReadAttributeSupportedStreamingProtocols_2() + { + const chip::EndpointId endpoint = mEndpointId.HasValue() ? mEndpointId.Value() : 1; + chip::Controller::ContentLauncherClusterTest cluster; + cluster.Associate(mDevices[kIdentityAlpha], endpoint); + + ReturnErrorOnFailure( + cluster.ReadAttribute( + this, OnSuccessCallback_2, OnFailureCallback_2)); + return CHIP_NO_ERROR; + } + + void OnFailureResponse_2(EmberAfStatus status) { ThrowFailureResponse(); } + + void OnSuccessResponse_2(uint32_t supportedStreamingProtocols) + { + VerifyOrReturn(CheckValue("supportedStreamingProtocols", supportedStreamingProtocols, 0UL)); + + NextTest(); + } + + CHIP_ERROR TestLaunchContentCommand_3() + { + const chip::EndpointId endpoint = mEndpointId.HasValue() ? mEndpointId.Value() : 1; + using RequestType = chip::app::Clusters::ContentLauncher::Commands::LaunchContent::Type; + + RequestType request; + request.autoPlay = true; + request.data = chip::Span("exampleDatagarbage: not in length on purpose", 11); + + request.search = chip::app::DataModel::List(); + + auto success = [](void * context, const typename RequestType::ResponseType & data) { + (static_cast(context))->OnSuccessResponse_3(data.contentLaunchStatus, data.data); + }; + + auto failure = [](void * context, EmberAfStatus status) { + (static_cast(context))->OnFailureResponse_3(status); + }; + + ReturnErrorOnFailure(chip::Controller::InvokeCommand(mDevices[kIdentityAlpha], this, success, failure, endpoint, request)); + return CHIP_NO_ERROR; + } + + void OnFailureResponse_3(EmberAfStatus status) { ThrowFailureResponse(); } + + void OnSuccessResponse_3(chip::app::Clusters::ContentLauncher::ContentLaunchStatus contentLaunchStatus, chip::CharSpan data) + { + VerifyOrReturn(CheckValue("contentLaunchStatus", contentLaunchStatus, 0)); + + VerifyOrReturn(CheckValueAsString("data", data, chip::CharSpan("exampleData", 11))); + + NextTest(); + } + + CHIP_ERROR TestLaunchUrlCommand_4() + { + const chip::EndpointId endpoint = mEndpointId.HasValue() ? mEndpointId.Value() : 1; + using RequestType = chip::app::Clusters::ContentLauncher::Commands::LaunchURL::Type; + + RequestType request; + request.contentURL = chip::Span("exampleUrlgarbage: not in length on purpose", 10); + request.displayString = chip::Span("exampleDisplayStringgarbage: not in length on purpose", 20); + + request.brandingInformation = + chip::app::DataModel::List(); + + auto success = [](void * context, const typename RequestType::ResponseType & data) { + (static_cast(context))->OnSuccessResponse_4(data.contentLaunchStatus, data.data); + }; + + auto failure = [](void * context, EmberAfStatus status) { + (static_cast(context))->OnFailureResponse_4(status); + }; + + ReturnErrorOnFailure(chip::Controller::InvokeCommand(mDevices[kIdentityAlpha], this, success, failure, endpoint, request)); + return CHIP_NO_ERROR; + } + + void OnFailureResponse_4(EmberAfStatus status) { ThrowFailureResponse(); } + + void OnSuccessResponse_4(chip::app::Clusters::ContentLauncher::ContentLaunchStatus contentLaunchStatus, chip::CharSpan data) + { + VerifyOrReturn(CheckValue("contentLaunchStatus", contentLaunchStatus, 0)); + + VerifyOrReturn(CheckValueAsString("data", data, chip::CharSpan("exampleData", 11))); + + NextTest(); + } +}; + class TV_MediaInputCluster : public TestCommand { public: @@ -56462,6 +56672,7 @@ void registerCommandsTests(Commands & commands) make_unique(), make_unique(), make_unique(), + make_unique(), make_unique(), make_unique(), make_unique(), diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp index 2df9174f0d2cd2..cd395f2a08fca2 100644 --- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp +++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.cpp @@ -553,10 +553,10 @@ void ColorControlClusterAttributeListListAttributeFilter(TLV::TLVReader * tlvDat cb->mCall(cb->mContext, list); } -void ContentLauncherClusterAcceptsHeaderListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) +void ContentLauncherClusterAcceptHeaderListListAttributeFilter(TLV::TLVReader * tlvData, Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) { - chip::app::DataModel::DecodableList list; + chip::app::DataModel::DecodableList list; CHIP_ERROR err = Decode(*tlvData, list); if (err != CHIP_NO_ERROR) { @@ -569,8 +569,8 @@ void ContentLauncherClusterAcceptsHeaderListListAttributeFilter(TLV::TLVReader * return; } - Callback::Callback * cb = - Callback::Callback::FromCancelable(onSuccessCallback); + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); cb->mCall(cb->mContext, list); } diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h index 63c28f75060381..6114dffd77005c 100644 --- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h +++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h @@ -227,11 +227,11 @@ void ColorControlClusterAttributeListListAttributeFilter(chip::TLV::TLVReader * chip::Callback::Cancelable * onFailureCallback); typedef void (*ColorControlAttributeListListAttributeCallback)(void * context, const chip::app::DataModel::DecodableList & data); -void ContentLauncherClusterAcceptsHeaderListListAttributeFilter(chip::TLV::TLVReader * data, - chip::Callback::Cancelable * onSuccessCallback, - chip::Callback::Cancelable * onFailureCallback); -typedef void (*ContentLauncherAcceptsHeaderListListAttributeCallback)( - void * context, const chip::app::DataModel::DecodableList & data); +void ContentLauncherClusterAcceptHeaderListListAttributeFilter(chip::TLV::TLVReader * data, + chip::Callback::Cancelable * onSuccessCallback, + chip::Callback::Cancelable * onFailureCallback); +typedef void (*ContentLauncherAcceptHeaderListListAttributeCallback)( + void * context, const chip::app::DataModel::DecodableList & data); void ContentLauncherClusterAttributeListListAttributeFilter(chip::TLV::TLVReader * data, chip::Callback::Cancelable * onSuccessCallback, chip::Callback::Cancelable * onFailureCallback); diff --git a/zzz_generated/tv-app/zap-generated/attribute-size.cpp b/zzz_generated/tv-app/zap-generated/attribute-size.cpp index 455380a3520a50..6007186b1d689f 100644 --- a/zzz_generated/tv-app/zap-generated/attribute-size.cpp +++ b/zzz_generated/tv-app/zap-generated/attribute-size.cpp @@ -158,7 +158,7 @@ uint16_t emberAfCopyList(ClusterId clusterId, EmberAfAttributeMetadata * am, boo uint16_t entryOffset = kSizeLengthInBytes; switch (am->attributeId) { - case 0x0000: // accepts header list + case 0x0000: // accept header list { entryOffset = GetByteSpanOffsetFromIndex(write ? dest : src, am->size, static_cast(index - 1)); if (entryOffset == 0) @@ -167,22 +167,22 @@ uint16_t emberAfCopyList(ClusterId clusterId, EmberAfAttributeMetadata * am, boo return 0; } - ByteSpan * acceptsHeaderListSpan = reinterpret_cast(write ? src : dest); // OCTET_STRING - uint16_t acceptsHeaderListRemainingSpace = static_cast(am->size - entryOffset); + ByteSpan * acceptHeaderListSpan = reinterpret_cast(write ? src : dest); // OCTET_STRING + uint16_t acceptHeaderListRemainingSpace = static_cast(am->size - entryOffset); if (CHIP_NO_ERROR != - (write ? WriteByteSpan(dest + entryOffset, acceptsHeaderListRemainingSpace, acceptsHeaderListSpan) - : ReadByteSpan(src + entryOffset, acceptsHeaderListRemainingSpace, acceptsHeaderListSpan))) + (write ? WriteByteSpan(dest + entryOffset, acceptHeaderListRemainingSpace, acceptHeaderListSpan) + : ReadByteSpan(src + entryOffset, acceptHeaderListRemainingSpace, acceptHeaderListSpan))) { ChipLogError(Zcl, "Index %" PRId32 " is invalid. Not enough remaining space", index); return 0; } - if (!CanCastTo(acceptsHeaderListSpan->size())) + if (!CanCastTo(acceptHeaderListSpan->size())) { - ChipLogError(Zcl, "Span size %zu is too large", acceptsHeaderListSpan->size()); + ChipLogError(Zcl, "Span size %zu is too large", acceptHeaderListSpan->size()); return 0; } - entryLength = static_cast(acceptsHeaderListSpan->size()); + entryLength = static_cast(acceptHeaderListSpan->size()); break; } } @@ -864,7 +864,7 @@ uint16_t emberAfAttributeValueListSize(ClusterId clusterId, AttributeId attribut case 0x050A: // Content Launcher Cluster switch (attributeId) { - case 0x0000: // accepts header list + case 0x0000: // accept header list // chip::ByteSpan return GetByteSpanOffsetFromIndex(buffer, 256, entryCount); break; diff --git a/zzz_generated/tv-app/zap-generated/endpoint_config.h b/zzz_generated/tv-app/zap-generated/endpoint_config.h index 69ffa9c6bb798d..03857299ad060b 100644 --- a/zzz_generated/tv-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-app/zap-generated/endpoint_config.h @@ -367,7 +367,7 @@ \ /* Endpoint: 1, Cluster: Content Launcher (server), big-endian */ \ \ - /* 1889 - accepts header list, */ \ + /* 1889 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -441,7 +441,7 @@ \ /* Endpoint: 3, Cluster: Content Launcher (server), big-endian */ \ \ - /* 2691 - accepts header list, */ \ + /* 2691 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -462,7 +462,7 @@ \ /* Endpoint: 4, Cluster: Content Launcher (server), big-endian */ \ \ - /* 2949 - accepts header list, */ \ + /* 2949 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -826,7 +826,7 @@ \ /* Endpoint: 1, Cluster: Content Launcher (server), little-endian */ \ \ - /* 1889 - accepts header list, */ \ + /* 1889 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -900,7 +900,7 @@ \ /* Endpoint: 3, Cluster: Content Launcher (server), little-endian */ \ \ - /* 2691 - accepts header list, */ \ + /* 2691 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -921,7 +921,7 @@ \ /* Endpoint: 4, Cluster: Content Launcher (server), little-endian */ \ \ - /* 2949 - accepts header list, */ \ + /* 2949 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -1242,7 +1242,7 @@ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ - { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(1889) }, /* accepts header list */ \ + { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(1889) }, /* accept header list */ \ { 0x0001, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_LONG_DEFAULTS_INDEX(2143) }, /* supported streaming protocols */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ @@ -1311,7 +1311,7 @@ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ \ /* Endpoint: 3, Cluster: Content Launcher (server) */ \ - { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2691) }, /* accepts header list */ \ + { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2691) }, /* accept header list */ \ { 0x0001, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_LONG_DEFAULTS_INDEX(2945) }, /* supported streaming protocols */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ @@ -1336,7 +1336,7 @@ { 0xFFFD, ZAP_TYPE(INT16U), 0, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_SIMPLE_DEFAULT(1) }, /* ClusterRevision */ \ \ /* Endpoint: 4, Cluster: Content Launcher (server) */ \ - { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2949) }, /* accepts header list */ \ + { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2949) }, /* accept header list */ \ { 0x0001, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_LONG_DEFAULTS_INDEX(3203) }, /* supported streaming protocols */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ diff --git a/zzz_generated/tv-casting-app/zap-generated/attribute-size.cpp b/zzz_generated/tv-casting-app/zap-generated/attribute-size.cpp index f23dd96d4c3c84..9fd437e395e1e4 100644 --- a/zzz_generated/tv-casting-app/zap-generated/attribute-size.cpp +++ b/zzz_generated/tv-casting-app/zap-generated/attribute-size.cpp @@ -158,7 +158,7 @@ uint16_t emberAfCopyList(ClusterId clusterId, EmberAfAttributeMetadata * am, boo uint16_t entryOffset = kSizeLengthInBytes; switch (am->attributeId) { - case 0x0000: // accepts header list + case 0x0000: // accept header list { entryOffset = GetByteSpanOffsetFromIndex(write ? dest : src, am->size, static_cast(index - 1)); if (entryOffset == 0) @@ -167,22 +167,22 @@ uint16_t emberAfCopyList(ClusterId clusterId, EmberAfAttributeMetadata * am, boo return 0; } - ByteSpan * acceptsHeaderListSpan = reinterpret_cast(write ? src : dest); // OCTET_STRING - uint16_t acceptsHeaderListRemainingSpace = static_cast(am->size - entryOffset); + ByteSpan * acceptHeaderListSpan = reinterpret_cast(write ? src : dest); // OCTET_STRING + uint16_t acceptHeaderListRemainingSpace = static_cast(am->size - entryOffset); if (CHIP_NO_ERROR != - (write ? WriteByteSpan(dest + entryOffset, acceptsHeaderListRemainingSpace, acceptsHeaderListSpan) - : ReadByteSpan(src + entryOffset, acceptsHeaderListRemainingSpace, acceptsHeaderListSpan))) + (write ? WriteByteSpan(dest + entryOffset, acceptHeaderListRemainingSpace, acceptHeaderListSpan) + : ReadByteSpan(src + entryOffset, acceptHeaderListRemainingSpace, acceptHeaderListSpan))) { ChipLogError(Zcl, "Index %" PRId32 " is invalid. Not enough remaining space", index); return 0; } - if (!CanCastTo(acceptsHeaderListSpan->size())) + if (!CanCastTo(acceptHeaderListSpan->size())) { - ChipLogError(Zcl, "Span size %zu is too large", acceptsHeaderListSpan->size()); + ChipLogError(Zcl, "Span size %zu is too large", acceptHeaderListSpan->size()); return 0; } - entryLength = static_cast(acceptsHeaderListSpan->size()); + entryLength = static_cast(acceptHeaderListSpan->size()); break; } } @@ -974,7 +974,7 @@ uint16_t emberAfAttributeValueListSize(ClusterId clusterId, AttributeId attribut case 0x050A: // Content Launcher Cluster switch (attributeId) { - case 0x0000: // accepts header list + case 0x0000: // accept header list // chip::ByteSpan return GetByteSpanOffsetFromIndex(buffer, 256, entryCount); break; 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 7b99fc7b819629..b6e6d6f4058167 100644 --- a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h +++ b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h @@ -411,7 +411,7 @@ \ /* Endpoint: 1, Cluster: Content Launcher (server), big-endian */ \ \ - /* 2183 - accepts header list, */ \ + /* 2183 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -910,7 +910,7 @@ \ /* Endpoint: 1, Cluster: Content Launcher (server), little-endian */ \ \ - /* 2183 - accepts header list, */ \ + /* 2183 - accept header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -1590,7 +1590,7 @@ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \ \ /* Endpoint: 1, Cluster: Content Launcher (server) */ \ - { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2183) }, /* accepts header list */ \ + { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(2183) }, /* accept header list */ \ { 0x0001, ZAP_TYPE(BITMAP32), 4, ZAP_ATTRIBUTE_MASK(WRITABLE), \ ZAP_LONG_DEFAULTS_INDEX(2437) }, /* supported streaming protocols */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* ClusterRevision */ \