51#define MQTT_LIBRARY_VERSION    "v2.3.1" 
   60#define MQTT_PACKET_ID_INVALID    ( ( uint16_t ) 0U ) 
   65struct MQTTDeserializedInfo;
 
  101                                       struct MQTTPacketInfo * pPacketInfo,
 
  102                                       struct MQTTDeserializedInfo * pDeserializedInfo );
 
  108typedef enum MQTTConnectionStatus
 
  118typedef enum MQTTPublishState
 
  137typedef enum MQTTPubAckType
 
  149typedef enum MQTTSubAckStatus
 
  161typedef struct MQTTPubAckInfo
 
  172typedef struct MQTTContext
 
  256typedef struct MQTTDeserializedInfo
 
  412                                   size_t outgoingPublishCount,
 
  414                                   size_t incomingPublishCount );
 
  525                           bool * pSessionPresent );
 
  581                             size_t subscriptionCount,
 
  719                               size_t subscriptionCount,
 
  916                              const uint16_t topicNameLength,
 
  917                              const char * pTopicFilter,
 
  918                              const uint16_t topicFilterLength,
 
 1005                                        uint8_t ** pPayloadStart,
 
 1006                                        size_t * pPayloadSize );
 
uint16_t MQTT_GetPacketId(MQTTContext_t *pContext)
Get a packet ID that is valid according to the MQTT 3.1.1 spec.
Definition: core_mqtt.c:3172
 
const char * MQTT_Status_strerror(MQTTStatus_t status)
Error code to string conversion for MQTT statuses.
Definition: core_mqtt.c:3329
 
MQTTStatus_t MQTT_Publish(MQTTContext_t *pContext, const MQTTPublishInfo_t *pPublishInfo, uint16_t packetId)
Publishes a message to the given topic name.
Definition: core_mqtt.c:2805
 
MQTTStatus_t MQTT_CancelCallback(const MQTTContext_t *pContext, uint16_t packetId)
Cancels an outgoing publish callback (only for QoS > QoS0) by removing it from the pending ACK list.
Definition: core_mqtt.c:2647
 
MQTTStatus_t MQTT_Subscribe(MQTTContext_t *pContext, const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, uint16_t packetId)
Sends MQTT SUBSCRIBE for the given list of topic filters to the broker.
Definition: core_mqtt.c:2761
 
MQTTStatus_t MQTT_MatchTopic(const char *pTopicName, const uint16_t topicNameLength, const char *pTopicFilter, const uint16_t topicFilterLength, bool *pIsMatch)
A utility function that determines whether the passed topic filter and topic name match according to ...
Definition: core_mqtt.c:3201
 
MQTTStatus_t MQTT_Ping(MQTTContext_t *pContext)
Sends an MQTT PINGREQ to broker.
Definition: core_mqtt.c:2922
 
MQTTStatus_t MQTT_Unsubscribe(MQTTContext_t *pContext, const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, uint16_t packetId)
Sends MQTT UNSUBSCRIBE for the given list of topic filters to the broker.
Definition: core_mqtt.c:3000
 
MQTTStatus_t MQTT_ProcessLoop(MQTTContext_t *pContext)
Loop to receive packets from the transport interface. Handles keep alive.
Definition: core_mqtt.c:3119
 
MQTTStatus_t MQTT_GetSubAckStatusCodes(const MQTTPacketInfo_t *pSubackPacket, uint8_t **pPayloadStart, size_t *pPayloadSize)
Parses the payload of an MQTT SUBACK packet that contains status codes corresponding to topic filter ...
Definition: core_mqtt.c:3270
 
MQTTStatus_t MQTT_Disconnect(MQTTContext_t *pContext)
Disconnect an MQTT session.
Definition: core_mqtt.c:3045
 
MQTTStatus_t MQTT_Init(MQTTContext_t *pContext, const TransportInterface_t *pTransportInterface, MQTTGetCurrentTimeFunc_t getTimeFunction, MQTTEventCallback_t userCallback, const MQTTFixedBuffer_t *pNetworkBuffer)
Initialize an MQTT context.
Definition: core_mqtt.c:2531
 
MQTTStatus_t MQTT_ReceiveLoop(MQTTContext_t *pContext)
Loop to receive packets from the transport interface. Does not handle keep alive.
Definition: core_mqtt.c:3146
 
MQTTStatus_t MQTT_Connect(MQTTContext_t *pContext, const MQTTConnectInfo_t *pConnectInfo, const MQTTPublishInfo_t *pWillInfo, uint32_t timeoutMs, bool *pSessionPresent)
Establish an MQTT session.
Definition: core_mqtt.c:2679
 
MQTTStatus_t MQTT_InitStatefulQoS(MQTTContext_t *pContext, MQTTPubAckInfo_t *pOutgoingPublishRecords, size_t outgoingPublishCount, MQTTPubAckInfo_t *pIncomingPublishRecords, size_t incomingPublishCount)
Initialize an MQTT context for QoS > 0.
Definition: core_mqtt.c:2590
 
User-facing functions for serializing and deserializing MQTT 3.1.1 packets. This header should be inc...
 
void(* MQTTEventCallback_t)(struct MQTTContext *pContext, struct MQTTPacketInfo *pPacketInfo, struct MQTTDeserializedInfo *pDeserializedInfo)
Application callback for receiving incoming publishes and incoming acks.
Definition: core_mqtt.h:100
 
uint32_t(* MQTTGetCurrentTimeFunc_t)(void)
Application provided function to query the time elapsed since a given epoch in milliseconds.
Definition: core_mqtt.h:85
 
MQTTPublishState_t
The state of QoS 1 or QoS 2 MQTT publishes, used in the state engine.
Definition: core_mqtt.h:119
 
MQTTSubAckStatus_t
The status codes in the SUBACK response to a subscription request.
Definition: core_mqtt.h:150
 
MQTTPubAckType_t
Packet types used in acknowledging QoS 1 or QoS 2 publishes.
Definition: core_mqtt.h:138
 
MQTTConnectionStatus_t
Values indicating if an MQTT connection exists.
Definition: core_mqtt.h:109
 
MQTTStatus_t
Return codes from MQTT functions.
Definition: core_mqtt_serializer.h:87
 
MQTTQoS_t
MQTT Quality of Service values.
Definition: core_mqtt_serializer.h:109
 
@ MQTTPubRecSend
The library will send a PUBREC for a received PUBLISH.
Definition: core_mqtt.h:123
 
@ MQTTPubRecPending
The library is awaiting a PUBREC for an outgoing PUBLISH.
Definition: core_mqtt.h:127
 
@ MQTTPubCompPending
The library is awaiting a PUBCOMP for an outgoing PUBLISH.
Definition: core_mqtt.h:129
 
@ MQTTPubRelSend
The library will send a PUBREL for a received PUBREC.
Definition: core_mqtt.h:124
 
@ MQTTPubAckSend
The library will send a PUBACK for a received PUBLISH.
Definition: core_mqtt.h:122
 
@ MQTTPubRelPending
The library is awaiting a PUBREL for an incoming PUBLISH.
Definition: core_mqtt.h:128
 
@ MQTTPubCompSend
The library will send a PUBCOMP for a received PUBREL.
Definition: core_mqtt.h:125
 
@ MQTTStateNull
An empty state with no corresponding PUBLISH.
Definition: core_mqtt.h:120
 
@ MQTTPublishSend
The library will send an outgoing PUBLISH packet.
Definition: core_mqtt.h:121
 
@ MQTTPubAckPending
The library is awaiting a PUBACK for an outgoing PUBLISH.
Definition: core_mqtt.h:126
 
@ MQTTPublishDone
The PUBLISH has been completed.
Definition: core_mqtt.h:130
 
@ MQTTSubAckSuccessQos2
Success with a maximum delivery at QoS 2.
Definition: core_mqtt.h:153
 
@ MQTTSubAckSuccessQos1
Success with a maximum delivery at QoS 1.
Definition: core_mqtt.h:152
 
@ MQTTSubAckSuccessQos0
Success with a maximum delivery at QoS 0.
Definition: core_mqtt.h:151
 
@ MQTTSubAckFailure
Failure.
Definition: core_mqtt.h:154
 
@ MQTTPuback
PUBACKs are sent in response to a QoS 1 PUBLISH.
Definition: core_mqtt.h:139
 
@ MQTTPubrec
PUBRECs are sent in response to a QoS 2 PUBLISH.
Definition: core_mqtt.h:140
 
@ MQTTPubcomp
PUBCOMPs are sent in response to a PUBREL.
Definition: core_mqtt.h:142
 
@ MQTTPubrel
PUBRELs are sent in response to a PUBREC.
Definition: core_mqtt.h:141
 
@ MQTTNotConnected
MQTT Connection is inactive.
Definition: core_mqtt.h:110
 
@ MQTTConnected
MQTT Connection is active.
Definition: core_mqtt.h:111
 
MQTT CONNECT packet parameters.
Definition: core_mqtt_serializer.h:133
 
A struct representing an MQTT connection.
Definition: core_mqtt.h:173
 
uint32_t lastPacketTxTime
Timestamp of the last packet sent by the library.
Definition: core_mqtt.h:227
 
MQTTFixedBuffer_t networkBuffer
The buffer used in sending and receiving packets from the network.
Definition: core_mqtt.h:202
 
size_t outgoingPublishRecordMaxCount
The maximum number of outgoing publish records.
Definition: core_mqtt.h:187
 
size_t index
Index to keep track of the number of bytes received in network buffer.
Definition: core_mqtt.h:243
 
MQTTConnectionStatus_t connectStatus
Whether the context currently has a connection to the broker.
Definition: core_mqtt.h:212
 
MQTTPubAckInfo_t * outgoingPublishRecords
State engine records for outgoing publishes.
Definition: core_mqtt.h:177
 
uint32_t lastPacketRxTime
Timestamp of the last packet received by the library.
Definition: core_mqtt.h:232
 
MQTTEventCallback_t appCallback
Callback function used to give deserialized MQTT packets to the application.
Definition: core_mqtt.h:222
 
TransportInterface_t transportInterface
The transport interface used by the MQTT connection.
Definition: core_mqtt.h:197
 
size_t incomingPublishRecordMaxCount
The maximum number of incoming publish records.
Definition: core_mqtt.h:192
 
MQTTGetCurrentTimeFunc_t getTime
Function used to get millisecond timestamps.
Definition: core_mqtt.h:217
 
bool waitingForPingResp
If the library is currently awaiting a PINGRESP.
Definition: core_mqtt.h:248
 
uint32_t pingReqSendTimeMs
Timestamp of the last sent PINGREQ.
Definition: core_mqtt.h:247
 
uint16_t nextPacketId
The next available ID for outgoing MQTT packets.
Definition: core_mqtt.h:207
 
bool controlPacketSent
Whether the library sent a packet during a call of MQTT_ProcessLoop or MQTT_ReceiveLoop.
Definition: core_mqtt.h:238
 
MQTTPubAckInfo_t * incomingPublishRecords
State engine records for incoming publishes.
Definition: core_mqtt.h:182
 
uint16_t keepAliveIntervalSec
Keep Alive interval.
Definition: core_mqtt.h:246
 
Struct to hold deserialized packet information for an MQTTEventCallback_t callback.
Definition: core_mqtt.h:257
 
MQTTStatus_t deserializationResult
Return code of deserialization.
Definition: core_mqtt.h:260
 
MQTTPublishInfo_t * pPublishInfo
Pointer to deserialized publish info.
Definition: core_mqtt.h:259
 
uint16_t packetIdentifier
Packet ID of deserialized packet.
Definition: core_mqtt.h:258
 
Buffer passed to MQTT library.
Definition: core_mqtt_serializer.h:123
 
MQTT incoming packet parameters.
Definition: core_mqtt_serializer.h:244
 
An element of the state engine records for QoS 1 or Qos 2 publishes.
Definition: core_mqtt.h:162
 
MQTTQoS_t qos
The QoS of the original PUBLISH.
Definition: core_mqtt.h:164
 
MQTTPublishState_t publishState
The current state of the publish process.
Definition: core_mqtt.h:165
 
uint16_t packetId
The packet ID of the original PUBLISH.
Definition: core_mqtt.h:163
 
MQTT PUBLISH packet parameters.
Definition: core_mqtt_serializer.h:202
 
MQTT SUBSCRIBE packet parameters.
Definition: core_mqtt_serializer.h:180
 
The transport layer interface.
Definition: transport_interface.h:299
 
Transport interface definitions to send and receive data over the network.