class

Matter::Cluster::DescriptorCluster

Inherits Matter::Cluster::Base < Reference < Object

Descriptor Cluster (0x001D)

Provides device composition information including device types, server/client clusters, and endpoint hierarchy.

Required on all endpoints.

Matter Spec: Core 9.5

Constants

ATTR_CLIENT_LIST = 2_u32
ATTR_DEVICE_TYPE_LIST = 0_u32

Attributes

ATTR_PARTS_LIST = 3_u32
ATTR_SERVER_LIST = 1_u32
ATTRIBUTE_LIST = 65531_u32
CLUSTER_ID = 29_u32
CLUSTER_REVISION = 65533_u32

Global attributes (required on all clusters)

FEATURE_MAP = 65532_u32

Constructors

new(endpoint_id : DataType::EndpointNumber)
Source

Class methods

cluster_id

Descriptor Cluster (0x001D)

Provides device composition information including device types, server/client clusters, and endpoint hierarchy.

Required on all endpoints.

Matter Spec: Core 9.5

Source

Instance methods

add_client(cluster_class : Base.class)

Add a client cluster by class

@param cluster_class The cluster class (e.g., OnOffCluster) @return self for chaining

Example: descriptor.add_client(OnOffCluster) .add_client(LevelControlCluster)

Source
add_part(endpoint_id : UInt16)

Add a child endpoint to the parts list

@param endpoint_id The endpoint ID @return self for chaining

Example: descriptor.add_part(1_u16) .add_part(2_u16)

Source
add_server(cluster_class : Base.class)

Add a server cluster by class

@param cluster_class The cluster class (e.g., OnOffCluster) @return self for chaining

Example: descriptor.add_server(OnOffCluster) .add_server(LevelControlCluster)

Source
attributes

Get all attribute metadata

Source
client_list
Source
client_list=(client_list : Array(UInt32))
Source
commands

Get all command metadata

Source
device_type_list

Attribute storage

Source
device_type_list=(device_type_list : Array(DeviceTypeStruct))

Attribute storage

Source
has_client_cluster?(cluster_id : UInt32) : Bool

Helper: Check if a cluster is in the client list

Source
has_client_cluster?(cluster_class : Base.class) : Bool

Helper: Check if a cluster is in the client list (by class)

Source
has_part?(endpoint_id : UInt16) : Bool

Helper: Check if an endpoint is in the parts list

Source
has_server_cluster?(cluster_id : UInt32) : Bool

Helper: Check if a cluster is in the server list

Source
has_server_cluster?(cluster_class : Base.class) : Bool

Helper: Check if a cluster is in the server list (by class)

Source
name

Get cluster name

Source
parts_list
Source
parts_list=(parts_list : Array(UInt16))
Source
primary_device_type

Helper: Get primary device type

Source
read_attribute(attribute_id : UInt32, fabric_index : UInt8 | Nil = nil) : InteractionModel::Status | Bytes

Read an attribute value The fabric_index parameter is optional and used for fabric-scoped attributes like CurrentFabricIndex in OperationalCredentialsCluster

Source
server_list
Source
server_list=(server_list : Array(UInt32))
Source
write_attribute(attribute_id : UInt32, value : Bytes) : InteractionModel::Status

Write an attribute value

Source

Nested types