MatterEx.Protocol.MessageCodec.Header (matter_ex v0.3.1)

Copy Markdown View Source

Matter message header (plaintext).

Wire format (Matter spec section 4.4.1):

[msg_flags:8] [session_id:16LE] [sec_flags:8] [counter:32LE]
[source_node_id:64LE if S] [dest_node_id:64LE if DSIZ=01 | dest_group_id:16LE if DSIZ=10]

Summary

Types

t()

@type t() :: %MatterEx.Protocol.MessageCodec.Header{
  control_message: boolean(),
  dest_group_id: non_neg_integer() | nil,
  dest_node_id: non_neg_integer() | nil,
  message_counter: non_neg_integer(),
  privacy: boolean(),
  security_flags: byte(),
  session_id: non_neg_integer(),
  session_type: :unicast | :group,
  source_node_id: non_neg_integer() | nil,
  version: 0..15
}

Functions

decode(arg1)

@spec decode(binary()) :: {:ok, t(), binary()} | {:error, atom()}

encode(h)

@spec encode(t()) :: iodata()