coreMQTT
v1.0.1
MQTT 3.1.1 Client Library
|
|
Go to the documentation of this file.
30 #ifndef CORE_MQTT_SERIALIZER_H
31 #define CORE_MQTT_SERIALIZER_H
42 #if defined( __cplusplus ) || ( defined( __STDC_VERSION__ ) && ( __STDC_VERSION__ >= 199901L ) )
44 #elif !defined( bool ) && !defined( false ) && !defined( true )
46 #define false ( int8_t ) 0
47 #define true ( int8_t ) 1
54 #ifndef MQTT_DO_NOT_USE_CUSTOM_CONFIG
56 #include "core_mqtt_config.h"
71 #define MQTT_PACKET_TYPE_CONNECT ( ( uint8_t ) 0x10U )
72 #define MQTT_PACKET_TYPE_CONNACK ( ( uint8_t ) 0x20U )
73 #define MQTT_PACKET_TYPE_PUBLISH ( ( uint8_t ) 0x30U )
74 #define MQTT_PACKET_TYPE_PUBACK ( ( uint8_t ) 0x40U )
75 #define MQTT_PACKET_TYPE_PUBREC ( ( uint8_t ) 0x50U )
76 #define MQTT_PACKET_TYPE_PUBREL ( ( uint8_t ) 0x62U )
77 #define MQTT_PACKET_TYPE_PUBCOMP ( ( uint8_t ) 0x70U )
78 #define MQTT_PACKET_TYPE_SUBSCRIBE ( ( uint8_t ) 0x82U )
79 #define MQTT_PACKET_TYPE_SUBACK ( ( uint8_t ) 0x90U )
80 #define MQTT_PACKET_TYPE_UNSUBSCRIBE ( ( uint8_t ) 0xA2U )
81 #define MQTT_PACKET_TYPE_UNSUBACK ( ( uint8_t ) 0xB0U )
82 #define MQTT_PACKET_TYPE_PINGREQ ( ( uint8_t ) 0xC0U )
83 #define MQTT_PACKET_TYPE_PINGRESP ( ( uint8_t ) 0xD0U )
84 #define MQTT_PACKET_TYPE_DISCONNECT ( ( uint8_t ) 0xE0U )
91 #define MQTT_PUBLISH_ACK_PACKET_SIZE ( 4UL )
94 struct MQTTFixedBuffer;
95 struct MQTTConnectInfo;
96 struct MQTTSubscribeInfo;
97 struct MQTTPublishInfo;
98 struct MQTTPacketInfo;
104 typedef enum MQTTStatus
137 typedef struct MQTTFixedBuffer
147 typedef struct MQTTConnectInfo
194 typedef struct MQTTSubscribeInfo
216 typedef struct MQTTPublishInfo
258 typedef struct MQTTPacketInfo
326 size_t * pRemainingLength,
327 size_t * pPacketSize );
382 size_t remainingLength,
439 size_t subscriptionCount,
440 size_t * pRemainingLength,
441 size_t * pPacketSize );
505 size_t subscriptionCount,
507 size_t remainingLength,
556 size_t subscriptionCount,
557 size_t * pRemainingLength,
558 size_t * pPacketSize );
622 size_t subscriptionCount,
624 size_t remainingLength,
676 size_t * pRemainingLength,
677 size_t * pPacketSize );
745 size_t remainingLength,
825 size_t remainingLength,
827 size_t * pHeaderSize );
1074 uint16_t * pPacketId,
1118 uint16_t * pPacketId,
1119 bool * pSessionPresent );
MQTT SUBSCRIBE packet parameters.
Definition: core_mqtt_serializer.h:195
MQTTStatus_t MQTT_GetPingreqPacketSize(size_t *pPacketSize)
Get the size of an MQTT PINGREQ packet.
Definition: core_mqtt_serializer.c:2165
uint8_t * pRemainingData
Remaining serialized data in the MQTT packet.
Definition: core_mqtt_serializer.h:268
uint16_t topicNameLength
Length of topic name.
Definition: core_mqtt_serializer.h:241
MQTT CONNECT packet parameters.
Definition: core_mqtt_serializer.h:148
MQTTStatus_t MQTT_GetPublishPacketSize(const MQTTPublishInfo_t *pPublishInfo, size_t *pRemainingLength, size_t *pPacketSize)
Get the packet size and remaining length of an MQTT PUBLISH packet.
Definition: core_mqtt_serializer.c:1838
MQTTStatus_t MQTT_SerializeDisconnect(const MQTTFixedBuffer_t *pFixedBuffer)
Serialize an MQTT DISCONNECT packet into the given buffer.
Definition: core_mqtt_serializer.c:2122
uint8_t * pBuffer
Pointer to buffer.
Definition: core_mqtt_serializer.h:139
MQTTStatus_t MQTT_SerializeAck(const MQTTFixedBuffer_t *pFixedBuffer, uint8_t packetType, uint16_t packetId)
Serialize an MQTT PUBACK, PUBREC, PUBREL, or PUBCOMP into the given buffer.
Definition: core_mqtt_serializer.c:2047
@ MQTTNoDataAvailable
Definition: core_mqtt_serializer.h:113
int32_t(* TransportRecv_t)(NetworkContext_t *pNetworkContext, void *pBuffer, size_t bytesToRecv)
Transport interface for receiving data on the network.
Definition: transport_interface.h:169
MQTT incoming packet parameters.
Definition: core_mqtt_serializer.h:259
bool retain
Whether this is a retained message.
Definition: core_mqtt_serializer.h:226
@ MQTTNoMemory
Definition: core_mqtt_serializer.h:108
const char * pTopicFilter
Topic filter to subscribe to.
Definition: core_mqtt_serializer.h:204
struct NetworkContext NetworkContext_t
The NetworkContext is an incomplete type. An implementation of this interface must define struct Netw...
Definition: transport_interface.h:155
Buffer passed to MQTT library.
Definition: core_mqtt_serializer.h:138
const void * pPayload
Message payload.
Definition: core_mqtt_serializer.h:246
size_t size
Size of buffer.
Definition: core_mqtt_serializer.h:140
MQTTStatus_t MQTT_SerializePingreq(const MQTTFixedBuffer_t *pFixedBuffer)
Serialize an MQTT PINGREQ packet into the given buffer.
Definition: core_mqtt_serializer.c:2185
MQTTStatus_t MQTT_DeserializeAck(const MQTTPacketInfo_t *pIncomingPacket, uint16_t *pPacketId, bool *pSessionPresent)
Deserialize an MQTT CONNACK, SUBACK, UNSUBACK, PUBACK, PUBREC, PUBREL, PUBCOMP, or PINGRESP.
Definition: core_mqtt_serializer.c:2265
@ MQTTKeepAliveTimeout
Definition: core_mqtt_serializer.h:116
MQTTStatus_t MQTT_GetConnectPacketSize(const MQTTConnectInfo_t *pConnectInfo, const MQTTPublishInfo_t *pWillInfo, size_t *pRemainingLength, size_t *pPacketSize)
Get the size and Remaining Length of an MQTT CONNECT packet.
Definition: core_mqtt_serializer.c:1485
MQTTStatus_t MQTT_GetSubscribePacketSize(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, size_t *pRemainingLength, size_t *pPacketSize)
Get packet size and Remaining Length of an MQTT SUBSCRIBE packet.
Definition: core_mqtt_serializer.c:1643
@ MQTTQoS2
Definition: core_mqtt_serializer.h:127
const char * pClientIdentifier
MQTT client identifier. Must be unique per client.
Definition: core_mqtt_serializer.h:162
MQTTStatus_t
Return codes from MQTT functions.
Definition: core_mqtt_serializer.h:105
uint16_t keepAliveSeconds
MQTT keep alive period.
Definition: core_mqtt_serializer.h:157
const char * pPassword
MQTT password. Set to NULL if not used.
Definition: core_mqtt_serializer.h:182
@ MQTTBadParameter
Definition: core_mqtt_serializer.h:107
@ MQTTRecvFailed
Definition: core_mqtt_serializer.h:110
MQTTStatus_t MQTT_SerializeConnect(const MQTTConnectInfo_t *pConnectInfo, const MQTTPublishInfo_t *pWillInfo, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)
Serialize an MQTT CONNECT packet in the given fixed buffer pFixedBuffer.
Definition: core_mqtt_serializer.c:1585
MQTTStatus_t MQTT_SerializeUnsubscribe(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)
Serialize an MQTT UNSUBSCRIBE packet in the given buffer.
Definition: core_mqtt_serializer.c:1787
uint16_t passwordLength
Length of MQTT password. Set to 0 if not used.
Definition: core_mqtt_serializer.h:187
MQTTStatus_t MQTT_GetUnsubscribePacketSize(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, size_t *pRemainingLength, size_t *pPacketSize)
Get packet size and Remaining Length of an MQTT UNSUBSCRIBE packet.
Definition: core_mqtt_serializer.c:1742
const char * pTopicName
Topic name on which the message is published.
Definition: core_mqtt_serializer.h:236
MQTTStatus_t MQTT_DeserializePublish(const MQTTPacketInfo_t *pIncomingPacket, uint16_t *pPacketId, MQTTPublishInfo_t *pPublishInfo)
Deserialize an MQTT PUBLISH packet.
Definition: core_mqtt_serializer.c:2228
@ MQTTIllegalState
Definition: core_mqtt_serializer.h:114
MQTTStatus_t MQTT_SerializePublishHeader(const MQTTPublishInfo_t *pPublishInfo, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer, size_t *pHeaderSize)
Serialize an MQTT PUBLISH packet header in the given buffer.
Definition: core_mqtt_serializer.c:1964
MQTTStatus_t MQTT_SerializePublish(const MQTTPublishInfo_t *pPublishInfo, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)
Serialize an MQTT PUBLISH packet in the given buffer.
Definition: core_mqtt_serializer.c:1879
MQTTStatus_t MQTT_GetIncomingPacketTypeAndLength(TransportRecv_t readFunc, NetworkContext_t *pNetworkContext, MQTTPacketInfo_t *pIncomingPacket)
Extract the MQTT packet type and length from incoming packet.
Definition: core_mqtt_serializer.c:2341
MQTTQoS_t
MQTT Quality of Service values.
Definition: core_mqtt_serializer.h:124
bool cleanSession
Whether to establish a new, clean session or resume a previous session.
Definition: core_mqtt_serializer.h:152
uint16_t topicFilterLength
Length of subscription topic filter.
Definition: core_mqtt_serializer.h:209
@ MQTTServerRefused
Definition: core_mqtt_serializer.h:112
MQTTQoS_t qos
Quality of Service for subscription.
Definition: core_mqtt_serializer.h:199
@ MQTTStateCollision
Definition: core_mqtt_serializer.h:115
@ MQTTSendFailed
Definition: core_mqtt_serializer.h:109
uint16_t clientIdentifierLength
Length of the client identifier.
Definition: core_mqtt_serializer.h:167
@ MQTTQoS1
Definition: core_mqtt_serializer.h:126
uint8_t type
Type of incoming MQTT packet.
Definition: core_mqtt_serializer.h:263
MQTTQoS_t qos
Quality of Service for message.
Definition: core_mqtt_serializer.h:221
@ MQTTSuccess
Definition: core_mqtt_serializer.h:106
MQTT PUBLISH packet parameters.
Definition: core_mqtt_serializer.h:217
MQTTStatus_t MQTT_GetDisconnectPacketSize(size_t *pPacketSize)
Get the size of an MQTT DISCONNECT packet.
Definition: core_mqtt_serializer.c:2102
@ MQTTBadResponse
Definition: core_mqtt_serializer.h:111
Transport interface definitions to send and receive data over the network.
This represents the default values for the configuration macros for the MQTT library.
uint16_t userNameLength
Length of MQTT user name. Set to 0 if not used.
Definition: core_mqtt_serializer.h:177
size_t remainingLength
Length of remaining serialized data.
Definition: core_mqtt_serializer.h:273
size_t payloadLength
Message payload length.
Definition: core_mqtt_serializer.h:251
bool dup
Whether this is a duplicate publish message.
Definition: core_mqtt_serializer.h:231
@ MQTTQoS0
Definition: core_mqtt_serializer.h:125
MQTTStatus_t MQTT_SerializeSubscribe(const MQTTSubscribeInfo_t *pSubscriptionList, size_t subscriptionCount, uint16_t packetId, size_t remainingLength, const MQTTFixedBuffer_t *pFixedBuffer)
Serialize an MQTT SUBSCRIBE packet in the given buffer.
Definition: core_mqtt_serializer.c:1688
const char * pUserName
MQTT user name. Set to NULL if not used.
Definition: core_mqtt_serializer.h:172