From 7b173696a8e53dc5763661cc041ab5c473bdedfc Mon Sep 17 00:00:00 2001 From: Shubham Patil Date: Wed, 10 Sep 2025 14:47:01 +0530 Subject: [PATCH] components/esp_matter: further optimize the concentration measurement - move and remove the redundant function list, function flags, and revision. - remove the templatization and make the function simpler and expose it as a public api --- .../data_model/esp_matter_cluster.cpp | 35 ++++++---------- .../data_model/esp_matter_cluster.h | 2 + .../private/esp_matter_cluster_revisions.h | 40 +------------------ 3 files changed, 16 insertions(+), 61 deletions(-) diff --git a/components/esp_matter/data_model/esp_matter_cluster.cpp b/components/esp_matter/data_model/esp_matter_cluster.cpp index eb1849808..6660bf780 100644 --- a/components/esp_matter/data_model/esp_matter_cluster.cpp +++ b/components/esp_matter/data_model/esp_matter_cluster.cpp @@ -1532,9 +1532,7 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) namespace concentration_measurement { -template -static cluster_t *create(endpoint_t *endpoint, T *config, uint8_t flags, uint32_t cluster_id, uint32_t cluster_revision, - 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, uint32_t cluster_id) { cluster_t *cluster = cluster::create(endpoint, cluster_id, flags); VerifyOrReturnValue(cluster, NULL, ESP_LOGE(TAG, "Could not create cluster, id: 0x%08" PRIX32, cluster_id)); @@ -1542,7 +1540,7 @@ static cluster_t *create(endpoint_t *endpoint, T *config, uint8_t flags, uint32_ if (flags & CLUSTER_FLAG_SERVER) { VerifyOrReturnValue(config != NULL, ABORT_CLUSTER_CREATE(cluster)); - add_function_list(cluster, function_list, function_flags); + add_function_list(cluster, NULL, CLUSTER_FLAG_NONE); // For all concentration measurement cluster Attribute Id of measurement medium is 0x09 // Hence, using the hard coded value @@ -1591,8 +1589,7 @@ namespace carbon_monoxide_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - CarbonMonoxideConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, CarbonMonoxideConcentrationMeasurement::Id); } } /* carbon_monoxide_concentration_measurement */ @@ -1601,8 +1598,7 @@ namespace carbon_dioxide_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - CarbonDioxideConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, CarbonDioxideConcentrationMeasurement::Id); } } /* carbon_dioxide_concentration_measurement */ @@ -1611,8 +1607,7 @@ namespace nitrogen_dioxide_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - NitrogenDioxideConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, NitrogenDioxideConcentrationMeasurement::Id); } } /* nitrogen_dioxide_concentration_measurement */ @@ -1621,8 +1616,7 @@ namespace ozone_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - OzoneConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, OzoneConcentrationMeasurement::Id); } } /* ozone_concentration_measurement */ @@ -1631,8 +1625,7 @@ namespace formaldehyde_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - FormaldehydeConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, FormaldehydeConcentrationMeasurement::Id); } } /* formaldehyde_concentration_measurement */ @@ -1641,8 +1634,7 @@ namespace pm1_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - Pm1ConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, Pm1ConcentrationMeasurement::Id); } } /* pm1_concentration_measurement */ @@ -1651,8 +1643,7 @@ namespace pm25_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - Pm25ConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, Pm25ConcentrationMeasurement::Id); } } /* pm25_concentration_measurement */ @@ -1661,8 +1652,7 @@ namespace pm10_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - Pm10ConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, Pm10ConcentrationMeasurement::Id); } } /* pm10_concentration_measurement */ @@ -1671,8 +1661,7 @@ namespace radon_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, - RadonConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, RadonConcentrationMeasurement::Id); } } /* radon_concentration_measurement */ @@ -1681,7 +1670,7 @@ namespace total_volatile_organic_compounds_concentration_measurement { cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags) { - return concentration_measurement::create(endpoint, config, flags, TotalVolatileOrganicCompoundsConcentrationMeasurement::Id, cluster_revision); + return concentration_measurement::create(endpoint, config, flags, TotalVolatileOrganicCompoundsConcentrationMeasurement::Id); } } /* total_volatile_organic_compounds_concentration_measurement */ diff --git a/components/esp_matter/data_model/esp_matter_cluster.h b/components/esp_matter/data_model/esp_matter_cluster.h index 13f693ed9..b13ae0913 100644 --- a/components/esp_matter/data_model/esp_matter_cluster.h +++ b/components/esp_matter/data_model/esp_matter_cluster.h @@ -390,6 +390,8 @@ typedef struct config { void *delegate; config() : measurement_medium(0), feature_flags(0) {} } config_t; + +cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags, uint32_t cluster_id); } /* concentration_measurement */ namespace carbon_monoxide_concentration_measurement { diff --git a/components/esp_matter/data_model/private/esp_matter_cluster_revisions.h b/components/esp_matter/data_model/private/esp_matter_cluster_revisions.h index 8f054ae57..0dd5d3891 100644 --- a/components/esp_matter/data_model/private/esp_matter_cluster_revisions.h +++ b/components/esp_matter/data_model/private/esp_matter_cluster_revisions.h @@ -167,45 +167,9 @@ namespace activated_carbon_filter_monitoring { constexpr uint16_t cluster_revision = 1; } // namespace activated_carbon_filter_monitoring -namespace carbon_monoxide_concentration_measurement { +namespace concentration_measurement { constexpr uint16_t cluster_revision = 3; -} // namespace carbon_monoxide_concentration_measurement - -namespace carbon_dioxide_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace carbon_dioxide_concentration_measurement - -namespace nitrogen_dioxide_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace nitrogen_dioxide_concentration_measurement - -namespace ozone_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace ozone_concentration_measurement - -namespace formaldehyde_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace formaldehyde_concentration_measurement - -namespace pm1_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace pm1_concentration_measurement - -namespace pm25_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace pm25_concentration_measurement - -namespace pm10_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace pm10_concentration_measurement - -namespace radon_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace radon_concentration_measurement - -namespace total_volatile_organic_compounds_concentration_measurement { -constexpr uint16_t cluster_revision = 3; -} // namespace total_volatile_organic_compounds_concentration_measurement +} // namespace concentration_measurement namespace operational_state { constexpr uint16_t cluster_revision = 2;