class

Matter::Transport::UDPTransport

Inherits Reference < Object

UDP transport layer for Matter protocol

Handles:

  • Sending and receiving Matter messages over UDP
  • Message deduplication
  • Automatic retransmission with exponential backoff
  • Exchange management (request/response correlation)

Uses a single dual-stack IPv6 socket that accepts both IPv4 and IPv6 connections.

Constants

Log = ::Log.for("matter.transport.udp")
MATTER_PORT = 5540

Matter default port

Constructors

new(port : Int32 = MATTER_PORT)
Source

Instance methods

close

Close transport and release resources

Source
exchange_manager
Source
message_counter
Source
on_message

Callback for received messages Signature: (message : Codec::MessageCodec::Message, peer_address : Socket::IPAddress) -> Nil

Source
on_message=(on_message : Proc(Codec::MessageCodec::Message, Socket::IPAddress, Nil) | Nil)

Callback for received messages Signature: (message : Codec::MessageCodec::Message, peer_address : Socket::IPAddress) -> Nil

Source
port
Source
process_retransmissions

Process retransmissions Should be called periodically (e.g., every 50ms)

Source
send_message(message : Codec::MessageCodec::Message, peer_address : Socket::IPAddress, exchange : Exchange | Nil = nil) : Nil

Send a Matter message

Source
send_raw(data : Bytes | Slice(UInt8), peer_address : Socket::IPAddress) : Nil

Send raw packet (for testing)

Source
send_request(protocol_id : UInt16, message_type : UInt8, payload : Bytes | Slice(UInt8), session_id : UInt16, peer_address : Socket::IPAddress, peer_node_id : DataType::NodeId | Nil = nil, source_node_id : DataType::NodeId | Nil = nil, requires_ack : Bool = true) : Exchange

Create and send a message on a new exchange

Source
socket
Source
start

Start receiving messages in background

Source
stop

Stop receiving messages

Source