blob: 3ad37a63ed58213e13f4fe79b8e27f555b38b454 [file] [log] [blame]
#include <app-common/zap-generated/cluster-id.h>
#include <app-common/zap-generated/attribute-id.h>
#include <new>
#include "bridge/BridgeGlobalStructs.h"
namespace clusters {
{%- for cluster in clusters %}
{%- if cluster | dynamicCluster(idl) %}
struct {{cluster.name}}Cluster : public CommonCluster
{
{%- for struct in cluster.structs %}
{%- if struct.tag == None %}
struct {{struct.name}}
{
CHIP_ERROR Decode(chip::TLV::TLVReader & reader);
CHIP_ERROR Encode(chip::TLV::TLVWriter & writer, chip::TLV::Tag tag) const;
{%- for field in struct.fields %}
{{field | getField(cluster, idl)}} {{field.name}};
{%- endfor %}
};
{%- endif %}
{%- endfor %}
static constexpr chip::ClusterId kClusterId = {{cluster.code}};
chip::ClusterId GetClusterId() override { return kClusterId; }
CHIP_ERROR WriteFromBridge(const chip::app::ConcreteDataAttributePath & aPath, chip::app::AttributeValueDecoder & aDecoder) override;
template<typename T>
void AddAllAttributes(T *list)
{
{%- for attr in cluster.attributes %}
list->Add(m{{attr.definition.name | capitalcase}});
{%- endfor %}
}
chip::Span<const EmberAfAttributeMetadata> GetAllAttributes() override;
{% for attr in cluster.attributes %}
Attribute<{{attr.definition.code}}, {{attr | getMask(cluster, idl)}}, {{attr | getType(cluster, idl)}}> m{{attr.definition.name | capitalcase}}{{attr | getInit(cluster, idl)}};
{%- endfor %}
};
struct {{cluster.name}}Access : public CommonAttributeAccessInterface
{
{{cluster.name}}Access();
{{cluster.name}}Cluster* GetCluster(const chip::app::ConcreteClusterPath & aPath)
{
CommonCluster * cluster = FindCluster(aPath);
return cluster ? static_cast<{{cluster.name}}Cluster*>(cluster) : nullptr;
}
CHIP_ERROR Read(const chip::app::ConcreteReadAttributePath & aPath, chip::app::AttributeValueEncoder & aEncoder) override;
CHIP_ERROR Write(const chip::app::ConcreteDataAttributePath & aPath, chip::app::AttributeValueDecoder & aDecoder) override;
void OnListWriteBegin(const chip::app::ConcreteAttributePath & aPath) override;
void OnListWriteEnd(const chip::app::ConcreteAttributePath & aPath, bool aWriteWasSuccessful) override;
};
{%- endif %}
{%- endfor %}
}