class Matter::Cluster::IcdManagementCluster

Overview

ICD Management Cluster (0x0046)

Minimal implementation for always-connected devices. This enables configuration of the ICD's behavior and ensures that listed clients can be notified when an intermittently connected device (ICD) is available for communication.

For always-on devices, this cluster returns sane defaults indicating the device is always available (not actually an ICD).

Matter Specification: Core 1.4 § 9.16 - ICD Management Cluster

Defined in:

matter/cluster/icd_management_cluster.cr

Constant Summary

ATTR_ACTIVE_MODE_DURATION = 1_u32
ATTR_ACTIVE_MODE_THRESHOLD = 2_u32
ATTR_ATTRIBUTE_LIST = 65531_u32
ATTR_CLIENTS_SUPPORTED_PER_FABRIC = 5_u32
ATTR_CLUSTER_REVISION = 65533_u32

Global attributes

ATTR_FEATURE_MAP = 65532_u32
ATTR_ICD_COUNTER = 4_u32
ATTR_IDLE_MODE_DURATION = 0_u32

Attribute IDs (mandatory base attributes)

ATTR_MAXIMUM_CHECK_IN_BACKOFF = 9_u32
ATTR_OPERATING_MODE = 8_u32

Optional attributes (with LongIdleTimeSupport feature)

ATTR_REGISTERED_CLIENTS = 3_u32

Optional attributes (with CheckInProtocolSupport feature)

ATTR_USER_ACTIVE_MODE_TRIGGER_HINT = 6_u32

Optional attributes (with UserActiveModeTrigger feature)

ATTR_USER_ACTIVE_MODE_TRIGGER_INSTRUCTION = 7_u32
CLUSTER_ID = 70_u32
CMD_REGISTER_CLIENT = 0_u32

Command IDs (optional - not implemented for minimal version)

CMD_STAY_ACTIVE_REQUEST = 3_u32
CMD_UNREGISTER_CLIENT = 2_u32
FEATURE_CHECK_IN_PROTOCOL_SUPPORT = 1_u32

Feature bits

FEATURE_DYNAMIC_SIT_LIT_SUPPORT = 8_u32
FEATURE_LONG_IDLE_TIME_SUPPORT = 4_u32
FEATURE_USER_ACTIVE_MODE_TRIGGER = 2_u32
Log = ::Log.for("matter.cluster.icd_management")

Constructors

Class Method Summary

Instance Method Summary

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

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=, read_attribute(attribute_id : UInt32, fabric_index : UInt8 | Nil = nil) : InteractionModel::Status | Bytes read_attribute, 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 = DataType::EndpointNumber.new(0_u16), idle_mode_duration : UInt32 = 1_u32, active_mode_duration : UInt32 = 300_u32, active_mode_threshold : UInt16 = 300_u16) #

[View source]

Class Method Detail

def self.cluster_id #

ICD Management Cluster (0x0046)

Minimal implementation for always-connected devices. This enables configuration of the ICD's behavior and ensures that listed clients can be notified when an intermittently connected device (ICD) is available for communication.

For always-on devices, this cluster returns sane defaults indicating the device is always available (not actually an ICD).

Matter Specification: Core 1.4 § 9.16 - ICD Management Cluster


[View source]

Instance Method Detail

def active_mode_duration : UInt32 #

[View source]
def active_mode_duration=(active_mode_duration : UInt32) #

[View source]
def active_mode_threshold : UInt16 #

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

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

Get all attribute metadata


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

Get all command metadata


[View source]
def idle_mode_duration : UInt32 #

Instance variables for base attributes For always-on devices, these represent "not really an ICD" defaults


[View source]
def idle_mode_duration=(idle_mode_duration : UInt32) #

Instance variables for base attributes For always-on devices, these represent "not really an ICD" defaults


[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 write_attribute(attribute_id : UInt32, value : Bytes) : InteractionModel::Status #
Description copied from class Matter::Cluster::Base

Write an attribute value


[View source]