class Matter::Transport::UDPTransport

Overview

UDP transport layer for Matter protocol

Handles:

Defined in:

matter/transport/udp_transport.cr

Constant Summary

MATTER_PORT = 5540

Matter default port

Constructors

Instance Method Summary

Constructor Detail

def self.new(port : Int32 = MATTER_PORT, interface : String = "0.0.0.0") #

[View source]

Instance Method Detail

def close : Nil #

Close transport and release resources


[View source]
def exchange_manager : ExchangeManager #

[View source]
def message_counter : MessageCounter #

[View source]
def on_message : Proc(Codec::MessageCodec::Message, Socket::IPAddress, Nil) | Nil #

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


[View source]
def 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


[View source]
def port : Int32 #

[View source]
def process_retransmissions : Nil #

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


[View source]
def send_message(message : Codec::MessageCodec::Message, peer_address : Socket::IPAddress, exchange : Exchange | Nil = nil) : Nil #

Send a Matter message


[View source]
def send_raw(data : Bytes | Slice(UInt8), peer_address : Socket::IPAddress) : Nil #

Send raw packet (for testing)


[View source]
def 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


[View source]
def socket : UDPSocket #

[View source]
def start : Nil #

Start receiving messages in background


[View source]
def stop : Nil #

Stop receiving messages


[View source]