The ESP-AT MQTT library project
A simple wrapper to the MQTT functionality found in the ESP-AT interpreter
Classes | Macros | Typedefs | Enumerations
EspATMQTT.h File Reference
#include <inttypes.h>
#include <AT.h>
Include dependency graph for EspATMQTT.h:

Go to the source code of this file.

Classes

class  EspATMQTT
 EspAT MQTT EspATMQTT class definition. More...
 

Macros

#define MQTT_BUFFER_SIZE   1024
 
#define MQTT_ERROR(x)   (x & 0xffff)
 
#define DEFAULT_LINK_ID   0
 This is the only supported link ID as of version 2.4.0.0 of the ESP-AT firmware.
 

Typedefs

typedef enum mqtt_scheme_e mqtt_scheme_t
 
typedef enum mqtt_connectType_e mqtt_connectType_t
 
typedef void(* subscription_cb_t) (char *topic, char *mqttdata)
 
typedef void(* validDateTime_cb_t) (char *dateTime)
 
typedef void(* connected_cb_t) (char *connectionString)
 
typedef uint32_t mqtt_status_t
 The return value of an ESP-AT MQTT operation. More...
 

Enumerations

enum  mqtt_scheme_e {
  ESP_MQTT_SCHEME_MQTT_OVER_TCP = 1, ESP_MQTT_SCHEME_MQTT_OVER_TLS_NCV = 2, ESP_MQTT_SCHEME_MQTT_OVER_TLS_VSC = 3, ESP_MQTT_SCHEME_MQTT_OVER_TLS_PCC = 4,
  ESP_MQTT_SCHEME_MQTT_OVER_TLS_VSCPCC = 5, ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP = 6, ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_NCV = 7, ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_VSC = 8,
  ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_PCC = 9, ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_VSCPCC = 10
}
 MQTT configuration schemes. More...
 
enum  mqtt_error_e {
  AT_MQTT_NO_CONFIGURED = 0x6001, AT_MQTT_NOT_IN_CONFIGURED_STATE = 0x6002, AT_MQTT_UNINITIATED_OR_ALREADY_CLEAN = 0x6003, AT_MQTT_ALREADY_CONNECTED = 0x6004,
  AT_MQTT_MALLOC_FAILED = 0x6005, AT_MQTT_NULL_LINK = 0x6006, AT_MQTT_NULL_PARAMTER = 0x6007, AT_MQTT_PARAMETER_COUNTS_IS_WRONG = 0x6008,
  AT_MQTT_TLS_CONFIG_ERROR = 0x6009, AT_MQTT_PARAM_PREPARE_ERROR = 0x600A, AT_MQTT_CLIENT_START_FAILED = 0x600B, AT_MQTT_CLIENT_PUBLISH_FAILED = 0x600C,
  AT_MQTT_CLIENT_SUBSCRIBE_FAILED = 0x600D, AT_MQTT_CLIENT_UNSUBSCRIBE_FAILED = 0x600E, AT_MQTT_CLIENT_DISCONNECT_FAILED = 0x600F, AT_MQTT_LINK_ID_READ_FAILED = 0x6010,
  AT_MQTT_LINK_ID_VALUE_IS_WRONG = 0x6011, AT_MQTT_SCHEME_READ_FAILED = 0x6012, AT_MQTT_SCHEME_VALUE_IS_WRONG = 0x6013, AT_MQTT_CLIENT_ID_READ_FAILED = 0x6014,
  AT_MQTT_CLIENT_ID_IS_NULL = 0x6015, AT_MQTT_CLIENT_ID_IS_OVERLENGTH = 0x6016, AT_MQTT_USERNAME_READ_FAILED = 0x6017, AT_MQTT_USERNAME_IS_NULL = 0x6018,
  AT_MQTT_USERNAME_IS_OVERLENGTH = 0x6019, AT_MQTT_PASSWORD_READ_FAILED = 0x601A, AT_MQTT_PASSWORD_IS_NULL = 0x601B, AT_MQTT_PASSWORD_IS_OVERLENGTH = 0x601C,
  AT_MQTT_CERT_KEY_ID_READ_FAILED = 0x601D, AT_MQTT_CERT_KEY_ID_VALUE_IS_WRONG = 0x601E, AT_MQTT_CA_ID_READ_FAILED = 0x601F, AT_MQTT_CA_ID_VALUE_IS_WRONG = 0x6020,
  AT_MQTT_CA_LENGTH_ERROR = 0x6021, AT_MQTT_CA_READ_FAILED = 0x6022, AT_MQTT_CERT_LENGTH_ERROR = 0x6023, AT_MQTT_CERT_READ_FAILED = 0x6024,
  AT_MQTT_KEY_LENGTH_ERROR = 0x6025, AT_MQTT_KEY_READ_FAILED = 0x6026, AT_MQTT_PATH_READ_FAILED = 0x6027, AT_MQTT_PATH_IS_NULL = 0x6028,
  AT_MQTT_PATH_IS_OVERLENGTH = 0x6029, AT_MQTT_VERSION_READ_FAILED = 0x602A, AT_MQTT_KEEPALIVE_READ_FAILED = 0x602B, AT_MQTT_KEEPALIVE_IS_NULL = 0x602C,
  AT_MQTT_KEEPALIVE_VALUE_IS_WRONG = 0x602D, AT_MQTT_DISABLE_CLEAN_SESSION_READ_FAILED = 0x602E, AT_MQTT_DISABLE_CLEAN_SESSION_VALUE_IS_WRONG = 0x602F, AT_MQTT_LWT_TOPIC_READ_FAILED = 0x6030,
  AT_MQTT_LWT_TOPIC_IS_NULL = 0x6031, AT_MQTT_LWT_TOPIC_IS_OVERLENGTH = 0x6032, AT_MQTT_LWT_MSG_READ_FAILED = 0x6033, AT_MQTT_LWT_MSG_IS_NULL = 0x6034,
  AT_MQTT_LWT_MSG_IS_OVERLENGTH = 0x6035, AT_MQTT_LWT_QOS_READ_FAILED = 0x6036, AT_MQTT_LWT_QOS_VALUE_IS_WRONG = 0x6037, AT_MQTT_LWT_RETAIN_READ_FAILED = 0x6038,
  AT_MQTT_LWT_RETAIN_VALUE_IS_WRONG = 0x6039, AT_MQTT_HOST_READ_FAILED = 0x603A, AT_MQTT_HOST_IS_NULL = 0x603B, AT_MQTT_HOST_IS_OVERLENGTH = 0x603C,
  AT_MQTT_PORT_READ_FAILED = 0x603D, AT_MQTT_PORT_VALUE_IS_WRONG = 0x603E, AT_MQTT_RECONNECT_READ_FAILED = 0x603F, AT_MQTT_RECONNECT_VALUE_IS_WRONG = 0x6040,
  AT_MQTT_TOPIC_READ_FAILED = 0x6041, AT_MQTT_TOPIC_IS_NULL = 0x6042, AT_MQTT_TOPIC_IS_OVERLENGTH = 0x6043, AT_MQTT_DATA_READ_FAILED = 0x6044,
  AT_MQTT_DATA_IS_NULL = 0x6045, AT_MQTT_DATA_IS_OVERLENGTH = 0x6046, AT_MQTT_QOS_READ_FAILED = 0x6047, AT_MQTT_QOS_VALUE_IS_WRONG = 0x6048,
  AT_MQTT_RETAIN_READ_FAILED = 0x6049, AT_MQTT_RETAIN_VALUE_IS_WRONG = 0x604A, AT_MQTT_PUBLISH_LENGTH_READ_FAILED = 0x604B, AT_MQTT_PUBLISH_LENGTH_VALUE_IS_WRONG = 0x604C,
  AT_MQTT_RECV_LENGTH_IS_WRONG = 0x604D, AT_MQTT_CREATE_SEMA_FAILED = 0x604E, AT_MQTT_CREATE_EVENT_GROUP_FAILED = 0x604F, AT_MQTT_URI_PARSE_FAILED = 0x6050,
  AT_MQTT_IN_DISCONNECTED_STATE = 0x6051, AT_MQTT_HOSTNAME_VERIFY_FAILED = 0x6052, AT_MQTT_FAILED_TO_PUBLISH_RAW = 0x6053
}
 The caller should use these error codes to determine the cause of an MQTT error. More...
 
enum  mqtt_retain_e { AT_MQTT_DO_NOT_RETAIN = 0, AT_MQTT_RETAIN = 1 }
 A retained message is a normal MQTT message with the retained flag set to true. More...
 
enum  mqtt_connectType_e { AT_CONN_UNCONNECTED = 0x1000, AT_CONN_SYNCH = 0x1001, AT_CONN_ASYNCH = 0x1002 }
 

Typedef Documentation

◆ connected_cb_t

connected_cb_t

This is the callback function data type for connection call backs.

◆ mqtt_connectType_t

Used to define the different connection types of a MQTT connection.

◆ mqtt_status_t

typedef uint32_t mqtt_status_t

The return value of an ESP-AT MQTT operation.

This value is a combination of the enums mqtt_error_e and mqtt_error_e. The caller should check for both to determine the cause of the error.

◆ subscription_cb_t

subscription_cb_t

This is the callback function data type for subscription call backs.

◆ validDateTime_cb_t

validDateTime_cb_t

This is the callback function data type for valid date/time call backs.

Enumeration Type Documentation

◆ mqtt_connectType_e

Enumerator
AT_CONN_UNCONNECTED 

MQTT server still in its unconnected state.

AT_CONN_SYNCH 

MQTT server has connected synchronously.

AT_CONN_ASYNCH 

MQTT server has not connected yet and is awaiting a connection callback.

◆ mqtt_error_e

The caller should use these error codes to determine the cause of an MQTT error.

Using the MQTT_ERROR(x) macro simplifies separating the MQTT specific part of the error code from the AT error code.

Be aware of that the documentation from Espressif regarding these error codes is vague and the explanations here might not be 100% correct.

Enumerator
AT_MQTT_NO_CONFIGURED 

MQTT layer not configured yet.

AT_MQTT_NOT_IN_CONFIGURED_STATE 

MQTT layer not in a configured state (same as above ?)

AT_MQTT_UNINITIATED_OR_ALREADY_CLEAN 

Tried to perform clean when the MQTT layer was already clean.

AT_MQTT_ALREADY_CONNECTED 

Tried to connect when already connected.

AT_MQTT_MALLOC_FAILED 

Failed to allocate memory internally.

AT_MQTT_NULL_LINK 

?

AT_MQTT_NULL_PARAMTER 

A NULL parameter was found when valid data was expected.

AT_MQTT_PARAMETER_COUNTS_IS_WRONG 

The number of parameters is incorrect.

AT_MQTT_TLS_CONFIG_ERROR 

Something is wrong with the TLS configuration.

AT_MQTT_PARAM_PREPARE_ERROR 

?

AT_MQTT_CLIENT_START_FAILED 

Failed to start MQTT client.

AT_MQTT_CLIENT_PUBLISH_FAILED 

Failed to publish data to broker.

AT_MQTT_CLIENT_SUBSCRIBE_FAILED 

Failed to subscribe to topic at broker.

AT_MQTT_CLIENT_UNSUBSCRIBE_FAILED 

Failed to unsubscribe from topic.

AT_MQTT_CLIENT_DISCONNECT_FAILED 

Failed to disconnect from the broker.

AT_MQTT_LINK_ID_READ_FAILED 

Failed to read the link ID.

AT_MQTT_LINK_ID_VALUE_IS_WRONG 

Wrong link ID value was used.

AT_MQTT_SCHEME_READ_FAILED 

Failed to read the security scheme used.

AT_MQTT_SCHEME_VALUE_IS_WRONG 

Incorrect scheme value was used.

AT_MQTT_CLIENT_ID_READ_FAILED 

Failed to read the client ID.

AT_MQTT_CLIENT_ID_IS_NULL 

The client ID can't be NULL.

AT_MQTT_CLIENT_ID_IS_OVERLENGTH 

The client ID is to long.

AT_MQTT_USERNAME_READ_FAILED 

Failed to read the user name.

AT_MQTT_USERNAME_IS_NULL 

The user name can't be NULL.

AT_MQTT_USERNAME_IS_OVERLENGTH 

The user name is to long.

AT_MQTT_PASSWORD_READ_FAILED 

Failed to read the password.

AT_MQTT_PASSWORD_IS_NULL 

The password can't be NULL.

AT_MQTT_PASSWORD_IS_OVERLENGTH 

The password is to long.

AT_MQTT_CERT_KEY_ID_READ_FAILED 

The cert key ID could not be read.

AT_MQTT_CERT_KEY_ID_VALUE_IS_WRONG 

The cert key ID is incorrect.

AT_MQTT_CA_ID_READ_FAILED 

The CA ID could not be read.

AT_MQTT_CA_ID_VALUE_IS_WRONG 

The CA ID value is incorrect.

AT_MQTT_CA_LENGTH_ERROR 

The CA length is incorrect.

AT_MQTT_CA_READ_FAILED 

Failed to read the CA.

AT_MQTT_CERT_LENGTH_ERROR 

Incorrect client certificate length.

AT_MQTT_CERT_READ_FAILED 

Failed to read client certificate.

AT_MQTT_KEY_LENGTH_ERROR 

Incorrect client key length.

AT_MQTT_KEY_READ_FAILED 

Failed to read client key.

AT_MQTT_PATH_READ_FAILED 

Failed to read from path.

AT_MQTT_PATH_IS_NULL 

The path must not be NULL.

AT_MQTT_PATH_IS_OVERLENGTH 

The path length is to long.

AT_MQTT_VERSION_READ_FAILED 

Failed to read version.

AT_MQTT_KEEPALIVE_READ_FAILED 

Failed to read keepalive value.

AT_MQTT_KEEPALIVE_IS_NULL 

Keepalive value must not be NULL.

AT_MQTT_KEEPALIVE_VALUE_IS_WRONG 

Keepalive value is incorrect.

AT_MQTT_DISABLE_CLEAN_SESSION_READ_FAILED 

Failed to read the clean session parameter.

AT_MQTT_DISABLE_CLEAN_SESSION_VALUE_IS_WRONG 

Incorrect value of the clean session value.

AT_MQTT_LWT_TOPIC_READ_FAILED 

Failed to read the lwt topic.

AT_MQTT_LWT_TOPIC_IS_NULL 

LWT topic can not be set to NULL.

AT_MQTT_LWT_TOPIC_IS_OVERLENGTH 

LWT topic is to long.

AT_MQTT_LWT_MSG_READ_FAILED 

Failed to read LWT message.

AT_MQTT_LWT_MSG_IS_NULL 

LWT message can not be set to NULL.

AT_MQTT_LWT_MSG_IS_OVERLENGTH 

LWT message is to long.

AT_MQTT_LWT_QOS_READ_FAILED 

Failed to read LWT QoS parameter.

AT_MQTT_LWT_QOS_VALUE_IS_WRONG 

Incorrect LWT QoS value specified.

AT_MQTT_LWT_RETAIN_READ_FAILED 

Failed to read LWT retain parameter.

AT_MQTT_LWT_RETAIN_VALUE_IS_WRONG 

Incorrect LWT value specified.

AT_MQTT_HOST_READ_FAILED 

Failed to read host parameter.

AT_MQTT_HOST_IS_NULL 

Failed to set host, value can not be NULL.

AT_MQTT_HOST_IS_OVERLENGTH 

Host value to long.

AT_MQTT_PORT_READ_FAILED 

Failed to read port parameter.

AT_MQTT_PORT_VALUE_IS_WRONG 

Port value is incorrect.

AT_MQTT_RECONNECT_READ_FAILED 

Failed to read reconnect parameter.

AT_MQTT_RECONNECT_VALUE_IS_WRONG 

Incorrect reconnect value specified.

AT_MQTT_TOPIC_READ_FAILED 

Failed to read topic parameter.

AT_MQTT_TOPIC_IS_NULL 

Failed to set topic, can't be NULL.

AT_MQTT_TOPIC_IS_OVERLENGTH 

Failed to set topic, to long.

AT_MQTT_DATA_READ_FAILED 

Failed to read message.

AT_MQTT_DATA_IS_NULL 

Incorrect message specified, can't be NULL.

AT_MQTT_DATA_IS_OVERLENGTH 

Message to long.

AT_MQTT_QOS_READ_FAILED 

Failed to read QoS parameter.

AT_MQTT_QOS_VALUE_IS_WRONG 

Incorrect QoS value specified.

AT_MQTT_RETAIN_READ_FAILED 

Failed to read retain parameter.

AT_MQTT_RETAIN_VALUE_IS_WRONG 

Incorrect retain value specified.

AT_MQTT_PUBLISH_LENGTH_READ_FAILED 

Failed to read publish length parameter.

AT_MQTT_PUBLISH_LENGTH_VALUE_IS_WRONG 

Failed to set published length value.

AT_MQTT_RECV_LENGTH_IS_WRONG 

Incorrect receive length is specified.

AT_MQTT_CREATE_SEMA_FAILED 

Internal error, failed to create semaphore.

AT_MQTT_CREATE_EVENT_GROUP_FAILED 

Internal error, failed to create event group.

AT_MQTT_URI_PARSE_FAILED 

Internal error, failed to parse URI.

AT_MQTT_IN_DISCONNECTED_STATE 

MQTT is in disconnected state.

AT_MQTT_HOSTNAME_VERIFY_FAILED 

Hostname lookup failed.

AT_MQTT_FAILED_TO_PUBLISH_RAW 

Failed to publish raw data.

◆ mqtt_retain_e

A retained message is a normal MQTT message with the retained flag set to true.

The broker stores the last retained message and the corresponding QoS for that topic. Each client that subscribes to a topic pattern that matches the topic of the retained message receives the retained message immediately after they subscribe. The broker stores only one retained message per topic.

◆ mqtt_scheme_e

MQTT configuration schemes.

Enumerator
ESP_MQTT_SCHEME_MQTT_OVER_TCP 

MQTT over plain TCP.

ESP_MQTT_SCHEME_MQTT_OVER_TLS_NCV 

MQTT over TLS (no certificate verification).

ESP_MQTT_SCHEME_MQTT_OVER_TLS_VSC 

MQTT over TLS (verify server certificate).

ESP_MQTT_SCHEME_MQTT_OVER_TLS_PCC 

MQTT over TLS (provide client certificate).

ESP_MQTT_SCHEME_MQTT_OVER_TLS_VSCPCC 

MQTT over TLS (verify server certificate and provide client certificate).

ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP 

MQTT over WebSocket (based on TCP).

ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_NCV 

MQTT over WebSocket Secure (based on TLS, no certificate verification).

ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_VSC 

MQTT over WebSocket Secure (based on TLS, verify server certificate).

ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_PCC 

MQTT over WebSocket Secure (based on TLS, provide client certificate).

ESP_MQTT_SCHEME_MQTT_OVER_WS_TCP_SEC_TLS_VSCPCC 

MQTT over WebSocket Secure (based on TLS, verify server certificate and provide client certificate).