Skip to main content

Module mqttsn

Module mqttsn 

Source
Expand description

MQTT-SN (MQTT for Sensor Networks) layer implementation.

Implements MQTT-SN v1.2 packet parsing as a zero-copy view into a packet buffer.

§Header Format

MQTT-SN uses a variable-length header:

Short form (length 2..=255):
  Byte 0:    Length (1 byte)
  Byte 1:    Message Type (1 byte)
  Byte 2+:   Message body (variable)

Extended form (length 256..=65535):
  Byte 0:    0x01 (marker)
  Byte 1-2:  Length (2 bytes, big-endian)
  Byte 3:    Message Type (1 byte)
  Byte 4+:   Message body (variable)

§Flags Byte (used in CONNECT, PUBLISH, SUBSCRIBE, etc.)

Bit:     7     6-5    4      3     2         1-0
Field:   DUP   QoS    RETAIN WILL  CleanSess TID_TYPE

§Message Types

ValueName
0x00ADVERTISE
0x01SEARCHGW
0x02GWINFO
0x04CONNECT
0x05CONNACK
0x06WILLTOPICREQ
0x07WILLTOPIC
0x08WILLMSGREQ
0x09WILLMSG
0x0AREGISTER
0x0BREGACK
0x0CPUBLISH
0x0DPUBACK
0x0EPUBCOMP
0x0FPUBREC
0x10PUBREL
0x12SUBSCRIBE
0x13SUBACK
0x14UNSUBSCRIBE
0x15UNSUBACK
0x16PINGREQ
0x17PINGRESP
0x18DISCONNECT
0x1AWILLTOPICUPD
0x1BWILLTOPICRESP
0x1CWILLMSGUPD
0x1DWILLMSGRESP
0xFEENCAPS_MSG

Re-exports§

pub use builder::MqttSnBuilder;

Modules§

builder
MQTT-SN packet builder.

Structs§

MqttSnLayer
MQTT-SN layer – a zero-copy view into a packet buffer.

Constants§

ADVERTISE
CONNACK
CONNECT
DISCONNECT
ENCAPS_MSG
GWINFO
MQTTSN_MIN_HEADER_LEN
Minimum MQTT-SN header: 1 byte length + 1 byte type.
MQTTSN_PORT
Default MQTT-SN UDP port.
PINGREQ
PINGRESP
PUBACK
PUBCOMP
PUBLISH
PUBREC
PUBREL
RC_ACCEPTED
RC_REJ_CONGESTION
RC_REJ_INVALID_TID
RC_REJ_NOT_SUPPORTED
REGACK
REGISTER
SEARCHGW
SUBACK
SUBSCRIBE
TID_NORMAL
TID_PREDEF
TID_SHORT
UNSUBACK
UNSUBSCRIBE
WILLMSG
WILLMSGREQ
WILLMSGRESP
WILLMSGUPD
WILLTOPIC
WILLTOPICREQ
WILLTOPICRESP
WILLTOPICUPD

Statics§

MQTTSN_FIELD_NAMES
Field names for the MQTT-SN layer.

Functions§

decode_mqttsn_length
Decode the MQTT-SN variable length field.
is_mqttsn_payload
Check if a UDP payload looks like an MQTT-SN packet.
message_type_name
Get the human-readable name for a message type.
return_code_name
Get the human-readable name for a return code.