// Copyright 2026 Espressif Systems (Shanghai) PTE LTD // // 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 IS A GENERATED FILE, DO NOT EDIT */ #include #include #include #include #include #include #include #include #include #include #include #include using namespace chip::app::Clusters; using chip::app::CommandHandler; using chip::app::DataModel::Decode; using chip::TLV::TLVReader; using namespace esp_matter; using namespace esp_matter::cluster; static const char *TAG = "binding_cluster"; constexpr uint16_t cluster_revision = 1; namespace esp_matter { namespace cluster { namespace binding { namespace attribute { attribute_t *create_binding(cluster_t *cluster, uint8_t *value, uint16_t length, uint16_t count) { return esp_matter::attribute::create(cluster, Binding::Id, ATTRIBUTE_FLAG_WRITABLE | ATTRIBUTE_FLAG_MANAGED_INTERNALLY | ATTRIBUTE_FLAG_NONVOLATILE, esp_matter_array(value, length, count)); } } /* attribute */ const function_generic_t *function_list = NULL; const int function_flags = CLUSTER_FLAG_NONE; cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { cluster_t *cluster = esp_matter::cluster::create(endpoint, binding::Id, flags); VerifyOrReturnValue(cluster, NULL, ESP_LOGE(TAG, "Could not create cluster. cluster_id: 0x%08" PRIX32, binding::Id)); if (flags & CLUSTER_FLAG_SERVER) { VerifyOrReturnValue(config != NULL, ABORT_CLUSTER_CREATE(cluster)); static const auto plugin_server_init_cb = CALL_ONCE(MatterBindingPluginServerInitCallback); set_plugin_server_init_callback(cluster, plugin_server_init_cb); add_function_list(cluster, function_list, function_flags); /* Attributes managed internally */ global::attribute::create_feature_map(cluster, 0); /* Attributes not managed internally */ global::attribute::create_cluster_revision(cluster, cluster_revision); attribute::create_binding(cluster, NULL, 0, 0); cluster::set_init_and_shutdown_callbacks(cluster, ESPMatterBindingClusterServerInitCallback, ESPMatterBindingClusterServerShutdownCallback); } return cluster; } } /* binding */ } /* cluster */ } /* esp_matter */