esp-matter: Add the missing functions to the functions list of clusters

This commit is contained in:
WanqQixiang
2023-05-18 17:48:23 +08:00
parent e4a12be1a9
commit 78cf3c3562
+85 -78
View File
@@ -1213,8 +1213,11 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags, uint32_
} /* color_control */
namespace fan_control {
const function_generic_t *function_list = NULL;
const int function_flags = CLUSTER_FLAG_NONE;
const function_generic_t function_list[] = {
(function_generic_t)MatterFanControlClusterServerAttributeChangedCallback,
(function_generic_t)MatterFanControlClusterServerPreAttributeChangedCallback,
};
const int function_flags = CLUSTER_FLAG_ATTRIBUTE_CHANGED_FUNCTION | CLUSTER_FLAG_PRE_ATTRIBUTE_CHANGED_FUNCTION;
cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
{
@@ -1258,8 +1261,9 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
namespace thermostat {
const function_generic_t function_list[] = {
(function_generic_t)emberAfThermostatClusterServerInitCallback,
(function_generic_t)MatterThermostatClusterServerPreAttributeChangedCallback,
};
const int function_flags = CLUSTER_FLAG_INIT_FUNCTION;
const int function_flags = CLUSTER_FLAG_INIT_FUNCTION | CLUSTER_FLAG_PRE_ATTRIBUTE_CHANGED_FUNCTION;
cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
{
@@ -1483,8 +1487,10 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
} /* temperature_measurement */
namespace occupancy_sensing {
const function_generic_t *function_list = NULL;
const int function_flags = CLUSTER_FLAG_NONE;
const function_generic_t function_list[] = {
(function_generic_t)emberAfOccupancySensingClusterServerInitCallback,
};
const int function_flags = CLUSTER_FLAG_INIT_FUNCTION;
cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
{
@@ -1563,8 +1569,7 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
namespace localization_configuration {
const function_generic_t function_list[] = {
(function_generic_t)emberAfLocalizationConfigurationClusterServerInitCallback,
(function_generic_t)MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback
};
(function_generic_t)MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback};
const int function_flags = CLUSTER_FLAG_INIT_FUNCTION | CLUSTER_FLAG_PRE_ATTRIBUTE_CHANGED_FUNCTION;
cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
@@ -1599,17 +1604,15 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
}
}
return cluster;
}
} /* localization_configuration_cluster */
} /* localization_configuration */
namespace time_format_localization {
const function_generic_t function_list[] = {
(function_generic_t)emberAfTimeFormatLocalizationClusterServerInitCallback,
(function_generic_t)MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback
};
(function_generic_t)MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback};
const int function_flags = CLUSTER_FLAG_INIT_FUNCTION | CLUSTER_FLAG_PRE_ATTRIBUTE_CHANGED_FUNCTION;
cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags, uint32_t features)
@@ -1660,30 +1663,32 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
{
cluster_t *cluster = cluster::create(endpoint, IlluminanceMeasurement::Id, flags);
if (!cluster) {
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
}
if (flags & CLUSTER_FLAG_SERVER) {
set_plugin_server_init_callback(cluster, MatterIlluminanceMeasurementPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
set_plugin_server_init_callback(cluster, MatterIlluminanceMeasurementPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
}
if (flags & CLUSTER_FLAG_CLIENT) {
set_plugin_client_init_callback(cluster, MatterIlluminanceMeasurementPluginClientInitCallback);
create_default_binding_cluster(endpoint);
set_plugin_client_init_callback(cluster, MatterIlluminanceMeasurementPluginClientInitCallback);
create_default_binding_cluster(endpoint);
}
if (flags & CLUSTER_FLAG_SERVER) {
/* Attributes managed internally */
global::attribute::create_feature_map(cluster, 0);
/** Attributes not managed internally **/
if (config) {
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_illuminance_measured_value(cluster, config->illuminance_measured_value, 0x0000, 0xFFFF);
attribute::create_illuminance_min_measured_value(cluster, config->illuminance_min_measured_value, 0x0001, 0xFFFD);
attribute::create_illuminance_max_measured_value(cluster, config->illuminance_max_measured_value, 0x0002, 0xFFFE);
} else {
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
}
/* Attributes managed internally */
global::attribute::create_feature_map(cluster, 0);
/** Attributes not managed internally **/
if (config) {
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_illuminance_measured_value(cluster, config->illuminance_measured_value, 0x0000, 0xFFFF);
attribute::create_illuminance_min_measured_value(cluster, config->illuminance_min_measured_value, 0x0001,
0xFFFD);
attribute::create_illuminance_max_measured_value(cluster, config->illuminance_max_measured_value, 0x0002,
0xFFFE);
} else {
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
}
}
return cluster;
@@ -1698,30 +1703,30 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
{
cluster_t *cluster = cluster::create(endpoint, PressureMeasurement::Id, flags);
if (!cluster) {
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
}
if (flags & CLUSTER_FLAG_SERVER) {
set_plugin_server_init_callback(cluster, MatterPressureMeasurementPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
set_plugin_server_init_callback(cluster, MatterPressureMeasurementPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
}
if (flags & CLUSTER_FLAG_CLIENT) {
set_plugin_client_init_callback(cluster, MatterPressureMeasurementPluginClientInitCallback);
create_default_binding_cluster(endpoint);
set_plugin_client_init_callback(cluster, MatterPressureMeasurementPluginClientInitCallback);
create_default_binding_cluster(endpoint);
}
if (flags & CLUSTER_FLAG_SERVER) {
/* Attributes managed internally */
global::attribute::create_feature_map(cluster, 0);
/** Attributes not managed internally **/
if (config) {
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_pressure_measured_value(cluster, config->pressure_measured_value);
attribute::create_pressure_min_measured_value(cluster, config->pressure_min_measured_value);
attribute::create_pressure_max_measured_value(cluster, config->pressure_max_measured_value);
} else {
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
}
/* Attributes managed internally */
global::attribute::create_feature_map(cluster, 0);
/** Attributes not managed internally **/
if (config) {
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_pressure_measured_value(cluster, config->pressure_measured_value);
attribute::create_pressure_min_measured_value(cluster, config->pressure_min_measured_value);
attribute::create_pressure_max_measured_value(cluster, config->pressure_max_measured_value);
} else {
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
}
}
return cluster;
@@ -1736,30 +1741,30 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
{
cluster_t *cluster = cluster::create(endpoint, FlowMeasurement::Id, flags);
if (!cluster) {
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
}
if (flags & CLUSTER_FLAG_SERVER) {
set_plugin_server_init_callback(cluster, MatterFlowMeasurementPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
set_plugin_server_init_callback(cluster, MatterFlowMeasurementPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
}
if (flags & CLUSTER_FLAG_CLIENT) {
set_plugin_client_init_callback(cluster, MatterFlowMeasurementPluginClientInitCallback);
create_default_binding_cluster(endpoint);
set_plugin_client_init_callback(cluster, MatterFlowMeasurementPluginClientInitCallback);
create_default_binding_cluster(endpoint);
}
if (flags & CLUSTER_FLAG_SERVER) {
/* Attributes managed internally */
global::attribute::create_feature_map(cluster, 0);
/** Attributes not managed internally **/
if (config) {
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_flow_measured_value(cluster, config->flow_measured_value);
attribute::create_flow_min_measured_value(cluster, config->flow_min_measured_value);
attribute::create_flow_max_measured_value(cluster, config->flow_max_measured_value);
} else {
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
}
/* Attributes managed internally */
global::attribute::create_feature_map(cluster, 0);
/** Attributes not managed internally **/
if (config) {
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_flow_measured_value(cluster, config->flow_measured_value);
attribute::create_flow_min_measured_value(cluster, config->flow_min_measured_value);
attribute::create_flow_max_measured_value(cluster, config->flow_max_measured_value);
} else {
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
}
}
return cluster;
@@ -1769,24 +1774,26 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
namespace pump_configuration_and_control {
const function_generic_t function_list[] = {
(function_generic_t)emberAfPumpConfigurationAndControlClusterServerInitCallback,
(function_generic_t)MatterPumpConfigurationAndControlClusterServerAttributeChangedCallback,
(function_generic_t)MatterPumpConfigurationAndControlClusterServerPreAttributeChangedCallback,
};
const int function_flags = CLUSTER_FLAG_INIT_FUNCTION | CLUSTER_FLAG_PRE_ATTRIBUTE_CHANGED_FUNCTION;
const int function_flags =
CLUSTER_FLAG_INIT_FUNCTION | CLUSTER_FLAG_ATTRIBUTE_CHANGED_FUNCTION | CLUSTER_FLAG_PRE_ATTRIBUTE_CHANGED_FUNCTION;
cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
{
cluster_t *cluster = cluster::create(endpoint, PumpConfigurationAndControl::Id, flags);
if (!cluster) {
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
ESP_LOGE(TAG, "Could not create cluster");
return NULL;
}
if (flags & CLUSTER_FLAG_SERVER) {
set_plugin_server_init_callback(cluster, MatterPumpConfigurationAndControlPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
set_plugin_server_init_callback(cluster, MatterPumpConfigurationAndControlPluginServerInitCallback);
add_function_list(cluster, function_list, function_flags);
}
if (flags & CLUSTER_FLAG_CLIENT) {
set_plugin_client_init_callback(cluster, MatterPumpConfigurationAndControlPluginClientInitCallback);
create_default_binding_cluster(endpoint);
set_plugin_client_init_callback(cluster, MatterPumpConfigurationAndControlPluginClientInitCallback);
create_default_binding_cluster(endpoint);
}
if (flags & CLUSTER_FLAG_SERVER) {
@@ -1795,16 +1802,16 @@ cluster_t *create(endpoint_t *endpoint, config_t *config, uint8_t flags)
/** Attributes not managed internally **/
if (config) {
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_max_pressure(cluster, config->max_pressure);
attribute::create_max_speed(cluster, config->max_speed);
attribute::create_max_flow(cluster, config->max_flow);
attribute::create_effective_operation_mode(cluster, config->effective_operation_mode);
attribute::create_effective_control_mode(cluster, config->effective_control_mode);
attribute::create_capacity(cluster, config->capacity);
attribute::create_operation_mode(cluster, config->operation_mode);
global::attribute::create_cluster_revision(cluster, config->cluster_revision);
attribute::create_max_pressure(cluster, config->max_pressure);
attribute::create_max_speed(cluster, config->max_speed);
attribute::create_max_flow(cluster, config->max_flow);
attribute::create_effective_operation_mode(cluster, config->effective_operation_mode);
attribute::create_effective_control_mode(cluster, config->effective_control_mode);
attribute::create_capacity(cluster, config->capacity);
attribute::create_operation_mode(cluster, config->operation_mode);
} else {
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
ESP_LOGE(TAG, "Config is NULL. Cannot add some attributes.");
}
}