40#include <DoubleList.h>
79#define SMQTTE_SOCKET -1
83#define SMQTTE_ERRORBASE -10000
87#define SMQTTE_TIMEOUT -10001
91#define SMQTTE_PONGTIMEOUT -10002
95#define SMQTTE_PROTOCOL_ERROR -10003
100#define SMQTTE_OVERFLOW -10005
104#define SMQTTE_ALREADYCON -10006
109#define SMQTTE_CONREFUSED -10007
118#define SMQTTE_SERVERNOTTRUSTED -10008
121#define SMQTTE_NOMEM -10009
137#define SMQTT_TIMEOUT -20000
142#define SMQTT_SUBACK -20001
147#define SMQTT_UNSUBACK -20002
254#define SharkMQTT_setCtx(o, ctx) SOCKET_constructor(&(o)->sock, ctx)
267#define SharkMQTT_msgConsumed(o) (((o)->packetLen - (o)->bytesRead) == 0)
283#define SharkMQTT_connackCode(o) (o)->recPackHeader[3]
295#define SharkMQTT_sessionPresent(o) ((o)->recPackHeader[2] & 1)
302#define SharkMQTT_trustInfo(o) ((SharkSslConTrust)(o)->packetLen)
339 const char* address, U16 port,
408 SharkMQTT* o,
const char* topic, U8 qos,
int* maxMsgLen);
420#define SharkMQTT_pub0(o, topic, msg, msgLen) \
421 SharkMQTT_publish(o, topic, msg, msgLen, FALSE, 0)
443 const void* msg,
int msgLen, U8 retain, U8 qos);
451#define SharkMQTT_packetId(o) (o)->recPacketId
464#define SharkMQTT_subAckCode(o) ((U16)(o)->recPackHeader[4])
473#define SharkMQTT_dup(o) (((o)->recPackHeader[0] & 8) ? TRUE : FALSE)
480#define SharkMQTT_QOS(o) (((o)->recPackHeader[0] >> 1) & 3)
487#define SharkMQTT_retain(o) ((o)->recPackHeader[0] & 1)
493#define SharkMQTT_topic(o) ((const char*)((o)->recPackHeader+1))
MqttState
Definition: SharkMQTT.h:45
@ MqttState_SubOrUnsub
Definition: SharkMQTT.h:50
@ MqttState_PubRel
Definition: SharkMQTT.h:48
@ MqttState_PubRec
Definition: SharkMQTT.h:49
@ MqttState_Invalid
Definition: SharkMQTT.h:46
@ MqttState_Pub
Definition: SharkMQTT.h:47
U8 * SharkMQTT_zeroCopyPub(SharkMQTT *o, const char *topic, U8 qos, int *maxMsgLen)
Prepare a zero copy publish by fetching the SharkSSL send buffer pointer and offset the pointer to th...
void SharkMQTT_destructor(SharkMQTT *o)
Terminate a SharkMQTT instance.
void SharkMQTT_constructor(SharkMQTT *o, U8 *buf, U16 bufLen)
Create a SharkMQTT client instance.
int SharkMQTT_unsubscribe(SharkMQTT *o, const char *topic, U16 *packetId)
Requests the broker to unsubscribe the client from a topic.
int SharkMQTT_subscribe(SharkMQTT *o, const char *topic, U8 qos, U16 *packetId)
Subscribe to topic.
void SharkMQTT_disconnect(SharkMQTT *o)
Send a disconnect command to the broker and gracefully close the connection.
int SharkMQTT_getMessage(SharkMQTT *o, U8 **msg)
Wait for messages sent from the broker.
int SharkMQTT_connect(SharkMQTT *o, SharkSslCon *scon, const char *address, U16 port, const char *clientId, MqttCredentials *cred, BaBool cleanSession, MqttWillMsg *wm)
Establish (or re-establish) an MQTT session.
int SharkMQTT_publish(SharkMQTT *o, const char *topic, const void *msg, int msgLen, U8 retain, U8 qos)
Publish messages to a topic.
struct SharkSslCon SharkSslCon
SharkSslCon is an opaque handle returned by function SharkSsl_createCon.
Definition: SharkSSL.h:496
#define SOCKET
Infinite wait time option for socket read functions.
Definition: selib.h:103
Optional credentials used when calling function SharkMQTT_connect.
Definition: SharkMQTT.h:170
const char * username
Optional User Name (utf-8).
Definition: SharkMQTT.h:172
U16 pwdlen
You must provide a password length if 'password' is non NULL.
Definition: SharkMQTT.h:179
const U8 * password
Optional Password (binary).
Definition: SharkMQTT.h:177
MqttInFlightMsg.
Definition: SharkMQTT.h:57
U32 timeStamp
Definition: SharkMQTT.h:59
U16 packetId
Definition: SharkMQTT.h:60
U8 state
Definition: SharkMQTT.h:61
DoubleLink super
Definition: SharkMQTT.h:58
Optional MQTT Will Message; used when calling function SharkMQTT_connect.
Definition: SharkMQTT.h:155
BaBool retain
Specifies if the Will Message is to be Retained when it is published.
Definition: SharkMQTT.h:163
const U8 * message
Definition: SharkMQTT.h:157
U8 qos
Definition: SharkMQTT.h:159
const char * topic
Definition: SharkMQTT.h:156
U16 msgLen
Definition: SharkMQTT.h:158
SharkMQTT structure.
Definition: SharkMQTT.h:187
U32 timeout
Timeout in milliseconds to wait in functions waiting for server data.
Definition: SharkMQTT.h:232
U8 * overflowPtr
Definition: SharkMQTT.h:223
int overflowLen
Definition: SharkMQTT.h:224
S32 pingTmo
Time interval in seconds for MQTT PING messages sent to the server.
Definition: SharkMQTT.h:199
DoubleList sendQueue
Definition: SharkMQTT.h:191
int messageHeaderIx
Definition: SharkMQTT.h:225
S32 pongTmoCounter
Definition: SharkMQTT.h:201
int packetHeaderLen
Definition: SharkMQTT.h:226
U8 * recPackHeader
Definition: SharkMQTT.h:204
U32 packetLen
MQTT packet length.
Definition: SharkMQTT.h:211
U32 bytesRead
Read packet data using SharkMQTT_getMessage until: packetLen-bytesRead == 0.
Definition: SharkMQTT.h:217
SharkSslCon * scon
Definition: SharkMQTT.h:193
SOCKET sock
Definition: SharkMQTT.h:188
U32 msgLen
MQTT message length.
Definition: SharkMQTT.h:221
U32 pingTickTime
Definition: SharkMQTT.h:202
U16 recPacketId
Definition: SharkMQTT.h:234
U8 recQOS
Definition: SharkMQTT.h:235
U16 recPackHeaderLen
Definition: SharkMQTT.h:205
U8 packetFieldsPending
Definition: SharkMQTT.h:227
DoubleList recQueue
Definition: SharkMQTT.h:190
U16 packetId
Definition: SharkMQTT.h:207