class Matter::CommissioningWindow

Overview

CommissioningWindow manages the state of the commissioning window

The commissioning window is a time-limited period during which a device accepts incoming PASE (Password-Authenticated Session Establishment) sessions for onboarding new administrators or updating credentials.

There are two types of commissioning windows:

Matter Core Spec §5.5 - Commissioning Flows Matter Core Spec §11.19 - Administrator Commissioning Cluster

Defined in:

matter/commissioning_window.cr

Constant Summary

Log = ::Log.for("matter.commissioning_window")

Constructors

Instance Method Summary

Constructor Detail

def self.new #

[View source]

Instance Method Detail

def admin_fabric_index : UInt8 | Nil #

Fabric index of the administrator who opened the window


[View source]
def admin_fabric_index=(admin_fabric_index : UInt8 | Nil) #

Fabric index of the administrator who opened the window


[View source]
def admin_vendor_id : UInt16 | Nil #

Vendor ID of the administrator who opened the window


[View source]
def admin_vendor_id=(admin_vendor_id : UInt16 | Nil) #

Vendor ID of the administrator who opened the window


[View source]
def check_timeout : Nil #

Handle window timeout

This should be called periodically by a timer or when checking window status. If the window has expired, it closes the window and invokes the timeout callback.


[View source]
def close : Nil #

Close the commissioning window

This method is called:

  • When commissioning completes successfully
  • When RevokeCommissioning command is received
  • During failsafe rollback
  • When the window times out

[View source]
def closed? : Bool #

Check if window is closed


[View source]
def discriminator : UInt16 | Nil #

Discriminator used for discovery (12-bit value)


[View source]
def discriminator=(discriminator : UInt16 | Nil) #

Discriminator used for discovery (12-bit value)


[View source]
def expired? : Bool #

Check if window has expired


[View source]
def expires_at : Time | Nil #

Timeout expiry time


[View source]
def expires_at=(expires_at : Time | Nil) #

Timeout expiry time


[View source]
def open(status : Status, admin_fabric_index : UInt8 | Nil, admin_vendor_id : UInt16 | Nil, discriminator : UInt16, timeout_seconds : UInt16, timeout_callback : Proc(Nil) | Nil = nil) : Nil #

Open a commissioning window

@param status Window status (Basic or Enhanced) @param admin_fabric_index Fabric index of administrator opening window @param admin_vendor_id Vendor ID of administrator @param discriminator Discriminator for DNS-SD advertising @param timeout_seconds Window timeout in seconds @param timeout_callback Callback invoked when window times out


[View source]
def open? : Bool #

Check if window is open


[View source]
def statistics : Hash(String, String | Bool | Int32 | UInt8 | UInt16 | Nil) #

Get window statistics


[View source]
def status : Status #

Current window status


[View source]
def status=(status : Status) #

Current window status


[View source]
def time_remaining : Time::Span | Nil #

Get time remaining on window


[View source]