{{> header}}

// Prevent multiple inclusion
#pragma once

/**** Cluster endpoint counts ****/
{{#all_user_clusters}}
#define EMBER_AF_{{asDelimitedMacro define}}_{{asDelimitedMacro side}}_ENDPOINT_COUNT ({{user_endpoint_count_by_cluster id side}})
{{/all_user_clusters}}

/**** Cluster Plugins ****/
{{#all_user_clusters}}

// Use this macro to check if the {{side}} side of the {{name}} cluster is included
#define ZCL_USING_{{asDelimitedMacro define}}_{{asDelimitedMacro side}}
#define EMBER_AF_PLUGIN_{{asDelimitedMacro name}}_{{asDelimitedMacro side}}
{{#if (isServer side)}}
#define EMBER_AF_PLUGIN_{{asDelimitedMacro name}}
{{/if}}
{{#if (isStrEqual name "Color Control")}}
{{#if (isServer side)}}
// User options for {{side}} plugin {{name}}
#define EMBER_AF_PLUGIN_COLOR_CONTROL_SERVER_XY
#define EMBER_AF_PLUGIN_COLOR_CONTROL_SERVER_TEMP
#define EMBER_AF_PLUGIN_COLOR_CONTROL_SERVER_HSV
{{/if}}
{{else if (isStrEqual name "IAS Zone")}}
// User options for {{side}} plugin {{name}}
{{#if (isServer side)}}
#define EMBER_AF_PLUGIN_IAS_ZONE_SERVER_ZONE_TYPE 541
{{else}}
#define EMBER_AF_PLUGIN_IAS_ZONE_CLIENT_MAX_DEVICES 10
{{/if}}
{{else if (isStrEqual name "Level Control")}}
{{#if (isServer side)}}
// User options for {{side}} plugin {{name}}
#define EMBER_AF_PLUGIN_LEVEL_CONTROL_MAXIMUM_LEVEL 254
#define EMBER_AF_PLUGIN_LEVEL_CONTROL_MINIMUM_LEVEL 0
#define EMBER_AF_PLUGIN_LEVEL_CONTROL_RATE 0
{{/if}}
{{else if (isStrEqual name "Scenes")}}
{{#if (isServer side)}}
// User options for {{side}} plugin {{name}}
// Cluster spec 1.4.8.2
#ifdef CHIP_CONFIG_MAX_SCENES_PER_FABRIC
#define MATTER_SCENES_TABLE_SIZE CHIP_CONFIG_MAX_SCENES_PER_FABRIC
#else
#define MATTER_SCENES_TABLE_SIZE 16
#endif
{{/if}}
{{#all_user_cluster_generated_attributes}}
{{#if (isStrEqual ../name clusterName)}}
{{#if (isStrEqual name "FeatureMap")}}

// Scenes FeatureMap Attribute Toggle Scenes Name feature
// App cluster specs 1.4.4
#define MATTER_CLUSTER_SCENE_NAME_SUPPORT_MASK 0x0001
#define MATTER_CLUSTER_SCENE_NAME_SUPPORT ({{asHex defaultValue 4}} & MATTER_CLUSTER_SCENE_NAME_SUPPORT_MASK)
{{/if}}
{{/if}}
{{/all_user_cluster_generated_attributes}}
{{/if}}

{{/all_user_clusters}}
