MQTT Client#
Functions#
Allocate memory for the MQTT for a single client. Returns MQTT Client instance pointer, which is used for further MQTT client operations. This is non-blocking API.
Establish TCP connection with the given MQTT client port and establish MQTT protocol level connection. If Callback is provided it is non-blocking API otherwise it is blocking API.
Disconnect the client from MQTT broker. This is a blocking API.
Publish the given message on the given topic. This is a blocking API.
Subscribe on the specified topic given. If any other client posts any message on the same topic, that message is received, if MQTT client is subscribed to that topic. This is a non-blocking API.
Unsubscribe on the specified topic given. If unsubscribed, any messages on the topic is not received further This is a non-blocking API.
Wait for the MQTT messages to receive on the specific MQTT client. This is a non-blocking API.
Function Documentation#
rsi_mqtt_client_init#
rsi_mqtt_client_info_t* rsi_mqtt_client_init (int8_t * buffer, uint32_t length, int8_t * server_ip, uint32_t server_port, uint32_t client_port, uint16_t flags, uint16_t keep_alive_interval)
Allocate memory for the MQTT for a single client. Returns MQTT Client instance pointer, which is used for further MQTT client operations. This is non-blocking API.
[in] | buffer | - Buffer pointer to allocate memory for MQTT Client information | ||||
[in] | length | - Buffer length | ||||
[in] | server_ip | - IPv4 address of the MQTT broker | ||||
[in] | server_port | - MQTT broker port number | ||||
[in] | client_port | - MQTT client port number | ||||
[in] | flags | - Each bit has its own significance
^ 0 - IPv4 | ||||
[in] | keep_alive_interval | - MQTT client keep alive interval |
Returns
Positive Value - Success: Returns MQTT client information structure pointer
NULL - Failure
Note
Precondition - rsi_config_ipaddress() API needs to be called before this API
56
of file network/protocols/rsi_mqtt_client.c
rsi_mqtt_connect#
int32_t rsi_mqtt_connect (rsi_mqtt_client_info_t * rsi_mqtt_client, uint16_t flags, int8_t * client_id, int8_t * username, int8_t * password, void(*)(uint32_t sock_no, uint8_t *buffer, uint32_t length) callback)
Establish TCP connection with the given MQTT client port and establish MQTT protocol level connection. If Callback is provided it is non-blocking API otherwise it is blocking API.
[in] | rsi_mqtt_client | - Callback handler for asynchronous response. |
[out] | flags | - Socket descriptor number |
[out] | client_id | - Buffer |
[out] | username | - length of buffer |
[in] | password | - password for the login credentials of MQTT server |
N/A | callback |
Note
Need to register callback if ASYNC_MQTT is enable For Asynchronous
Returns
Zero - Success
Negative value - Failure
Note
Procedure for connecting MQTT over SSL :
Enable TCP_IP_FEAT_SSL in Opermode parameters as below
#define RSI_TCP_IP_FEATURE_BIT_MAP (TCP_IP_FEAT_DHCPV4_CLIENT | TCP_IP_FEAT_SSL | TCP_IP_FEAT_DNS_CLIENT)
Load the related SSL Certificates in the module using rsi_wlan_set_certificate() API.
159
of file network/protocols/rsi_mqtt_client.c
rsi_mqtt_disconnect#
int32_t rsi_mqtt_disconnect (rsi_mqtt_client_info_t * rsi_mqtt_client)
Disconnect the client from MQTT broker. This is a blocking API.
[in] | rsi_mqtt_client | - MQTT client information structure pointer that was returned in rsi_mqtt_client_init() API |
Returns
0 - Success
Negative value - Failure
Note
Precondition - rsi_mqtt_connect() API needs to be called before this API
249
of file network/protocols/rsi_mqtt_client.c
rsi_mqtt_publish#
int32_t rsi_mqtt_publish (rsi_mqtt_client_info_t * rsi_mqtt_client, int8_t * topic, MQTTMessage * publish_msg)
Publish the given message on the given topic. This is a blocking API.
[in] | rsi_mqtt_client | - MQTT client info structure that was returned in rsi_mqtt_client_init() API |
[in] | topic | - String of topic |
[in] | publish_msg | - Message to publish |
Returns
0 - Success
Negative value - Failure
Note
Precondition - rsi_mqtt_connect() API needs to be called before this API
278
of file network/protocols/rsi_mqtt_client.c
rsi_mqtt_subscribe#
int32_t rsi_mqtt_subscribe (rsi_mqtt_client_info_t * rsi_mqtt_client, uint8_t qos, int8_t * topic, void(*)(MessageData *md) call_back_handler_ptr)
Subscribe on the specified topic given. If any other client posts any message on the same topic, that message is received, if MQTT client is subscribed to that topic. This is a non-blocking API.
[in] | rsi_mqtt_client | - MQTT client structure info pointer that was returned in rsi_mqtt_client_init() API |
[in] | qos | - Quality of service of the message |
[in] | topic | - Topic string |
[in] | call_back_handler_ptr | - Callback pointer to call when a message is received from MQTT broker |
Returns
0 - Success
Negative value - Failure
Note
Precondition - rsi_mqtt_connect() API needs to be called before this API
309
of file network/protocols/rsi_mqtt_client.c
rsi_mqtt_unsubscribe#
int32_t rsi_mqtt_unsubscribe (rsi_mqtt_client_info_t * rsi_mqtt_client, int8_t * topic)
Unsubscribe on the specified topic given. If unsubscribed, any messages on the topic is not received further This is a non-blocking API.
[in] | rsi_mqtt_client | - MQTT client instance that was returned in rsi_mqtt_client_init() API |
[in] | topic | - Topic string |
Returns
0 - Success
Negative value - Failure
Note
Precondition - rsi_mqtt_connect() API needs to be called before this API
348
of file network/protocols/rsi_mqtt_client.c
rsi_mqtt_poll_for_recv_data#
int32_t rsi_mqtt_poll_for_recv_data (rsi_mqtt_client_info_t * rsi_mqtt_client, int time_out)
Wait for the MQTT messages to receive on the specific MQTT client. This is a non-blocking API.
[in] | rsi_mqtt_client | - MQTT client instance that was returned in rsi_mqtt_client_init() API |
[in] | time_out | - Time out in milliseconds. |
Returns
0 - Success
Negative value - Failure
Note
Precondition - rsi_mqtt_connect() API needs to be called before this API
372
of file network/protocols/rsi_mqtt_client.c