File syn_mqttsn.h¶
FileList > proto > syn_mqttsn.h
Go to the source code of this file
MQTT for Sensor Networks (MQTT-SN v1.2) Protocol Client Engine. More...
#include "../common/syn_defs.h"#include "../net/syn_transport.h"#include "../pt/syn_pt.h"#include "../sched/syn_sched.h"#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_MQTTSN_Client MQTT-SN Client instance structure. |
| struct | SYN_MQTTSN_Config MQTT-SN client configuration descriptor. |
| struct | SYN_MQTTSN_TopicEntry Registered topic entry mapping string name to 16-bit Topic ID. |
Public Types¶
| Type | Name |
|---|---|
| typedef void(* | SYN_MQTTSN_MessageCb Incoming publish message handler callback. |
| enum | SYN_MQTTSN_State MQTT-SN client connection state. |
Public Functions¶
| Type | Name |
|---|---|
| SYN_Status | syn_mqttsn_client_connect (SYN_MQTTSN_Client * client) Send CONNECT packet to MQTT-SN gateway. |
| SYN_Status | syn_mqttsn_client_disconnect (SYN_MQTTSN_Client * client) Disconnect client from gateway. |
| SYN_Status | syn_mqttsn_client_init (SYN_MQTTSN_Client * client, const SYN_MQTTSN_Config * cfg) Initialize MQTT-SN client. |
| SYN_PT_Status | syn_mqttsn_client_pt (SYN_PT * pt, SYN_Task * task) Protothread continuation function for syn_sched . |
| SYN_Status | syn_mqttsn_client_publish (SYN_MQTTSN_Client * client, uint16_t topic_id, int8_t qos, bool retain, const uint8_t * payload, size_t len) Publish data payload using a registered 16-bit Topic ID. |
| SYN_Status | syn_mqttsn_client_publish_predefined (SYN_MQTTSN_Client * client, uint16_t predef_id, int8_t qos, bool retain, const uint8_t * payload, size_t len) Publish data payload using a predefined 16-bit Topic ID. |
| SYN_Status | syn_mqttsn_client_publish_short (SYN_MQTTSN_Client * client, const char short_topic, int8_t qos, bool retain, const uint8_t * payload, size_t len) Publish data payload using a short 2-character topic name. |
| SYN_Status | syn_mqttsn_client_register_topic (SYN_MQTTSN_Client * client, const char * topic_name, uint16_t * out_msg_id) Register a topic name with gateway to obtain a 16-bit Topic ID. |
| SYN_Status | syn_mqttsn_client_searchgw (SYN_MQTTSN_Client * client, uint8_t radius) Broadcast SEARCHGW to discover active MQTT-SN gateways. |
| SYN_Status | syn_mqttsn_client_sleep (SYN_MQTTSN_Client * client, uint16_t sleep_duration_s) Put client into low-power SLEEP state with specified sleep duration. |
| SYN_Status | syn_mqttsn_client_step (SYN_MQTTSN_Client * client, uint32_t now_ms) Non-blocking poll step processing received frames and keep-alive ping timers. |
| SYN_Status | syn_mqttsn_client_subscribe (SYN_MQTTSN_Client * client, const char * topic_name, uint16_t predef_id, int8_t qos) Subscribe to a topic name or predefined ID. |
| SYN_Status | syn_mqttsn_client_unsubscribe (SYN_MQTTSN_Client * client, const char * topic_name, uint16_t predef_id) Unsubscribe from a topic. |
| SYN_Status | syn_mqttsn_client_wake (SYN_MQTTSN_Client * client) Wake up from sleep to flush messages or return to connected state. |
Macros¶
Detailed Description¶
Implements a zero-heap, deterministic MQTT-SN v1.2 client for low-power wireless networks:
* Operates over datagram transports (UDP, Zigbee, 802.15.4, Sub-GHz, BLE, RS485).
* Gateway Discovery (SEARCHGW, GWINFO, ADVERTISE).
* Short (2-char), Predefined, and Dynamically Registered Topic IDs (REGISTER, REGACK).
* Publish and Subscribe (QoS 0, QoS 1, QoS -1) with payload framing.
* Low-power Sleep/Awake mode transitions (SLEEP, AWAKE queue flush).
* Non-blocking poll step and cooperative protothread continuation for syn_sched.
Public Types Documentation¶
typedef SYN_MQTTSN_MessageCb¶
Incoming publish message handler callback.
typedef void(* SYN_MQTTSN_MessageCb) (struct SYN_MQTTSN_Client *client, uint16_t topic_id, uint8_t topic_type, const uint8_t *payload, size_t len, void *user_data);
Parameters:
clientClient instance.topic_id16-bit Topic ID or 2-char short topic.topic_typeType of topic (normal, predef, short).payloadPayload data pointer.lenPayload length in bytes.user_dataUser context pointer.
enum SYN_MQTTSN_State¶
MQTT-SN client connection state.
enum SYN_MQTTSN_State {
SYN_MQTTSN_STATE_DISCONNECTED = 0,
SYN_MQTTSN_STATE_SEARCHING_GW,
SYN_MQTTSN_STATE_CONNECTING,
SYN_MQTTSN_STATE_CONNECTED,
SYN_MQTTSN_STATE_ASLEEP,
SYN_MQTTSN_STATE_AWAKE
};
Public Functions Documentation¶
function syn_mqttsn_client_connect¶
Send CONNECT packet to MQTT-SN gateway.
Parameters:
clientClient instance.
Returns:
SYN_OK on success.
function syn_mqttsn_client_disconnect¶
Disconnect client from gateway.
Parameters:
clientClient instance.
Returns:
SYN_OK on success.
function syn_mqttsn_client_init¶
Initialize MQTT-SN client.
Parameters:
clientClient instance pointer.cfgConfiguration descriptor.
Returns:
SYN_OK on success, SYN_INVALID_PARAM on invalid argument.
function syn_mqttsn_client_pt¶
Protothread continuation function for syn_sched .
Parameters:
ptProtothread continuation structure.taskTask handle containing SYN_MQTTSN_Client in user_data.
Returns:
SYN_PT_Status continuation status.
function syn_mqttsn_client_publish¶
Publish data payload using a registered 16-bit Topic ID.
SYN_Status syn_mqttsn_client_publish (
SYN_MQTTSN_Client * client,
uint16_t topic_id,
int8_t qos,
bool retain,
const uint8_t * payload,
size_t len
)
Parameters:
clientClient instance.topic_id16-bit Topic ID.qosQuality of Service (0, 1, or -1).retainRetain flag.payloadPayload buffer.lenPayload length.
Returns:
SYN_OK on success.
function syn_mqttsn_client_publish_predefined¶
Publish data payload using a predefined 16-bit Topic ID.
SYN_Status syn_mqttsn_client_publish_predefined (
SYN_MQTTSN_Client * client,
uint16_t predef_id,
int8_t qos,
bool retain,
const uint8_t * payload,
size_t len
)
Parameters:
clientClient instance.predef_idPredefined 16-bit Topic ID.qosQuality of Service (0, 1, or -1).retainRetain flag.payloadPayload buffer.lenPayload length.
Returns:
SYN_OK on success.
function syn_mqttsn_client_publish_short¶
Publish data payload using a short 2-character topic name.
SYN_Status syn_mqttsn_client_publish_short (
SYN_MQTTSN_Client * client,
const char short_topic,
int8_t qos,
bool retain,
const uint8_t * payload,
size_t len
)
Parameters:
clientClient instance.short_topic2-character topic string.qosQuality of Service (0, 1, or -1).retainRetain flag.payloadPayload buffer.lenPayload length.
Returns:
SYN_OK on success.
function syn_mqttsn_client_register_topic¶
Register a topic name with gateway to obtain a 16-bit Topic ID.
SYN_Status syn_mqttsn_client_register_topic (
SYN_MQTTSN_Client * client,
const char * topic_name,
uint16_t * out_msg_id
)
Parameters:
clientClient instance.topic_nameString topic name.out_msg_idOptional pointer to receive allocated MsgId.
Returns:
SYN_OK on success.
function syn_mqttsn_client_searchgw¶
Broadcast SEARCHGW to discover active MQTT-SN gateways.
Parameters:
clientClient instance.radiusSearch radius hop count.
Returns:
SYN_OK on success.
function syn_mqttsn_client_sleep¶
Put client into low-power SLEEP state with specified sleep duration.
Parameters:
clientClient instance.sleep_duration_sSleep duration in seconds.
Returns:
SYN_OK on success.
function syn_mqttsn_client_step¶
Non-blocking poll step processing received frames and keep-alive ping timers.
Parameters:
clientClient instance.now_msCurrent timestamp in milliseconds.
Returns:
SYN_OK on success.
function syn_mqttsn_client_subscribe¶
Subscribe to a topic name or predefined ID.
SYN_Status syn_mqttsn_client_subscribe (
SYN_MQTTSN_Client * client,
const char * topic_name,
uint16_t predef_id,
int8_t qos
)
Parameters:
clientClient instance.topic_nameTopic name string (or NULL if subscribing by predef_id).predef_idPredefined Topic ID (if topic_name is NULL).qosRequested QoS level.
Returns:
SYN_OK on success.
function syn_mqttsn_client_unsubscribe¶
Unsubscribe from a topic.
SYN_Status syn_mqttsn_client_unsubscribe (
SYN_MQTTSN_Client * client,
const char * topic_name,
uint16_t predef_id
)
Parameters:
clientClient instance.topic_nameTopic name string.predef_idPredefined Topic ID.
Returns:
SYN_OK on success.
function syn_mqttsn_client_wake¶
Wake up from sleep to flush messages or return to connected state.
Parameters:
clientClient instance.
Returns:
SYN_OK on success.
Macro Definition Documentation¶
define SYN_MQTTSN_DEFAULT_DURATION_S¶
Default Keep-Alive duration in seconds
define SYN_MQTTSN_FLAG_CLEAN_SESSION¶
Clean session flag
define SYN_MQTTSN_FLAG_DUP¶
Duplicate delivery flag
define SYN_MQTTSN_FLAG_QOS_0¶
QoS level 0
define SYN_MQTTSN_FLAG_QOS_1¶
QoS level 1
define SYN_MQTTSN_FLAG_QOS_2¶
QoS level 2
define SYN_MQTTSN_FLAG_QOS_MASK¶
QoS mask
define SYN_MQTTSN_FLAG_QOS_NEG1¶
QoS level -1 (transparent)
define SYN_MQTTSN_FLAG_RETAIN¶
Retain flag
define SYN_MQTTSN_FLAG_TOPIC_MASK¶
Topic ID type mask
define SYN_MQTTSN_FLAG_TOPIC_NORMAL¶
Topic ID type: Normal registered ID
define SYN_MQTTSN_FLAG_TOPIC_PREDEF¶
Topic ID type: Predefined 16-bit ID
define SYN_MQTTSN_FLAG_TOPIC_SHORT¶
Topic ID type: Short 2-char string
define SYN_MQTTSN_FLAG_WILL¶
Will flag
define SYN_MQTTSN_MAX_CLIENT_ID¶
Max Client Identifier string length
define SYN_MQTTSN_MAX_REGISTRATIONS¶
Max tracked registered topics
define SYN_MQTTSN_MAX_TOPIC_NAME¶
Max Topic name string length
define SYN_MQTTSN_MSG_ADVERTISE¶
Gateway advertise broadcast
define SYN_MQTTSN_MSG_CONNACK¶
Connect acknowledgment
define SYN_MQTTSN_MSG_CONNECT¶
Connect request
define SYN_MQTTSN_MSG_DISCONNECT¶
Disconnect / sleep command
define SYN_MQTTSN_MSG_GWINFO¶
Gateway information response
define SYN_MQTTSN_MSG_PINGREQ¶
Ping request / wake ping
define SYN_MQTTSN_MSG_PINGRESP¶
Ping response
define SYN_MQTTSN_MSG_PUBACK¶
Publish acknowledgment
define SYN_MQTTSN_MSG_PUBCOMP¶
Publish complete (QoS 2)
define SYN_MQTTSN_MSG_PUBLISH¶
Publish message
define SYN_MQTTSN_MSG_PUBREC¶
Publish received (QoS 2)
define SYN_MQTTSN_MSG_PUBREL¶
Publish release (QoS 2)
define SYN_MQTTSN_MSG_REGACK¶
Topic registration acknowledgment
define SYN_MQTTSN_MSG_REGISTER¶
Topic registration request
define SYN_MQTTSN_MSG_SEARCHGW¶
Client search gateway broadcast
define SYN_MQTTSN_MSG_SUBACK¶
Subscribe acknowledgment
define SYN_MQTTSN_MSG_SUBSCRIBE¶
Subscribe request
define SYN_MQTTSN_MSG_UNSUBACK¶
Unsubscribe acknowledgment
define SYN_MQTTSN_MSG_UNSUBSCRIBE¶
Unsubscribe request
define SYN_MQTTSN_MSG_WILLMSG¶
Will message payload
define SYN_MQTTSN_MSG_WILLMSGREQ¶
Will message request
define SYN_MQTTSN_MSG_WILLMSGRESP¶
Will message update response
define SYN_MQTTSN_MSG_WILLMSGUPD¶
Will message update
define SYN_MQTTSN_MSG_WILLTOPIC¶
Will topic specification
define SYN_MQTTSN_MSG_WILLTOPICREQ¶
Will topic request
define SYN_MQTTSN_MSG_WILLTOPICRESP¶
Will topic update response
define SYN_MQTTSN_MSG_WILLTOPICUPD¶
Will topic update
define SYN_MQTTSN_PROTOCOL_ID¶
MQTT-SN Protocol ID v1.2
define SYN_MQTTSN_RC_ACCEPTED¶
Request accepted
define SYN_MQTTSN_RC_REJ_CONGESTION¶
Rejected: Congestion
define SYN_MQTTSN_RC_REJ_INVALID_TOPIC_ID¶
Rejected: Invalid Topic ID
define SYN_MQTTSN_RC_REJ_NOT_SUPPORTED¶
Rejected: Not supported
The documentation for this class was generated from the following file src/syntropic/proto/syn_mqttsn.h