class Matter::Cluster::AccessControlCluster

Overview

Access Control Cluster (0x001F)

Provides fine-grained access control for Matter devices using Access Control Lists (ACLs).

Matter Spec: Core 9.10

Defined in:

matter/cluster/access_control_cluster.cr

Constant Summary

ATTR_ACCESS_CONTROL_ENTRIES_PER_FABRIC = 4_u32
ATTR_ACL = 0_u32

Attributes

ATTR_EXTENSION = 1_u32
ATTR_SUBJECTS_PER_ACCESS_CONTROL_ENTRY = 2_u32
ATTR_TARGETS_PER_ACCESS_CONTROL_ENTRY = 3_u32
CLUSTER_ID = 31_u32
Log = ::Log.for("matter.cluster.access_control")

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from class Matter::Cluster::Base

apply_scene_extension_field_set(field_set : ScenesManagementCluster::ExtensionFieldSet) : Bool apply_scene_extension_field_set, attributes : Array(AttributeMetadata) attributes, cluster_id : DataType::ClusterId cluster_id, cluster_id=(cluster_id : DataType::ClusterId) cluster_id=, commands : Array(CommandMetadata) commands, data_version : UInt32 data_version, data_version=(data_version : UInt32) data_version=, endpoint_id : DataType::EndpointNumber endpoint_id, endpoint_id=(endpoint_id : DataType::EndpointNumber) endpoint_id=, events : Array(EventMetadata) events, get_attribute_metadata(attribute_id : UInt32) : AttributeMetadata | Nil get_attribute_metadata, get_command_metadata(command_id : UInt32) : CommandMetadata | Nil get_command_metadata, invoke_command(command_id : UInt32, fields : Bytes = Bytes.new(0), session_id : UInt64 | Nil = nil, is_case_session : Bool = false, fabric_index : UInt8 | Nil = nil) : InteractionModel::Status | CommandResponse invoke_command, name : String name, on_attribute_changed : Proc(UInt16, UInt32, UInt32, Nil) | Nil on_attribute_changed, on_attribute_changed=(on_attribute_changed : Proc(UInt16, UInt32, UInt32, Nil) | Nil) on_attribute_changed=, persistence_key : String persistence_key, read_attribute(attribute_id : UInt32, fabric_index : UInt8 | Nil = nil) : InteractionModel::Status | Bytes read_attribute, request_fabric_index : UInt8 | Nil request_fabric_index, request_fabric_index=(request_fabric_index : UInt8 | Nil) request_fabric_index=, request_is_case_session=(request_is_case_session : Bool) request_is_case_session=, request_is_case_session? : Bool request_is_case_session?, request_peer_node_id : UInt64 | Nil request_peer_node_id, request_peer_node_id=(request_peer_node_id : UInt64 | Nil) request_peer_node_id=, request_session_id : UInt64 | Nil request_session_id, request_session_id=(request_session_id : UInt64 | Nil) request_session_id=, restore_state(json : String) : Nil restore_state, save_state : String | Nil save_state, store_scene_extension_field_set : ScenesManagementCluster::ExtensionFieldSet | Nil store_scene_extension_field_set, write_attribute(attribute_id : UInt32, value : Bytes) : InteractionModel::Status write_attribute

Constructor methods inherited from class Matter::Cluster::Base

new(endpoint_id : DataType::EndpointNumber, cluster_id : DataType::ClusterId) new

Constructor Detail

def self.new(endpoint_id : DataType::EndpointNumber) #

[View source]

Class Method Detail

def self.cluster_id #

Access Control Cluster (0x001F)

Provides fine-grained access control for Matter devices using Access Control Lists (ACLs).

Matter Spec: Core 9.10


[View source]

Instance Method Detail

def access_control_entries_per_fabric : UInt16 #

[View source]
def access_control_entries_per_fabric=(access_control_entries_per_fabric : UInt16) #

[View source]
def acl : Array(AccessControlEntry) #

Attribute storage


[View source]
def acl=(acl : Array(AccessControlEntry)) #

Attribute storage


[View source]
def attributes : Array(AttributeMetadata) #
Description copied from class Matter::Cluster::Base

Get all attribute metadata


[View source]
def check_access(subject : UInt64, fabric_index : UInt8, privilege : AccessControlEntryPrivilege, cluster : UInt32 | Nil = nil, endpoint : UInt16 | Nil = nil, device_type : UInt32 | Nil = nil, auth_mode : AccessControlEntryAuthMode = AccessControlEntryAuthMode::CASE) : Bool #

Check if a subject has the required privilege Supports CaseAuthenticatedTag (CAT) subject matching per Matter spec


[View source]
def check_access(subject : UInt64, fabric_index : UInt8, privilege : Definitions::AccessControl::EntryPrivilege, cluster : UInt32 | Nil = nil, endpoint : UInt16 | Nil = nil, device_type : UInt32 | Nil = nil, auth_mode : Definitions::AccessControl::EntryAuthMode = Definitions::AccessControl::EntryAuthMode::Case) : Bool #

Convenience wrapper for the generated cluster metadata privilege enum.


[View source]
def commands : Array(CommandMetadata) #
Description copied from class Matter::Cluster::Base

Get all command metadata


[View source]
def extension : Array(ExtensionEntry) #

[View source]
def extension=(extension : Array(ExtensionEntry)) #

[View source]
def get_acl_for_fabric(fabric_index : UInt8) : Array(AccessControlEntry) #

Helper: Get ACL entries for a specific fabric


[View source]
def name : String #
Description copied from class Matter::Cluster::Base

Get cluster name


[View source]
def read_attribute(attribute_id : UInt32, fabric_index : UInt8 | Nil = nil) : InteractionModel::Status | Bytes #
Description copied from class Matter::Cluster::Base

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


[View source]
def remove_fabric_acl(fabric_index : UInt8) : Nil #

Helper: Remove all ACL entries for a fabric


[View source]
def restore_state(json : String) : Nil #
Description copied from class Matter::Cluster::Base

Restore cluster state from JSON. Override in subclasses that need to restore state. The json parameter is the string returned by save_state.


[View source]
def save_state : String | Nil #
Description copied from class Matter::Cluster::Base

Save cluster state to JSON for persistence. Override in subclasses that need to persist state (e.g., scenes, groups). Returns nil if no state needs to be persisted.


[View source]
def subjects_per_access_control_entry : UInt16 #

[View source]
def subjects_per_access_control_entry=(subjects_per_access_control_entry : UInt16) #

[View source]
def targets_per_access_control_entry : UInt16 #

[View source]
def targets_per_access_control_entry=(targets_per_access_control_entry : UInt16) #

[View source]
def write_attribute(attribute_id : UInt32, value : Bytes) : InteractionModel::Status #
Description copied from class Matter::Cluster::Base

Write an attribute value


[View source]