class Matter::Cluster::GeneralCommissioningCluster

Overview

General Commissioning Cluster (0x0030)

Provides commands and attributes to support the device commissioning process. This includes commissioning window management, failsafe timer management, regulatory configuration, and commissioning completion.

Matter Core Spec §11.9 - General Commissioning Cluster

Defined in:

matter/cluster/general_commissioning_cluster.cr

Constant Summary

ATTR_BASIC_COMMISSIONING_INFO = 1_u32
ATTR_BREADCRUMB = 0_u32
ATTR_LOCATION_CAPABILITY = 3_u32
ATTR_REGULATORY_CONFIG = 2_u32
ATTR_SUPPORTS_CONCURRENT_CONNECTION = 4_u32
CLUSTER_ID = 48_u32
CMD_ARM_FAIL_SAFE = 0_u32
CMD_ARM_FAIL_SAFE_RESPONSE = 1_u32
CMD_COMMISSIONING_COMPLETE = 4_u32
CMD_COMMISSIONING_COMPLETE_RESPONSE = 5_u32
CMD_SET_REGULATORY_CONFIG = 2_u32
CMD_SET_REGULATORY_CONFIG_RESPONSE = 3_u32
Log = ::Log.for("matter.cluster.general_commissioning")

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)) : InteractionModel::Status | Bytes invoke_command, name : String name, read_attribute(attribute_id : UInt32) : 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)) #

[View source]

Class Method Detail

def self.cluster_id #

General Commissioning Cluster (0x0030)

Provides commands and attributes to support the device commissioning process. This includes commissioning window management, failsafe timer management, regulatory configuration, and commissioning completion.

Matter Core Spec §11.9 - General Commissioning Cluster


[View source]

Instance Method Detail

def accept_terms_conditions : Nil #

Accept Terms & Conditions (for TC feature)

This method is used when the Terms & Conditions feature is enabled to mark that the user has accepted the terms.


[View source]
def arm_fail_safe(expiry_seconds : UInt16) : Nil #

Simple arm failsafe method for tests (arms with default max cumulative)


[View source]
def arm_failsafe(request : ArmFailSafeRequest, session_fabric_index : UInt8 | Nil, is_pase_session : Bool) : ArmFailSafeResponse #

Handle ArmFailSafe command

Arms or re-arms the failsafe timer. The failsafe timer ensures that commissioning changes are rolled back if commissioning doesn't complete successfully.

@param request ArmFailSafe request with expiry length and breadcrumb @param session_fabric_index Fabric index of requesting session (nil for PASE) @param is_pase_session Whether this is a PASE session @return ArmFailSafe response with status


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

Get all attribute metadata


[View source]
def basic_commissioning_info : BasicCommissioningInfo #

Get basic commissioning info (for BasicCommissioningInfo attribute)


[View source]
def breadcrumb : UInt64 #

Breadcrumb attribute (0x0000) - progress tracking during commissioning


[View source]
def breadcrumb=(breadcrumb : UInt64) #

Breadcrumb attribute (0x0000) - progress tracking during commissioning


[View source]
def close_commissioning_window : Nil #

Close commissioning window


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

Get all command metadata


[View source]
def commissioning_complete(session_fabric_index : UInt8 | Nil, is_case_session : Bool) : CommissioningCompleteResponse #

Handle CommissioningComplete command

Signals that commissioning is complete. This validates that all required commissioning steps have been performed, then disarms the failsafe and persists the commissioned state.

@param session_fabric_index Fabric index of requesting session @param is_case_session Whether this is a CASE session (required) @return CommissioningComplete response with status


[View source]
def country_code : String #

Country code (stored for rollback purposes)


[View source]
def country_code=(country_code : String) #

Country code (stored for rollback purposes)


[View source]
def country_code_whitelist : Array(String) | Nil #

Country code whitelist (nil = all countries allowed)


[View source]
def country_code_whitelist=(country_code_whitelist : Array(String) | Nil) #

Country code whitelist (nil = all countries allowed)


[View source]
def disarm_fail_safe : Nil #

Disarm the failsafe


[View source]
def fail_safe_active : Bool #

Alias for backward compatibility


[View source]
def fail_safe_expiry_time : Time | Nil #

Get failsafe expiry time (when it will expire)


[View source]
def failsafe_armed? : Bool #

Check if failsafe is currently armed


[View source]
def failsafe_context : FailsafeContext | Nil #

Get current failsafe context (for testing/inspection)


[View source]
def is_fail_safe_expired? : Bool #

Check if failsafe is expired


[View source]
def location_capability : RegulatoryLocationType #

LocationCapability attribute (0x0003) - supported regulatory locations


[View source]
def location_capability=(location_capability : RegulatoryLocationType) #

LocationCapability attribute (0x0003) - supported regulatory locations


[View source]
def max_cumulative_failsafe_seconds : UInt16 #

BasicCommissioningInfo attribute (0x0001) Contains MaxCumulativeFailsafeSeconds and MaxNetworkCommissioningSeconds


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

BasicCommissioningInfo attribute (0x0001) Contains MaxCumulativeFailsafeSeconds and MaxNetworkCommissioningSeconds


[View source]
def max_network_commissioning_seconds : UInt16 #

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

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

Get cluster name


[View source]
def on_check_terms_conditions : Proc(Bool) | Nil #

Callback to check if Terms & Conditions have been accepted


[View source]
def on_check_terms_conditions=(on_check_terms_conditions : Proc(Bool) | Nil) #

Callback to check if Terms & Conditions have been accepted


[View source]
def on_clear_pase_sessions : Proc(Nil) | Nil #

Callback to clear all PASE sessions after successful commissioning


[View source]
def on_clear_pase_sessions=(on_clear_pase_sessions : Proc(Nil) | Nil) #

Callback to clear all PASE sessions after successful commissioning


[View source]
def on_persist_fabric_table : Proc(Nil) | Nil #

Callback to persist the fabric table after successful commissioning


[View source]
def on_persist_fabric_table=(on_persist_fabric_table : Proc(Nil) | Nil) #

Callback to persist the fabric table after successful commissioning


[View source]
def open_commissioning_window : Nil #

Open commissioning window (allows PASE sessions)


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

Read an attribute value


[View source]
def regulatory_config : RegulatoryLocationType #

RegulatoryConfig attribute (0x0002) - current regulatory location


[View source]
def regulatory_config=(regulatory_config : RegulatoryLocationType) #

RegulatoryConfig attribute (0x0002) - current regulatory location


[View source]
def restore_regulatory_config(location_type : UInt8, country_code : String) : Nil #

Restore regulatory config from snapshot (called during rollback)

This is called by FailsafeContext#rollback to restore the previous regulatory configuration when a failsafe expires.

@param location_type Previous regulatory location type value @param country_code Previous country code


[View source]
def set_regulatory_config(request : SetRegulatoryConfigRequest) : SetRegulatoryConfigResponse #

Handle SetRegulatoryConfig command

Sets the regulatory configuration (indoor/outdoor) and country code.

@param request SetRegulatoryConfig request @return SetRegulatoryConfig response with status


[View source]
def supports_concurrent_connection : Bool #

SupportsConcurrentConnection attribute (0x0004)


[View source]
def supports_concurrent_connection=(supports_concurrent_connection : Bool) #

SupportsConcurrentConnection attribute (0x0004)


[View source]
def terms_conditions_accepted? : Bool #

Check if Terms & Conditions are accepted


[View source]
def terms_conditions_required : Bool #

Terms & Conditions feature support


[View source]
def terms_conditions_required=(terms_conditions_required : Bool) #

Terms & Conditions feature support


[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]