2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  file  is  subject  to  the  terms  and  conditions  defined  in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  file  ' LICENSE ' ,  which  is  part  of  this  source  code  package . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Tuan  PM  < tuanpm  at  live  dot  com > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef _MQTT_CLIENT_H_ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define _MQTT_CLIENT_H_ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdint.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdbool.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "esp_err.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "mqtt_config.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __cplusplus 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								extern  " C "  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  struct  esp_mqtt_client  * esp_mqtt_client_handle_t ;  
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-26 23:22:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  MQTT  event  types . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  User  event  handler  receives  context  data  in  ` esp_mqtt_event_t `  structure  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   -  ` user_context `  -  user  data  from  ` esp_mqtt_client_config_t ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   -  ` client `  -  mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *   -  various  other  data  depending  on  event  type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								typedef  enum  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_EVENT_ERROR  =  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-26 23:22:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    MQTT_EVENT_CONNECTED ,           /*!< connected event, additional context: session_present flag */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_EVENT_DISCONNECTED ,        /*!< disconnected event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_EVENT_SUBSCRIBED ,          /*!< subscribed event, additional context: msg_id */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_EVENT_UNSUBSCRIBED ,        /*!< unsubscribed event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_EVENT_PUBLISHED ,           /*!< published event, additional context:  msg_id */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_EVENT_DATA ,                /*!< data event, additional context:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        -  msg_id                message  id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        -  topic                 pointer  to  the  received  topic 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        -  topic_len             length  of  the  topic 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        -  data                  pointer  to  the  received  data 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        -  data_len              length  of  the  data  for  this  event 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        -  current_data_offset   offset  of  the  current  data  for  this  event 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        -  total_data_len        total  length  of  the  data  received 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                        Note :  Multiple  MQTT_EVENT_DATA  could  be  fired  for  one  message ,  if  it  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        longer  than  internal  buffer .  In  that  case  only  first  event  contains  topic 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        pointer  and  length ,  other  contain  data  only  with  current  data  length 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        and  current  data  offset  updating . 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-26 23:22:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                         */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-14 16:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    MQTT_EVENT_BEFORE_CONNECT ,      /*!< The event occurs before connecting */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  esp_mqtt_event_id_t ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  enum  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_TRANSPORT_UNKNOWN  =  0x0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_TRANSPORT_OVER_TCP ,       /*!< MQTT over TCP, using scheme: ``mqtt`` */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_TRANSPORT_OVER_SSL ,       /*!< MQTT over SSL, using scheme: ``mqtts`` */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_TRANSPORT_OVER_WS ,        /*!< MQTT over Websocket, using scheme:: ``ws`` */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    MQTT_TRANSPORT_OVER_WSS        /*!< MQTT over Websocket Secure, using scheme: ``wss`` */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  esp_mqtt_transport_t ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MQTT  event  configuration  structure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    esp_mqtt_event_id_t  event_id ;        /*!< MQTT event type */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    esp_mqtt_client_handle_t  client ;     /*!< MQTT client handle for this event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void  * user_context ;                  /*!< User context passed from MQTT client config */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * data ;                          /*!< Data asociated with this event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  data_len ;                        /*!< Lenght of the data for this event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  total_data_len ;                  /*!< Total length of the data (longer data are supplied with multiple events) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  current_data_offset ;             /*!< Actual offset for the data asociated with this event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * topic ;                         /*!< Topic asociated with this event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  topic_len ;                       /*!< Length of the topic for this event asociated with this event */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  msg_id ;                          /*!< MQTT messaged id of message */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-26 23:22:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  session_present ;                 /*!< MQTT session_present flag for connection event */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  esp_mqtt_event_t ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  esp_mqtt_event_t  * esp_mqtt_event_handle_t ;  
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  esp_err_t  ( *  mqtt_event_callback_t ) ( esp_mqtt_event_handle_t  event ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MQTT  client  configuration  structure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mqtt_event_callback_t  event_handle ;      /*!< handle for MQTT events */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * host ;                        /*!< MQTT server domain (ipv4 as string) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * uri ;                         /*!< Complete MQTT broker URI */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    uint32_t  port ;                           /*!< MQTT server port */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * client_id ;                   /*!< default client id is ``ESP32_%CHIPID%`` where %CHIPID% are last 3 bytes of MAC address in hex format */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * username ;                    /*!< MQTT username */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * password ;                    /*!< MQTT password */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * lwt_topic ;                   /*!< LWT (Last Will and Testament) message topic (NULL by default) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * lwt_msg ;                     /*!< LWT message (NULL by default) */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  lwt_qos ;                             /*!< LWT message qos */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  lwt_retain ;                          /*!< LWT retained message flag */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  lwt_msg_len ;                         /*!< LWT message length */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  disable_clean_session ;               /*!< mqtt clean session, default clean_session is true */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  keepalive ;                           /*!< mqtt keepalive, default is 120 seconds */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool  disable_auto_reconnect ;             /*!< this mqtt client will reconnect to server (when errors/disconnect). Set disable_auto_reconnect=true to disable */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void  * user_context ;                      /*!< pass user context to this option, then can receive that context in ``event->user_context`` */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  task_prio ;                           /*!< MQTT task priority, default is 5, can be changed in ``make menuconfig`` */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  task_stack ;                          /*!< MQTT task stack size, default is 6144 bytes, can be changed in ``make menuconfig`` */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  buffer_size ;                         /*!< size of MQTT send/receive buffer, default is 1024 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-26 23:22:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  char  * cert_pem ;                    /*!< Pointer to certificate data in PEM format for server verify (with SSL), default is NULL, not required to verify the server */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * client_cert_pem ;             /*!< Pointer to certificate data in PEM format for SSL mutual authentication, default is NULL, not required if mutual authentication is not needed. If it is not NULL, also `client_key_pem` has to be provided. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * client_key_pem ;              /*!< Pointer to private key data in PEM format for SSL mutual authentication, default is NULL, not required if mutual authentication is not needed. If it is not NULL, also `client_cert_pem` has to be provided. */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    esp_mqtt_transport_t  transport ;          /*!< overrides URI transport */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-14 16:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  refresh_connection_after_ms ;         /*!< Refresh connection after this value (in milliseconds) */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  esp_mqtt_client_config_t ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Creates  mqtt  client  handle  based  on  the  configuration 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  config     mqtt  configuration  structure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  mqtt_client_handle  if  successfully  created ,  NULL  on  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								esp_mqtt_client_handle_t  esp_mqtt_client_init ( const  esp_mqtt_client_config_t  * config ) ;  
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Sets  mqtt  connection  URI .  This  API  is  usually  used  to  overrides  the  URI 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  configured  in  esp_mqtt_client_init 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  hanlde 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  uri 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  ESP_FAIL  if  URI  parse  error ,  ESP_OK  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								esp_err_t  esp_mqtt_client_set_uri ( esp_mqtt_client_handle_t  client ,  const  char  * uri ) ;  
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Starts  mqtt  client  with  already  created  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  ESP_OK  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          ESP_ERR_INVALID_ARG  on  wrong  initialization 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          ESP_FAIL  on  other  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								esp_err_t  esp_mqtt_client_start ( esp_mqtt_client_handle_t  client ) ;  
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  This  api  is  typically  used  to  force  reconnection  upon  a  specific  event 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  ESP_OK  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          ESP_FAIL  if  client  is  in  invalid  state 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								esp_err_t  esp_mqtt_client_reconnect ( esp_mqtt_client_handle_t  client ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Stops  mqtt  client  tasks 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  ESP_OK  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          ESP_FAIL  if  client  is  in  invalid  state 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								esp_err_t  esp_mqtt_client_stop ( esp_mqtt_client_handle_t  client ) ;  
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Subscribe  the  client  to  defined  topic  with  defined  qos 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Notes : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  Client  must  be  connected  to  send  subscribe  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  This  API  is  could  be  executed  from  a  user  task  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  from  a  mqtt  event  callback  i . e .  internal  mqtt  task 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  ( API  is  protected  by  internal  mutex ,  so  it  might  block 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  if  a  longer  data  receive  operation  is  in  progress . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  topic 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  qos 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  message_id  of  the  subscribe  message  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          - 1  on  failure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  esp_mqtt_client_subscribe ( esp_mqtt_client_handle_t  client ,  const  char  * topic ,  int  qos ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Unsubscribe  the  client  from  defined  topic 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Notes : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  Client  must  be  connected  to  send  unsubscribe  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  It  is  thread  safe ,  please  refer  to  ` esp_mqtt_client_subscribe `  for  details 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  topic 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  message_id  of  the  subscribe  message  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          - 1  on  failure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								int  esp_mqtt_client_unsubscribe ( esp_mqtt_client_handle_t  client ,  const  char  * topic ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Client  to  send  a  publish  message  to  the  broker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Notes : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  Client  doesn ' t  have  to  be  connected  to  send  publish  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *    ( although  it  would  drop  all  qos = 0  messages ,  qos > 1  messages  would  be  enqueued ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  It  is  thread  safe ,  please  refer  to  ` esp_mqtt_client_subscribe `  for  details 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  topic      topic  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  data       payload  string  ( set  to  NULL ,  sending  empty  payload  message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  len        data  length ,  if  set  to  0 ,  length  is  calculated  from  payload  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  qos        qos  of  publish  message 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  retain     ratain  flag 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  message_id  of  the  subscribe  message  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          0  if  cannot  publish 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								int  esp_mqtt_client_publish ( esp_mqtt_client_handle_t  client ,  const  char  * topic ,  const  char  * data ,  int  len ,  int  qos ,  int  retain ) ;  
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Destroys  the  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  ESP_OK 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								esp_err_t  esp_mqtt_client_destroy ( esp_mqtt_client_handle_t  client ) ;  
						 
					
						
							
								
									
										
										
										
											2019-08-20 21:11:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ brief  Set  configuration  structure ,  typically  used  when  updating  the  config  ( i . e .  on  " before_connect "  event 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  client     mqtt  client  handle 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ param  config     mqtt  configuration  structure 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ return  ESP_ERR_NO_MEM  if  failed  to  allocate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *          ESP_OK  on  success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-14 16:49:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								esp_err_t  esp_mqtt_set_config ( esp_mqtt_client_handle_t  client ,  const  esp_mqtt_client_config_t  * config ) ;  
						 
					
						
							
								
									
										
										
										
											2018-09-21 08:39:36 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __cplusplus 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  //__cplusplus
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif