blob: 3a1457895c8107ecf5b5bea2bd5665de4dfa9bb7 [file] [log] [blame]
{{> header}}
#pragma once
#include <stdint.h>
namespace chip {
namespace app {
namespace Clusters {
namespace detail {
// Enums shared across multiple clusters.
{{#zcl_enums}}
{{#if has_more_than_one_cluster}}
{{> cluster_enums_enum ns=""}}
{{/if}}
{{/zcl_enums}}
// Bitmaps shared across multiple clusters.
{{#zcl_bitmaps}}
{{#if has_more_than_one_cluster}}
// Bitmap for {{label}}
enum class {{asType label}} : {{asUnderlyingZclType name}} {
{{#zcl_bitmap_items}}
k{{asUpperCamelCase label}} = {{asHex mask}},
{{/zcl_bitmap_items}}
};
{{/if}}
{{/zcl_bitmaps}}
} // namespace detail
namespace Globals {
// Global enums.
{{#zcl_enums}}
{{#if has_no_clusters}}
{{> cluster_enums_enum ns=""}}
{{/if}}
{{/zcl_enums}}
// Global bitmaps.
{{#zcl_bitmaps}}
{{#if has_no_clusters}}
{{! Work around https://github.com/project-chip/zap/issues/1370 and manually filter out built-in bitmap types. }}
{{#if_is_atomic label}}
{{else}}
// Bitmap for {{label}}
enum class {{asType label}} : {{asUnderlyingZclType name}} {
{{#zcl_bitmap_items}}
k{{asUpperCamelCase label}} = {{asHex mask}},
{{/zcl_bitmap_items}}
};
{{/if_is_atomic}}
{{/if}}
{{/zcl_bitmaps}}
} // namespace Globals
{{#zcl_clusters}}
namespace {{asUpperCamelCase name}} {
{{#zcl_enums}}
{{#if has_more_than_one_cluster}}
using {{asUpperCamelCase name}} = Clusters::detail::{{asUpperCamelCase name}};
{{else}}
{{> cluster_enums_enum ns=(asUpperCamelCase ../name)}}
{{/if}}
{{/zcl_enums}}
{{#zcl_bitmaps}}
{{#if has_more_than_one_cluster}}
using {{asUpperCamelCase name}} = Clusters::detail::{{asUpperCamelCase name}};
{{else}}
// Bitmap for {{label}}
enum class {{asType label}} : {{asUnderlyingZclType name}} {
{{#zcl_bitmap_items}}
k{{asUpperCamelCase label}} = {{asHex mask}},
{{/zcl_bitmap_items}}
};
{{/if}}
{{/zcl_bitmaps}}
} // namespace {{asUpperCamelCase name}}
{{/zcl_clusters}}
} // namespace Clusters
} // namespace app
} // namespace chip
// Included at the end, so all our definitions above are available.
#include <app/common/CompatEnumNames.h>