From 1db3abc2155fbbe5bad5f7abcae2475dcd9cf5d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20BOU=C3=89?= Date: Thu, 1 Jan 2026 16:41:42 +0100 Subject: [PATCH] feat: add Meter Identification delegate initialization callback feat: add Meter Identification delegate initialization callback feat: clarify initialization callback in Meter Identification delegate feat: clarify initialization callback in Meter Identification delegate feat: update initialization callback for Meter Identification delegate --- components/esp_matter/data_model/esp_matter_cluster.cpp | 3 +++ .../data_model/esp_matter_delegate_callbacks.cpp | 9 +++++++++ .../data_model/esp_matter_delegate_callbacks.h | 1 + 3 files changed, 13 insertions(+) diff --git a/components/esp_matter/data_model/esp_matter_cluster.cpp b/components/esp_matter/data_model/esp_matter_cluster.cpp index 7e56ad2d7..113f5924a 100644 --- a/components/esp_matter/data_model/esp_matter_cluster.cpp +++ b/components/esp_matter/data_model/esp_matter_cluster.cpp @@ -4534,6 +4534,9 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) if (flags & CLUSTER_FLAG_SERVER) { static const auto plugin_server_init_cb = CALL_ONCE(MatterMeterIdentificationPluginServerInitCallback); set_plugin_server_init_callback(cluster, plugin_server_init_cb); + /* Not a delegate but an Initialization callback */ + static const auto delegate_init_cb = MeterIdentificationDelegateInitCB; + set_delegate_and_init_callback(cluster, delegate_init_cb, nullptr); add_function_list(cluster, function_list, function_flags); /* Attributes managed internally */ diff --git a/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp b/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp index c20248397..c3dfed90e 100644 --- a/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp +++ b/components/esp_matter/data_model/esp_matter_delegate_callbacks.cpp @@ -54,6 +54,7 @@ #include #include #include +#include #include using namespace chip::app::Clusters; @@ -617,6 +618,14 @@ void ElectricalGridConditionsDelegateInitCB(void *delegate, uint16_t endpoint_id electrical_grid_conditions_instance->Init(); } +/* Not a delegate but an Initialization callback */ +void MeterIdentificationDelegateInitCB(void *delegate, uint16_t endpoint_id) +{ + uint32_t feature_map = get_feature_map_value(endpoint_id, MeterIdentification::Id); + MeterIdentification::Instance *meter_identification_instance = new MeterIdentification::Instance(endpoint_id, chip::BitMask(feature_map)); + meter_identification_instance->Init(); +} + } // namespace delegate_cb } // namespace cluster } // namespace esp_matter diff --git a/components/esp_matter/data_model/esp_matter_delegate_callbacks.h b/components/esp_matter/data_model/esp_matter_delegate_callbacks.h index 61ade43bc..42e84777e 100644 --- a/components/esp_matter/data_model/esp_matter_delegate_callbacks.h +++ b/components/esp_matter/data_model/esp_matter_delegate_callbacks.h @@ -62,6 +62,7 @@ void PushAvStreamTransportDelegateInitCB(void *delegate, uint16_t endpoint_id); void CommodityTariffDelegateInitCB(void *delegate, uint16_t endpoint_id); void CommodityPriceDelegateInitCB(void *delegate, uint16_t endpoint_id); void ElectricalGridConditionsDelegateInitCB(void *delegate, uint16_t endpoint_id); +void MeterIdentificationDelegateInitCB(void *delegate, uint16_t endpoint_id); } // namespace delegate_cb } // namespace cluster