File syn_mqtt.h¶
FileList > net > syn_mqtt.h
Go to the source code of this file
Lightweight MQTT 3.1.1 client.
#include "../common/syn_defs.h"#include "../port/syn_port_socket.h"#include "../pt/syn_pt.h"#include "../sched/syn_task.h"
Classes¶
| Type | Name |
|---|---|
| struct | SYN_Mqtt5_UserProp MQTT v5.0 Key-Value User Property. |
| struct | SYN_MqttClient MQTT client context structure. |
Public Types¶
| Type | Name |
|---|---|
| enum | SYN_MqttRxPhase Non-blocking packet reception states. |
| enum | SYN_MqttState MQTT client connection states. |
| enum | SYN_MqttVersion MQTT Protocol Version. |
Public Functions¶
| Type | Name |
|---|---|
| size_t | syn_mqtt5_encode_user_prop (const char * key, const char * val, uint8_t * buf, size_t max_buf_len) Encode an MQTT 5.0 User Property (Key-Value string pair). |
| bool | syn_mqtt_decode_varint (const uint8_t * buf, size_t buf_len, uint32_t * val, size_t * bytes_read) Decode a Variable Byte Integer (MQTT 3.1.1 & MQTT 5.0). |
| void | syn_mqtt_disconnect (SYN_MqttClient * client) Disconnect the MQTT client and close underlying TCP socket. |
| size_t | syn_mqtt_encode_varint (uint32_t val, uint8_t buf) Encode a Variable Byte Integer (MQTT 3.1.1 & MQTT 5.0). |
| SYN_Status | syn_mqtt_init (SYN_MqttClient * client, const char * host, uint16_t port, const char * client_id, const char * username, const char * password, uint16_t keep_alive_s, uint8_t * rx_buf, size_t rx_buf_size, uint8_t * tx_buf, size_t tx_buf_size) Initialize the MQTT client. |
| SYN_Status | syn_mqtt_ping (SYN_MqttClient * client) Transmit an explicit MQTT PINGREQ packet. |
| SYN_Status | syn_mqtt_publish (SYN_MqttClient * client, const char * topic, const void * payload, size_t len, uint8_t qos, bool retain) Publish a message to a topic. |
| SYN_Status | syn_mqtt_subscribe (SYN_MqttClient * client, const char * topic, uint8_t qos) Subscribe to a topic. |
| SYN_PT_Status | syn_mqtt_task (SYN_PT * pt, SYN_Task * task) Cooperative task for driving the MQTT client. |
Macros¶
Public Types Documentation¶
enum SYN_MqttRxPhase¶
Non-blocking packet reception states.
enum SYN_MqttRxPhase {
SYN_MQTT_RX_IDLE,
SYN_MQTT_RX_REMAINING_LEN,
SYN_MQTT_RX_PAYLOAD,
SYN_MQTT_RX_DISCARD
};
enum SYN_MqttState¶
MQTT client connection states.
enum SYN_MqttVersion¶
MQTT Protocol Version.
Public Functions Documentation¶
function syn_mqtt5_encode_user_prop¶
Encode an MQTT 5.0 User Property (Key-Value string pair).
size_t syn_mqtt5_encode_user_prop (
const char * key,
const char * val,
uint8_t * buf,
size_t max_buf_len
)
Parameters:
keyProperty key string.valProperty value string.buf[out] Output buffer.max_buf_lenCapacity of output buffer.
Returns:
Number of bytes written, or 0 on error/overflow.
function syn_mqtt_decode_varint¶
Decode a Variable Byte Integer (MQTT 3.1.1 & MQTT 5.0).
bool syn_mqtt_decode_varint (
const uint8_t * buf,
size_t buf_len,
uint32_t * val,
size_t * bytes_read
)
Parameters:
bufBuffer containing varint bytes.buf_lenAvailable bytes in buffer.val[out] Parsed integer value.bytes_read[out] Number of bytes consumed (1..4).
Returns:
true on success, false if incomplete or malformed (> 4 bytes).
function syn_mqtt_disconnect¶
Disconnect the MQTT client and close underlying TCP socket.
Sends an MQTT DISCONNECT packet if currently connected, then closes the socket and transitions client state to DISCONNECTED.
Parameters:
clientPointer to client context.
function syn_mqtt_encode_varint¶
Encode a Variable Byte Integer (MQTT 3.1.1 & MQTT 5.0).
Parameters:
valValue to encode (0..268435455).buf[out] Output buffer (must have at least 4 bytes capacity).
Returns:
Number of bytes written (1..4).
function syn_mqtt_init¶
Initialize the MQTT client.
SYN_Status syn_mqtt_init (
SYN_MqttClient * client,
const char * host,
uint16_t port,
const char * client_id,
const char * username,
const char * password,
uint16_t keep_alive_s,
uint8_t * rx_buf,
size_t rx_buf_size,
uint8_t * tx_buf,
size_t tx_buf_size
)
Configures broker destination, client ID, authentication credentials, keep-alive timing parameters, and network packet buffers.
Parameters:
clientPointer to client context.hostBroker network address string.portBroker port number.client_idMQTT client identity string.usernameAuthentication username (or NULL).passwordAuthentication password (or NULL).keep_alive_sKeep-alive timeout parameter in seconds.rx_bufReceive buffer storage.rx_buf_sizeReceive buffer capacity.tx_bufTransmit buffer storage.tx_buf_sizeTransmit buffer capacity.
Returns:
SYN_OK on successful configuration, or error parameter code.
function syn_mqtt_ping¶
Transmit an explicit MQTT PINGREQ packet.
Note: PINGREQ packets are sent automatically by syn_mqtt_task based on the configured keep_alive_s interval. This function allows manual pinging on demand.
Parameters:
clientPointer to client context.
Returns:
SYN_OK on success, SYN_ERROR if not connected or transmit failed.
function syn_mqtt_publish¶
Publish a message to a topic.
SYN_Status syn_mqtt_publish (
SYN_MqttClient * client,
const char * topic,
const void * payload,
size_t len,
uint8_t qos,
bool retain
)
Non-blocking publish command. For QoS 0, queued directly. For QoS 1, tracks acknowledgement state.
Parameters:
clientPointer to client context.topicTopic name to target.payloadData payload to send.lenPayload size in bytes.qosQuality of service level (0 or 1).retainRetain flag on broker.
Returns:
SYN_OK on queued, or error status if payload bounds exceeded.
function syn_mqtt_subscribe¶
Subscribe to a topic.
Formats and queues a subscription request for transmission.
Parameters:
clientPointer to client context.topicTopic filter string.qosRequested quality of service.
Returns:
SYN_OK on success.
function syn_mqtt_task¶
Cooperative task for driving the MQTT client.
Yields during connection, socket polling, keep-alive pinging, and packet parsing loops. Runs within the cooperative scheduler context.
Parameters:
ptCooperative protothread handle.taskCorresponding task control block.
Returns:
PT_WAITING or PT_EXITED status.
Macro Definition Documentation¶
define SYN_MQTT5_PROP_ASSIGNED_CLIENT_ID¶
Assigned Client Identifier
define SYN_MQTT5_PROP_AUTH_DATA¶
Authentication Data
define SYN_MQTT5_PROP_AUTH_METHOD¶
Authentication Method
define SYN_MQTT5_PROP_CONTENT_TYPE¶
Content Type
define SYN_MQTT5_PROP_CORRELATION_DATA¶
Correlation Data
define SYN_MQTT5_PROP_MAXIMUM_QOS¶
Maximum QoS
define SYN_MQTT5_PROP_MAX_PACKET_SIZE¶
Maximum Packet Size
define SYN_MQTT5_PROP_MESSAGE_EXPIRY_INTERVAL¶
Message Expiry Interval
define SYN_MQTT5_PROP_PAYLOAD_FORMAT_INDICATOR¶
Payload Format Indicator
define SYN_MQTT5_PROP_REASON_STRING¶
Reason String
define SYN_MQTT5_PROP_RECEIVE_MAXIMUM¶
Receive Maximum
define SYN_MQTT5_PROP_REQ_PROBLEM_INFO¶
Request Problem Information
define SYN_MQTT5_PROP_REQ_RESPONSE_INFO¶
Request Response Information
define SYN_MQTT5_PROP_RESPONSE_INFO¶
Response Information
define SYN_MQTT5_PROP_RESPONSE_TOPIC¶
Response Topic
define SYN_MQTT5_PROP_RETAIN_AVAILABLE¶
Retain Available
define SYN_MQTT5_PROP_SERVER_KEEP_ALIVE¶
Server Keep Alive
define SYN_MQTT5_PROP_SERVER_REFERENCE¶
Server Reference
define SYN_MQTT5_PROP_SESSION_EXPIRY_INTERVAL¶
Session Expiry Interval
define SYN_MQTT5_PROP_SHARED_SUB_AVAIL¶
Shared Subscription Available
define SYN_MQTT5_PROP_SUBSCRIPTION_IDENTIFIER¶
Subscription Identifier
define SYN_MQTT5_PROP_SUB_ID_AVAIL¶
Subscription Identifiers Available
define SYN_MQTT5_PROP_TOPIC_ALIAS¶
Topic Alias
define SYN_MQTT5_PROP_TOPIC_ALIAS_MAXIMUM¶
Topic Alias Maximum
define SYN_MQTT5_PROP_USER_PROPERTY¶
User Property
define SYN_MQTT5_PROP_WILDCARD_SUB_AVAIL¶
Wildcard Subscription Available
define SYN_MQTT5_PROP_WILL_DELAY_INTERVAL¶
Will Delay Interval
The documentation for this class was generated from the following file src/syntropic/net/syn_mqtt.h