Diff for /libaitmqtt/inc/aitmqtt.h between versions 1.1.1.1.2.6 and 1.3.4.6

version 1.1.1.1.2.6, 2012/02/04 10:40:01 version 1.3.4.6, 2022/09/13 20:12:15
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011Copyright 2004 - 2022
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 49  SUCH DAMAGE. Line 49  SUCH DAMAGE.
   
 #define MAX_CONNID              24  #define MAX_CONNID              24
 #define MAX_CRED                13  #define MAX_CRED                13
#define MQTTMSG_MAX             65529#define MQTTMSG_MAX             65535
 #define MQTTMSG_BIN_MAX         65535
 #define MQTT_DATA_MAX           268435455  #define MQTT_DATA_MAX           268435455
   
 #define MQTT_PROTO_VER          3  #define MQTT_PROTO_VER          3
   #define MQTT_PROTO_DEFVER       5
 #define MQTT_KEEPALIVE          10  #define MQTT_KEEPALIVE          10
 #define MQTT_DEFAULT_MSGID      0xDEBA  #define MQTT_DEFAULT_MSGID      0xDEBA
   
Line 69  struct mqtthdr { Line 71  struct mqtthdr {
                 unsigned char           val;                  unsigned char           val;
         } mqtt_msg;          } mqtt_msg;
         unsigned char                   mqtt_len[1];    /* may be grow to 4 bytes */          unsigned char                   mqtt_len[1];    /* may be grow to 4 bytes */
} __packed;} __attribute__((packed));
#define MQTTHDR_MSGINIT(x)      (assert((x)), (x)->mqtt_msg.val ^= (x)->mqtt_msg.val)#define MQTTHDR_MSGINIT(x)      (assert((x)), (x)->mqtt_msg.val ^= (x)->mqtt_msg.val, *(x)->mqtt_len = 0)
 #define MQTTHDR_DATA_SIZEOF(x)  (assert((x)), mqtt_decodeLen((x)->mqtt_len, NULL))
   
 #define MQTT_TYPE_UNKNOWN       0       /* reserved */  #define MQTT_TYPE_UNKNOWN       0       /* reserved */
#define MQTT_TYPE_CONNECT       1       /* client request to connect to server */#define MQTT_TYPE_CONNECT       1       /* client request to connect to server (CLI) */
#define MQTT_TYPE_CONNACK       2       /* connect acknowledgment */#define MQTT_TYPE_CONNACK       2       /* connect acknowledgment (SRV) [ret_no_data] */
#define MQTT_TYPE_PUBLISH       3       /* publish message */#define MQTT_TYPE_PUBLISH       3       /* publish message [ret_is_optional] */
#define MQTT_TYPE_PUBACK        4       /* publish acknowledgment */#define MQTT_TYPE_PUBACK        4       /* publish acknowledgment [ret_no_data] */
#define MQTT_TYPE_PUBREC        5       /* publish received (assured delivery part 1) */#define MQTT_TYPE_PUBREC        5       /* publish received (assured delivery part 1) [ret_no_data] */
#define MQTT_TYPE_PUBREL        6       /* publish release (assured delivery part 2) */#define MQTT_TYPE_PUBREL        6       /* publish release (assured delivery part 2) [ret_no_data] */
#define MQTT_TYPE_PUBCOMP       7       /* publish complete (assured delivery part 3) */#define MQTT_TYPE_PUBCOMP       7       /* publish complete (assured delivery part 3) [ret_no_data] */
#define MQTT_TYPE_SUBSCRIBE     8       /* client subscribe request */#define MQTT_TYPE_SUBSCRIBE     8       /* client subscribe request (CLI) */
#define MQTT_TYPE_SUBACK        9       /* subscribe acknowledgment */#define MQTT_TYPE_SUBACK        9       /* subscribe acknowledgment (SRV) */
#define MQTT_TYPE_UNSUBSCRIBE   10      /* client unsubscribe request */#define MQTT_TYPE_UNSUBSCRIBE   10      /* client unsubscribe request (CLI) */
#define MQTT_TYPE_UNSUBACK      11      /* unsubscribe acknowledgment */#define MQTT_TYPE_UNSUBACK      11      /* unsubscribe acknowledgment (SRV) */
#define MQTT_TYPE_PINGREQ       12      /* PING request */#define MQTT_TYPE_PINGREQ       12      /* PING request (CLI) [ret_no_data] */
#define MQTT_TYPE_PINGRESP      13      /* PING response */#define MQTT_TYPE_PINGRESP      13      /* PING response (SRV) [ret_no_data] */
#define MQTT_TYPE_DISCONNECT    14      /* client is disconnecting */#define MQTT_TYPE_DISCONNECT    14      /* client is disconnecting [ret_no_data] */
#define MQTT_TYPE_MAX                15      /* reserved */#define MQTT_TYPE_AUTH                15      /* authentication exchange [ret_no_data] */
   
   #define MQTT_TYPE_MAX           15
   
 #define MQTT_FLAG_DUP           1       /* This flag is set when the client or server attempts to re-deliver   #define MQTT_FLAG_DUP           1       /* This flag is set when the client or server attempts to re-deliver 
                                            a PUBLISH, PUBREL, SUBSCRIBE or UNSUBSCRIBE message.                                              a PUBLISH, PUBREL, SUBSCRIBE or UNSUBSCRIBE message. 
                                            This applies to messages where the value of QoS is greater than                                              This applies to messages where the value of QoS is greater than 
Line 104  struct mqtthdr { Line 109  struct mqtthdr {
 #define MQTT_QOS_EXACTLY        2       /* Exactly once, Assured delivery, =1 */  #define MQTT_QOS_EXACTLY        2       /* Exactly once, Assured delivery, =1 */
 #define MQTT_QOS_RESERVED       3       /* reserved */  #define MQTT_QOS_RESERVED       3       /* reserved */
   
   #define MQTT_QOS_DENY           0       /* Not granted QoS for SUBACK */
   #define MQTT_QOS_PASS           2       /* Granted QoS for SUBACK */
   
 #define MQTT_FLAG_RETAIN        1       /* This flag is only used on PUBLISH messages.  #define MQTT_FLAG_RETAIN        1       /* This flag is only used on PUBLISH messages.
   
                                            When a client sends a PUBLISH to a server,                                              When a client sends a PUBLISH to a server, 
Line 139  struct mqtthdr { Line 147  struct mqtthdr {
 #define MQTT_RETCODE_REFUSE_USERPASS    4  #define MQTT_RETCODE_REFUSE_USERPASS    4
 #define MQTT_RETCODE_DENIED             5  #define MQTT_RETCODE_DENIED             5
   
   /* REASON CODES */
   
   #define MQTT_REASON_OK                  0x0     /* CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, UNSUBACK, AUTH, DISCONNECT, SUBACK */
   #define MQTT_REASON_QOS1                0x1     /* SUBACK */
   #define MQTT_REASON_QOS2                0x2     /* SUBACK */
   #define MQTT_REASON_DWILL               0x4     /* DISCONNECT */
   #define MQTT_REASON_NOMATCH             0x10    /* PUBACK, PUBREC */
   #define MQTT_REASON_NOSUBEXIST          0x11    /* UNSUBACK */
   #define MQTT_REASON_CONTAUTH            0x18    /* AUTH */
   #define MQTT_REASON_REAUTH              0x19    /* AUTH */
   
   /* REASON ERROR CODES */
   
   #define MQTT_REASON_ERROR               0x80    /* CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT */
   #define MQTT_REASON_MALFORMPKT          0x81    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_PROTOERR            0x82    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_IMPLSPECERR         0x83    /* CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT */
   #define MQTT_REASON_UNSUPVERPROTO       0x84    /* CONNACK */
   #define MQTT_REASON_CLINOVALID          0x85    /* CONNACK */
   #define MQTT_REASON_BADUSERPASS         0x86    /* CONNACK */
   #define MQTT_REASON_NOAUTH              0x87    /* CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT */
   #define MQTT_REASON_SRVUNAVAIL          0x88    /* CONNACK */
   #define MQTT_REASON_SRVBUSY             0x89    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_BANNED              0x8A    /* CONNACK */
   #define MQTT_REASON_SRVSHUTDOWN         0x8B    /* DISCONNECT */
   #define MQTT_REASON_BADAUTHMETHOD       0x8C    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_KEEPALIVETO         0x8D    /* DISCONNECT */
   #define MQTT_REASON_SESTAKEOVER         0x8E    /* DISCONNECT */
   #define MQTT_REASON_TOPICFLTINVAL       0x8F    /* SUBACK, UNSUBACK, DISCONNECT */
   #define MQTT_REASON_TOPICNAMEINV        0x90    /* CONNACK, PUBACK, PUBREC, DISCONNECT */
   #define MQTT_REASON_PKTIDINUSE          0x91    /* PUBACK, PUBREC, SUBACK, UNSUBACK */
   #define MQTT_REASON_PKTIDNOTFOUND       0x92    /* PUBREL, PUBCOMP */
   #define MQTT_REASON_RCVMAXEXCEED        0x93    /* DISCONNECT */
   #define MQTT_REASON_TOPICALIASINV       0x94    /* DISCONNECT */
   #define MQTT_REASON_PKTTOOLARGE         0x95    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_MSGRATETOHIGH       0x96    /* DISCONNECT */
   #define MQTT_REASON_QUOTAEXCEED         0x97    /* CONNACK, PUBACK, PUBREC, SUBACK, DISCONNECT */
   #define MQTT_REASON_ADMINACTION         0x98    /* DISCONNECT */
   #define MQTT_REASON_PAYLOADFMTINV       0x99    /* CONNACK, PUBACK, PUBREC, DISCONNECT */
   #define MQTT_REASON_RETAINNOTSUP        0x9A    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_QOSNOTSUP           0x9B    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_USENEXTSRV          0x9C    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_SRVMOVED            0x9D    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_SHARSUBNOTSUP       0x9E    /* SUBACK, DISCONNECT */
   #define MQTT_REASON_CONRATEEXCEED       0x9F    /* CONNACK, DISCONNECT */
   #define MQTT_REASON_MAXCONNTIME         0xA0    /* DISCONNECT */
   #define MQTT_REASON_SUBIDNOTSUP         0xA1    /* SUBACK, DISCONNECT */
   #define MQTT_RESON_WILDSUBNOTSUP        0xA2    /* SUBACK, DISCONNECT */
   
 /* MQTT Message buffer */  /* MQTT Message buffer */
   
 typedef struct {  typedef struct {
         void            *msg_base;          void            *msg_base;
        unsigned short       msg_len;        unsigned int       msg_len;
 } mqtt_msg_t;  } mqtt_msg_t;
   
 /* MQTT structures */  /* MQTT structures */
Line 166  typedef struct { Line 222  typedef struct {
 typedef struct {  typedef struct {
         mqtt_len_t      var_sb;          mqtt_len_t      var_sb;
         unsigned char   var_data[0];          unsigned char   var_data[0];
} __packed mqtthdr_var_t;} __attribute__((packed)) mqtthdr_var_t;
 #define MQTTHDR_VAR_SIZEOF(x)           (assert((x)), sizeof(mqtt_len_t) + ntohs((x)->var_sb.val))  #define MQTTHDR_VAR_SIZEOF(x)           (assert((x)), sizeof(mqtt_len_t) + ntohs((x)->var_sb.val))
   
 typedef unsigned char mqtthdr_protover_t;  typedef unsigned char mqtthdr_protover_t;
Line 182  typedef union { Line 238  typedef union {
                                 username:1;                                  username:1;
         };          };
         unsigned char           flags;          unsigned char           flags;
} __packed mqtthdr_connflgs_t;} __attribute__((packed)) mqtthdr_connflgs_t;
   
 typedef struct {  typedef struct {
         unsigned char   reserved;          unsigned char   reserved;
         unsigned char   retcode;          unsigned char   retcode;
} __packed mqtthdr_connack_t;} __attribute__((packed)) mqtthdr_connack_t;
   
   
 // -------------------------------------------------------  // -------------------------------------------------------
 // mqtt_GetErrno() Get error code of last operation  // mqtt_GetErrno() Get error code of last operation
inline int mqtt_GetErrno();int mqtt_GetErrno();
 // mqtt_GetError() Get error text of last operation  // mqtt_GetError() Get error text of last operation
inline const char *mqtt_GetError();const char *mqtt_GetError();
 // -------------------------------------------------------  // -------------------------------------------------------
   
   
Line 204  inline const char *mqtt_GetError(); Line 260  inline const char *mqtt_GetError();
  * @len = >0 Allocate buffer with length   * @len = >0 Allocate buffer with length
  * return: NULL error or Message, after use must call mqtt_msgFree() with all!=0   * return: NULL error or Message, after use must call mqtt_msgFree() with all!=0
  */   */
inline mqtt_msg_t *mqtt_msgAlloc(unsigned short len);mqtt_msg_t *mqtt_msgAlloc(unsigned int len);
 /*  /*
  * mqtt_msgFree() Free MQTT message   * mqtt_msgFree() Free MQTT message
  *   *
Line 212  inline mqtt_msg_t *mqtt_msgAlloc(unsigned short len); Line 268  inline mqtt_msg_t *mqtt_msgAlloc(unsigned short len);
  * @all = !=0 Destroy entire message, if MQTT Message allocated with mqtt_msgAlloc()   * @all = !=0 Destroy entire message, if MQTT Message allocated with mqtt_msgAlloc()
  * return: none   * return: none
  */   */
inline void mqtt_msgFree(mqtt_msg_t ** __restrict msg, int all);void mqtt_msgFree(mqtt_msg_t ** __restrict msg, int all);
 /*  /*
  * mqtt_msgRealloc() Reallocate MQTT message buffer   * mqtt_msgRealloc() Reallocate MQTT message buffer
  *   *
Line 220  inline void mqtt_msgFree(mqtt_msg_t ** __restrict msg, Line 276  inline void mqtt_msgFree(mqtt_msg_t ** __restrict msg,
  * @len = new length   * @len = new length
  * return: -1 error or >-1 old buffer length   * return: -1 error or >-1 old buffer length
  */   */
inline int mqtt_msgRealloc(mqtt_msg_t * __restrict msg, unsigned short len);int mqtt_msgRealloc(mqtt_msg_t * __restrict msg, unsigned int len);
 /*
  * mqtt_msgDup() - Duplicate message buffer
  *
  * @msg = Message
  * return: NULL error or !=NULL duplicated message, after use must call mqtt_msgFree() with all!=0
  */
 mqtt_msg_t *mqtt_msgDup(mqtt_msg_t * __restrict msg);
   
 /*  /*
  * mqtt_expandTopic() - Expanding topic to regular expression   * mqtt_expandTopic() - Expanding topic to regular expression
Line 250  int mqtt_sqlTopic(const char *csInput, char * __restri Line 313  int mqtt_sqlTopic(const char *csInput, char * __restri
  * @num = number for encode   * @num = number for encode
  * return: -1 error or >-1 length   * return: -1 error or >-1 length
  */   */
inline unsigned int mqtt_encodeLen(unsigned int num);unsigned int mqtt_encodeLen(unsigned int num);
 /*  /*
  * mqtt_decodeLen() Decode length from MQTT packet   * mqtt_decodeLen() Decode length from MQTT packet
  *   *
Line 258  inline unsigned int mqtt_encodeLen(unsigned int num); Line 321  inline unsigned int mqtt_encodeLen(unsigned int num);
  * @n = sizeof bytes, if !=NULL   * @n = sizeof bytes, if !=NULL
  * return: -1 error, >-1 length of message   * return: -1 error, >-1 length of message
  */   */
inline unsigned int mqtt_decodeLen(void * __restrict len, int * __restrict n);unsigned int mqtt_decodeLen(void * __restrict len, int * __restrict n);
 /*  /*
  * mqtt_sizeLen Return sizeof len field   * mqtt_sizeLen Return sizeof len field
  *   *
  * @len = length   * @len = length
  * return: -1 error, >-1 sizeof len in bytes   * return: -1 error, >-1 sizeof len in bytes
  */   */
inline char mqtt_sizeLen(unsigned int len);char mqtt_sizeLen(unsigned int len);
 /*  /*
 * mqtt_str2sub Create MQTT subscribe variable from string(s) * mqtt_pktLen() - Get total packet length
  *   *
 * @csStr = strings * @hdr = MQTT packet header
 * @strnum = number of strings elements * return: packet length
  */
 unsigned int mqtt_pktLen(struct mqtthdr * __restrict hdr);
 /*
  * mqtt_strs2subs Create MQTT subscribe variable from string(s)
  *
  * @csStr = null terminated string array
  * @strnum = copy at most number of strings elements, ==0 till NULL element
  * @qoses = QoS elements applied to subscribe variable,    * @qoses = QoS elements applied to subscribe variable, 
  *              count of elements must be equal with csStr elements   *              count of elements must be equal with csStr elements
  * return: NULL error or != subscribe variables array, must be free after use with mqtt_freeSub()   * return: NULL error or != subscribe variables array, must be free after use with mqtt_freeSub()
  */   */
inline mqtt_subscr_t *mqtt_str2sub(const char **csStr, unsigned short strnum, unsigned char *qoses);mqtt_subscr_t *mqtt_strs2subs(const char **csStr, unsigned short strnum, unsigned char *qoses);
 /*  /*
  * mqtt_subFree() Free array from subscribe variables   * mqtt_subFree() Free array from subscribe variables
  *   *
  * @subs = Subscribe variables   * @subs = Subscribe variables
  * return: none   * return: none
  */   */
inline void mqtt_subFree(mqtt_subscr_t ** __restrict subs);void mqtt_subFree(mqtt_subscr_t ** __restrict subs);
 /*  /*
  * mqtt_subAlloc() Create array from subscribe variables   * mqtt_subAlloc() Create array from subscribe variables
  *   *
  * @num = Number of elements   * @num = Number of elements
  * return: NULL error or subscribe array, after use must call mqtt_subFree()   * return: NULL error or subscribe array, after use must call mqtt_subFree()
  */   */
inline mqtt_subscr_t *mqtt_subAlloc(unsigned short num);mqtt_subscr_t *mqtt_subAlloc(unsigned short num);
 /*  /*
  * mqtt_subRealloc() Reallocate array from subscribe variables   * mqtt_subRealloc() Reallocate array from subscribe variables
  *   *
Line 297  inline mqtt_subscr_t *mqtt_subAlloc(unsigned short num Line 367  inline mqtt_subscr_t *mqtt_subAlloc(unsigned short num
  * @num = Number of elements   * @num = Number of elements
  * return: NULL error or subscribe array, after use must call mqtt_subFree()   * return: NULL error or subscribe array, after use must call mqtt_subFree()
  */   */
inline mqtt_subscr_t *mqtt_subRealloc(mqtt_subscr_t * __restrict subs, unsigned short num);mqtt_subscr_t *mqtt_subRealloc(mqtt_subscr_t ** __restrict subs, unsigned short num);
 /*
  * mqtt_subCopy() - Copy subscription structure to another one
  *
  * @dst = destination subscription
  * @src = source subscription
  * return: =NULL error or !=NULL successful copied a structure
  */
 mqtt_subscr_t *mqtt_subCopy(mqtt_subscr_t * __restrict dst, mqtt_subscr_t * __restrict src);
   
   
 /*** SENDER FUNCTIONS ***/  /*** SENDER FUNCTIONS ***/
Line 307  inline mqtt_subscr_t *mqtt_subRealloc(mqtt_subscr_t *  Line 385  inline mqtt_subscr_t *mqtt_subRealloc(mqtt_subscr_t * 
  *   *
  * @buf = Message buffer   * @buf = Message buffer
  * @csConnID = ConnectID   * @csConnID = ConnectID
 * @kasec = Keep alive timeout * @kasec = Keep alive timeout, if =0 default timeout for MQTT
  * @csUser = Username if !=NULL   * @csUser = Username if !=NULL
  * @csPass = Password for Username, only if csUser is set   * @csPass = Password for Username, only if csUser is set
  * @csWillTopic = Will Topic if !=NULL Will Flags set into message   * @csWillTopic = Will Topic if !=NULL Will Flags set into message
Line 374  int mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const Line 452  int mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const
  * @msgID = MessageID   * @msgID = MessageID
  * return: -1 error or >-1 message size for send   * return: -1 error or >-1 message size for send
  */   */
inline int mqtt_msgPUBACK(mqtt_msg_t * __restrict buf, unsigned short msgID);int mqtt_msgPUBACK(mqtt_msg_t * __restrict buf, unsigned short msgID);
 /*  /*
  * mqtt_msgPUBREC() Create PUBREC message   * mqtt_msgPUBREC() Create PUBREC message
  *   *
Line 382  inline int mqtt_msgPUBACK(mqtt_msg_t * __restrict buf, Line 460  inline int mqtt_msgPUBACK(mqtt_msg_t * __restrict buf,
  * @msgID = MessageID   * @msgID = MessageID
  * return: -1 error or >-1 message size for send   * return: -1 error or >-1 message size for send
  */   */
inline int mqtt_msgPUBREC(mqtt_msg_t * __restrict buf, unsigned short msgID);int mqtt_msgPUBREC(mqtt_msg_t * __restrict buf, unsigned short msgID);
 /*  /*
  * mqtt_msgPUBREL() Create PUBREL message   * mqtt_msgPUBREL() Create PUBREL message
  *   *
Line 390  inline int mqtt_msgPUBREC(mqtt_msg_t * __restrict buf, Line 468  inline int mqtt_msgPUBREC(mqtt_msg_t * __restrict buf,
  * @msgID = MessageID   * @msgID = MessageID
  * return: -1 error or >-1 message size for send   * return: -1 error or >-1 message size for send
  */   */
inline int mqtt_msgPUBREL(mqtt_msg_t * __restrict buf, unsigned short msgID);int mqtt_msgPUBREL(mqtt_msg_t * __restrict buf, unsigned short msgID);
 /*  /*
  * mqtt_msgPUBCOMP() Create PUBCOMP message   * mqtt_msgPUBCOMP() Create PUBCOMP message
  *   *
Line 398  inline int mqtt_msgPUBREL(mqtt_msg_t * __restrict buf, Line 476  inline int mqtt_msgPUBREL(mqtt_msg_t * __restrict buf,
  * @msgID = MessageID   * @msgID = MessageID
  * return: -1 error or >-1 message size for send   * return: -1 error or >-1 message size for send
  */   */
inline int mqtt_msgPUBCOMP(mqtt_msg_t * __restrict buf, unsigned short msgID);int mqtt_msgPUBCOMP(mqtt_msg_t * __restrict buf, unsigned short msgID);
   
 /*  /*
  * mqtt_msgSUBSCRIBE() Create SUBSCRIBE message   * mqtt_msgSUBSCRIBE() Create SUBSCRIBE message
Line 503  int mqtt_readPINGRESP(mqtt_msg_t * __restrict buf); Line 581  int mqtt_readPINGRESP(mqtt_msg_t * __restrict buf);
  * @psTopic = Topic   * @psTopic = Topic
  * @topicLen = Topic length   * @topicLen = Topic length
  * @msgID = MessageID   * @msgID = MessageID
 * @pData = Data buffer * @pData = Data buffer, may be NULL
 * @datLen = Data buffer length, if *datLen == 0 allocate memory for pData * return: -1 error or !=-1 allocated data buffer length
 * return: NULL error or !=NULL MQTT fixed header 
  */   */
struct mqtthdr *mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * __restrict psTopic, int mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * __restrict psTopic, 
                int topicLen, unsigned short *msgID, void * __restrict pData, int *datLen);                int topicLen, unsigned short *msgID, void ** __restrict pData);
 /*  /*
  * mqtt_readPUBACK() Read PUBACK message   * mqtt_readPUBACK() Read PUBACK message
  *   *
Line 544  unsigned short mqtt_readPUBCOMP(mqtt_msg_t * __restric Line 621  unsigned short mqtt_readPUBCOMP(mqtt_msg_t * __restric
  * @buf = Message buffer   * @buf = Message buffer
  * @msgID = MessageID   * @msgID = MessageID
  * @subscr = Subscriptions, must be free after use with mqtt_subFree()   * @subscr = Subscriptions, must be free after use with mqtt_subFree()
 * return: NULL error or !=NULL MQTT fixed header * return: -1 error or >-1 elements into subscr
  */   */
struct mqtthdr *mqtt_readSUBSCRIBE(mqtt_msg_t * __restrict buf, unsigned short *msgID, int mqtt_readSUBSCRIBE(mqtt_msg_t * __restrict buf, unsigned short *msgID, 
                 mqtt_subscr_t **subscr);                  mqtt_subscr_t **subscr);
 /*  /*
  * mqtt_readSUBACK() Read SUBACK message   * mqtt_readSUBACK() Read SUBACK message
Line 563  int mqtt_readSUBACK(mqtt_msg_t * __restrict buf, unsig Line 640  int mqtt_readSUBACK(mqtt_msg_t * __restrict buf, unsig
  * @buf = Message buffer   * @buf = Message buffer
  * @msgID = MessageID   * @msgID = MessageID
  * @subscr = Subscriptions, must be free after use with mqtt_subFree()   * @subscr = Subscriptions, must be free after use with mqtt_subFree()
 * return: NULL error or !=NULL MQTT fixed header * return: -1 error or >-1 elements into subscr
  */   */
struct mqtthdr *mqtt_readUNSUBSCRIBE(mqtt_msg_t * __restrict buf, unsigned short *msgID, int mqtt_readUNSUBSCRIBE(mqtt_msg_t * __restrict buf, unsigned short *msgID, 
                 mqtt_subscr_t **subscr);                  mqtt_subscr_t **subscr);
 /*  /*
  * mqtt_readUNSUBACK() Read UNSUBACK message   * mqtt_readUNSUBACK() Read UNSUBACK message

Removed from v.1.1.1.1.2.6  
changed lines
  Added in v.1.3.4.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>