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

version 1.3, 2013/05/30 09:18:33 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, 2011, 2012, 2013Copyright 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 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 143  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 170  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 186  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;
   
   
 // -------------------------------------------------------  // -------------------------------------------------------
Line 208  const char *mqtt_GetError(); Line 260  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
  */   */
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 224  void mqtt_msgFree(mqtt_msg_t ** __restrict msg, int al Line 276  void mqtt_msgFree(mqtt_msg_t ** __restrict msg, int al
  * @len = new length   * @len = new length
  * return: -1 error or >-1 old buffer length   * return: -1 error or >-1 old buffer length
  */   */
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   * mqtt_msgDup() - Duplicate message buffer
  *   *
Line 285  char mqtt_sizeLen(unsigned int len); Line 337  char mqtt_sizeLen(unsigned int len);
  */   */
 unsigned int mqtt_pktLen(struct mqtthdr * __restrict hdr);  unsigned int mqtt_pktLen(struct mqtthdr * __restrict hdr);
 /*  /*
 * mqtt_str2subs Create MQTT subscribe variable from string(s) * mqtt_strs2subs Create MQTT subscribe variable from string(s)
  *   *
  * @csStr = null terminated string array   * @csStr = null terminated string array
 * @strnum = copy at most number of strings elements * @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()
  */   */
mqtt_subscr_t *mqtt_str2subs(const char **csStr, unsigned short strnum, mqtt_subscr_t *mqtt_strs2subs(const char **csStr, unsigned short strnum, unsigned char *qoses);
                unsigned char *qoses); 
 /*  /*
  * mqtt_subFree() Free array from subscribe variables   * mqtt_subFree() Free array from subscribe variables
  *   *

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


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