Diff for /mqtt/inc/Attic/aitmqtt.h between versions 1.1.1.1.2.7 and 1.1.1.1.2.29

version 1.1.1.1.2.7, 2011/11/21 12:47:15 version 1.1.1.1.2.29, 2011/12/06 10:33:37
Line 2 Line 2
 #define __AITMQTT_H  #define __AITMQTT_H
   
   
 #define MQTT_DATA_MAX           268435455  
 #define MQTT_CONN_STR           "MQIsdp"  
 #define MQTT_PROTO_VER          3  
 #define MQTT_KEEPALIVE          10  
   
 /* FIXED HEADER */  /* FIXED HEADER */
   
 struct mqtthdr {  struct mqtthdr {
        struct {        union {
                unsigned char   retain:1,                 struct {
                                qos:2,                        unsigned char   retain:1, 
                                dup:1,                                        qos:2,
                                type:4;                                        dup:1,
                                         type:4;
                 };
                 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;  } __packed;
   #define MQTTHDR_MSGINIT(x)      (assert((x)), (x)->mqtt_msg.val ^= (x)->mqtt_msg.val)
   
 #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 */
Line 34  struct mqtthdr { Line 33  struct mqtthdr {
 #define MQTT_TYPE_PINGREQ       12      /* PING request */  #define MQTT_TYPE_PINGREQ       12      /* PING request */
 #define MQTT_TYPE_PINGRESP      13      /* PING response */  #define MQTT_TYPE_PINGRESP      13      /* PING response */
 #define MQTT_TYPE_DISCONNECT    14      /* client is disconnecting */  #define MQTT_TYPE_DISCONNECT    14      /* client is disconnecting */
#define MQTT_TYPE_RESERVED        15      /* reserved */#define MQTT_TYPE_MAX             15      /* reserved */
   
 #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. 
Line 96  typedef union { Line 95  typedef union {
 } mqtt_v_t;  } mqtt_v_t;
   
 typedef struct {  typedef struct {
           unsigned char   sub_ret;
           struct __sbuf   sub_topic;
           struct __sbuf   sub_value;
   } mqtt_subscr_t;
   
   typedef struct {
         mqtt_v_t        var_sb;          mqtt_v_t        var_sb;
         unsigned char   var_data[0];          unsigned char   var_data[0];
 } __packed mqtthdr_var_t;  } __packed mqtthdr_var_t;
 #define MQTTHDR_VAR_SIZEOF(x)           (assert((x)), sizeof(mqtt_v_t) + ntohs((x)->var_sb.val))  #define MQTTHDR_VAR_SIZEOF(x)           (assert((x)), sizeof(mqtt_v_t) + ntohs((x)->var_sb.val))
   
 typedef unsigned char mqtthdr_protover_t;  typedef unsigned char mqtthdr_protover_t;
 typedef unsigned char mqtthdr_retcode_t;  
   
 typedef struct {  typedef struct {
         unsigned char   reserved:1,          unsigned char   reserved:1,
Line 127  typedef struct { Line 131  typedef struct {
         unsigned short  msg_len;          unsigned short  msg_len;
 } mqtt_msg_t;  } mqtt_msg_t;
   
   /* MQTT dispatcher callbacks */
   
   typedef int (*mqtt_cb_t)(void *);
   
   
 // -------------------------------------------------------  // -------------------------------------------------------
 // mqtt_GetErrno() Get error code of last operation  // mqtt_GetErrno() Get error code of last operation
 inline int mqtt_GetErrno();  inline int mqtt_GetErrno();
Line 138  inline const char *mqtt_GetError(); Line 146  inline const char *mqtt_GetError();
   
 /*  /*
  * mqtt_msgAlloc() Allocate memory for MQTT Message   * mqtt_msgAlloc() Allocate memory for MQTT Message
    *
  * @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);  inline mqtt_msg_t *mqtt_msgAlloc(unsigned short len);
 /*  /*
  * mqtt_msgFree() Free MQTT message   * mqtt_msgFree() Free MQTT message
    *
  * @msg = Message buffer   * @msg = Message buffer
  * @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
Line 151  inline mqtt_msg_t *mqtt_msgAlloc(unsigned short len); Line 161  inline mqtt_msg_t *mqtt_msgAlloc(unsigned short len);
 inline void mqtt_msgFree(mqtt_msg_t ** __restrict msg, int all);  inline void mqtt_msgFree(mqtt_msg_t ** __restrict msg, int all);
 /*  /*
  * mqtt_msgRealloc() Reallocate MQTT message buffer   * mqtt_msgRealloc() Reallocate MQTT message buffer
    *
  * @msg = MQTT message   * @msg = MQTT message
  * @len = new length   * @len = new length
  * return: -1 error or >-1 old buffer length   * return: -1 error or >-1 old buffer length
Line 159  inline int mqtt_msgRealloc(mqtt_msg_t * __restrict msg Line 170  inline int mqtt_msgRealloc(mqtt_msg_t * __restrict msg
   
 /*  /*
  * mqtt_encodeLen() Encode number to MQTT length field   * mqtt_encodeLen() Encode number to MQTT length field
    *
  * @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);  inline unsigned int mqtt_encodeLen(unsigned int num);
 /*  /*
  * mqtt_decodeLen() Decode length from MQTT packet   * mqtt_decodeLen() Decode length from MQTT packet
 * @len = length *
  * @len = length from MQTT header
  * @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(unsigned int len, char *n);inline 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);  inline char mqtt_sizeLen(unsigned int len);
 /*  /*
 * mqtt_str2var Create MQTT variable from string * mqtt_str2sub Create MQTT subscribe variable from string(s)
 * @csStr = string *
 * @strLen = string length * @csStr = strings
 * return: NULL error or != ok variable, must be free after use! * @strnum = number of strings elements
  * @qoses = QoS elements applied to subscribe variable, 
  *              count of elements must be equal with csStr elements
  * return: NULL error or != subscribe variables array, must be free after use with mqtt_freeSub()
  */   */
inline mqtthdr_var_t *mqtt_str2var(const unsigned char *csStr, unsigned short strLen);inline mqtt_subscr_t *mqtt_str2sub(const char **csStr, unsigned short strnum, unsigned char *qoses);
 /*
  * mqtt_subFree() Free array from subscribe variables
  *
  * @subs = Subscribe variables
  * return: none
  */
 inline void mqtt_subFree(mqtt_subscr_t ** __restrict subs);
 /*
  * mqtt_subAlloc() Create array from subscribe variables
  *
  * @num = Number of elements
  * return: NULL error or subscribe array, after use must call mqtt_subFree()
  */
 inline mqtt_subscr_t *mqtt_subAlloc(unsigned short num);
 /*
  * mqtt_subRealloc() Reallocate array from subscribe variables
  *
  * @subs = Subscribe array
  * @num = Number of elements
  * 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);
   
   
   /*** SENDER FUNCTIONS ***/
   
 /*  /*
  * mqtt_msgCONNECT() Create CONNECT message   * mqtt_msgCONNECT() Create CONNECT message
  *   *
Line 201  inline mqtthdr_var_t *mqtt_str2var(const unsigned char Line 243  inline mqtthdr_var_t *mqtt_str2var(const unsigned char
 int mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const char *csConnID,   int mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const char *csConnID, 
                 const char *csUser, const char *csPass,                   const char *csUser, const char *csPass, 
                 const char *csWillTopic, const char *csWillMessage,                   const char *csWillTopic, const char *csWillMessage, 
                char ClrSess, char WillQOS, char WillRetain);                unsigned char ClrSess, unsigned char WillQOS, unsigned char WillRetain);
 /*  /*
  * mqtt_msgCONNACK() Create CONNACK message   * mqtt_msgCONNACK() Create CONNACK message
  *   *
Line 209  int mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const Line 251  int mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const
  * @retcode = Return code   * @retcode = Return code
  * return: -1 error or >-1 message size for send   * return: -1 error or >-1 message size for send
  */   */
int mqtt_msgCONNACK(mqtt_msg_t * __restrict buf, u_char retcode);int mqtt_msgCONNACK(mqtt_msg_t * __restrict buf, unsigned char retcode);
 /*
  * mqtt_msgDISCONNECT() Create DISCONNECT message
  *
  * @buf = Message buffer
  * return: -1 error or >-1 message size for send
  */
 int mqtt_msgDISCONNECT(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_msgPINGREQ() Create PINGREQ message
  *
  * @buf = Message buffer
  * return: -1 error or >-1 message size for send
  */
 int mqtt_msgPINGREQ(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_msgPINGRESP() Create PINGRESP message
  *
  * @buf = Message buffer
  * return: -1 error or >-1 message size for send
  */
 int mqtt_msgPINGRESP(mqtt_msg_t * __restrict buf);
 
 /*
  * mqtt_msgPUBLISH() Create PUBLISH message
  *
  * @buf = Message buffer
  * @csTopic = Publish topic
  * @msgID = MessageID >0, if QOS != MQTT_QOS_ONCE
  * @Dup = Duplicate message
  * @QOS = QoS
  * @Retain = Retain message
  * @pData = Publish data into topic
  * @datlen = Publish data length
  * return: -1 error or >-1 message size for send
  */
 int mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const char *csTopic, 
                 unsigned short msgID, unsigned char Dup, unsigned char QOS, 
                 unsigned char Retain, const void *pData, int datlen);
 /*
  * mqtt_msgPUBACK() Create PUBACK message
  *
  * @buf = Message buffer
  * @msgID = MessageID
  * return: -1 error or >-1 message size for send
  */
 inline int mqtt_msgPUBACK(mqtt_msg_t * __restrict buf, unsigned short msgID);
 /*
  * mqtt_msgPUBREC() Create PUBREC message
  *
  * @buf = Message buffer
  * @msgID = MessageID
  * return: -1 error or >-1 message size for send
  */
 inline int mqtt_msgPUBREC(mqtt_msg_t * __restrict buf, unsigned short msgID);
 /*
  * mqtt_msgPUBREL() Create PUBREL message
  *
  * @buf = Message buffer
  * @msgID = MessageID
  * return: -1 error or >-1 message size for send
  */
 inline int mqtt_msgPUBREL(mqtt_msg_t * __restrict buf, unsigned short msgID);
 /*
  * mqtt_msgPUBCOMP() Create PUBCOMP message
  *
  * @buf = Message buffer
  * @msgID = MessageID
  * return: -1 error or >-1 message size for send
  */
 inline int mqtt_msgPUBCOMP(mqtt_msg_t * __restrict buf, unsigned short msgID);
 
 /*
  * mqtt_msgSUBSCRIBE() Create SUBSCRIBE message
  *
  * @buf = Message buffer
  * @Topics = MQTT subscription topics
  * @msgID = MessageID
  * @Dup = Duplicate message
  * @QOS = QoS
  * return: -1 error or >-1 message size for send
  */
 int
 mqtt_msgSUBSCRIBE(mqtt_msg_t * __restrict buf, mqtt_subscr_t * __restrict Topics, 
                 unsigned short msgID, unsigned char Dup, unsigned char QOS);
 /*
  * mqtt_msgSUBACK() Create SUBACK message
  *
  * @buf = Message buffer
  * @Topics = MQTT subscription topics
  * @msgID = MessageID
  * return: -1 error or >-1 message size for send
  */
 int mqtt_msgSUBACK(mqtt_msg_t * __restrict buf, mqtt_subscr_t * __restrict Topics, 
                 unsigned short msgID);
 /*
  * mqtt_msgUNSUBSCRIBE() Create UNSUBSCRIBE message
  *
  * @buf = Message buffer
  * @Topics = MQTT subscription topics
  * @msgID = MessageID
  * @Dup = Duplicate message
  * @QOS = QoS
  * return: -1 error or >-1 message size for send
  */
 int
 mqtt_msgUNSUBSCRIBE(mqtt_msg_t * __restrict buf, mqtt_subscr_t * __restrict Topics, 
                 unsigned short msgID, unsigned char Dup, unsigned char QOS);
 /*
  * mqtt_msgUNSUBACK() Create UNSUBACK message
  *
  * @buf = Message buffer
  * @msgID = MessageID
  * return: -1 error or >-1 message size for send
  */
 int mqtt_msgUNSUBACK(mqtt_msg_t * __restrict buf, unsigned short msgID);
 
 
 /*** RECEIVER FUNCTIONS ***/
 
 /*
  * mqtt_readCONNECT() Read elements from CONNECT message
  *
  * @buf = Message buffer
  * @kasec = Keep Alive in seconds for current connection
  * @psConnID = ConnectID
  * @connLen = ConnectID length
  * @psUser = Username if !=NULL
  * @userLen = Username length
  * @psPass = Password for Username, only if csUser is set
  * @passLen = Password length
  * @psWillTopic = Will Topic if !=NULL Will Flags set into message
  * @topicLen = Will Topic length
  * @psWillMessage = Will Message, may be NULL
  * @msgLen = Will Message length
  * return: .reserved == 1 is error or == 0 connection flags & msg ok
  */
 mqtthdr_connflgs_t mqtt_readCONNECT(mqtt_msg_t * __restrict buf, unsigned short *kasec, 
                 char * __restrict psConnID, int connLen, 
                 char * __restrict psUser, int userLen, char * __restrict psPass, int passLen,  
                 char * __restrict psWillTopic, int topicLen, char * __restrict psWillMessage, int msgLen);
 /*
  * mqtt_readCONNACK() Read CONNACK message
  *
  * @buf = Message buffer
  * return: -1 error or >-1 CONNECT message return code
  */
 unsigned char mqtt_readCONNACK(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_readDISCONNECT() Read DISCONNECT message
  *
  * @buf = Message buffer
  * return: -1 error, 0 ok, >0 undefined result
  */
 int mqtt_readDISCONNECT(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_readPINGREQ() Read PINGREQ message
  *
  * @buf = Message buffer
  * return: -1 error, 0 ok, >0 undefined result
  */
 int mqtt_readPINGREQ(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_readPINGRESP() Read PINGRESP message
  *
  * @buf = Message buffer
  * return: -1 error, 0 ok, >0 undefined result
  */
 int mqtt_readPINGRESP(mqtt_msg_t * __restrict buf);
 
 /*
  * mqtt_readPUBLISH() Read PUBLISH message
  *
  * @buf = Message buffer
  * @psTopic = Topic
  * @topicLen = Topic length
  * @msgID = MessageID
  * @pData = Data buffer
  * @datLen = Data buffer length, if *datLen == 0 allocate memory for pData
  * return: NULL error or !=NULL MQTT fixed header
  */
 struct mqtthdr *mqtt_readPUBLISH(mqtt_msg_t * __restrict buf, char * __restrict psTopic, 
                 int topicLen, unsigned short *msgID, void * __restrict pData, int *datLen);
 /*
  * mqtt_readPUBACK() Read PUBACK message
  *
  * @buf = Message buffer
  * return: -1 error or MessageID
  */
 u_short mqtt_readPUBACK(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_readPUBREC() Read PUBREC message
  *
  * @buf = Message buffer
  * return: -1 error or MessageID
  */
 u_short mqtt_readPUBREC(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_readPUBREL() Read PUBREL message
  *
  * @buf = Message buffer
  * return: -1 error or MessageID
  */
 u_short mqtt_readPUBREL(mqtt_msg_t * __restrict buf);
 /*
  * mqtt_readPUBCOMP() Read PUBCOMP message
  *
  * @buf = Message buffer
  * return: -1 error or MessageID
  */
 u_short mqtt_readPUBCOMP(mqtt_msg_t * __restrict buf);
 
 /*
  * mqtt_readSUBSCRIBE() Read SUBSCRIBE message
  *
  * @buf = Message buffer
  * @msgID = MessageID
  * @subscr = Subscriptions, must be free after use with mqtt_subFree()
  * return: NULL error or !=NULL MQTT fixed header
  */
 struct mqtthdr *mqtt_readSUBSCRIBE(mqtt_msg_t * __restrict buf, unsigned short *msgID, 
                 mqtt_subscr_t **subscr);
 /*
  * mqtt_readUNSUBACK() Read UNSUBACK message
  *
  * @buf = Message buffer
  * return: -1 error or MessageID
  */
 u_short mqtt_readUNSUBACK(mqtt_msg_t * __restrict buf);
 
 /*** ENGINE FUNCTIONS ***/
 
 /*
  * mqttInitCallbacks() Init callback array for dispatcher
  *
  * return: NULL error or !=NULL allocated callback array, after use free with mqttFiniCallbacks()
  */
 mqtt_cb_t *mqttInitCallbacks(void);
 /*
  * mqttFiniCallbacks() Free callback array
  *
  * @cb = Callback array
  * return: none
  */
 void mqttFiniCallbacks(mqtt_cb_t ** __restrict cb);
 /*
  * MQTT_CALLBACK() Assign function to callback array for MQTT dispatcher
  *
  * @_cbs = Callback array
  * @_x = MQTT Message type, like MQTT_TYPE_* ...
  * @_func = Function
  * return: none
  */
 #define MQTT_CALLBACK(_cbs, _x, _func)  (assert((_cbs)), (_cbs)[(_x)] = (_func))
 /*
  * mqttDispatcher() MQTT Message type dispatcher
  *
  * @cb = Callback array
  * @buf = Received MQTT message
  * return: -1 error or >-1 return value from executed callback
  */
 inline int mqttDispatcher(mqtt_cb_t * __restrict cb, mqtt_msg_t * __restrict buf);
   
   
 #endif  #endif

Removed from v.1.1.1.1.2.7  
changed lines
  Added in v.1.1.1.1.2.29


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