Diff for /mqtt/inc/Attic/aitmqtt.h between versions 1.1.1.1.2.2 and 1.1.1.1.2.16

version 1.1.1.1.2.2, 2011/11/07 13:58:27 version 1.1.1.1.2.16, 2011/11/22 13:03:25
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 */
   
 struct mqtthdr {  struct mqtthdr {
        unsigned char   mqtt_retain : 1,         struct {
                        mqtt_qos : 2,                unsigned char   retain:1, 
                        mqtt_dup : 1,                                qos:2,
                        mqtt_type : 4;                                dup:1,
        unsigned char   mqtt_len;                                type:4;
};        } mqtt_msg;
         unsigned char           mqtt_len[1];    /* may be grow to 4 bytes */
 } __packed;
   
 #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 68  struct mqtthdr { Line 77  struct mqtthdr {
                                            A server may delete a retained message if it receives a message                                              A server may delete a retained message if it receives a message 
                                            with a zero-length payload and the Retain flag set on the same topic. */                                             with a zero-length payload and the Retain flag set on the same topic. */
   
   /* VARIABLE HEADERS */
   
   #define MQTT_RETCODE_ACCEPTED           0
   #define MQTT_RETCODE_REFUSE_VER         1
   #define MQTT_RETCODE_REFUSE_ID          2
   #define MQTT_RETCODE_REFUSE_UNAVAIL     3
   #define MQTT_RETCODE_REFUSE_USERPASS    4
   #define MQTT_RETCODE_DENIED             5
   
   
   typedef union {
           struct {
                   unsigned short  m:8,
                                   l:8;
           } sb;
           unsigned short  val;
   } mqtt_v_t;
   
   typedef struct {
           mqtt_v_t        sub_sb;
           char            *sub_data;
           unsigned char   sub_qos;
   } mqtt_subscr_t;
   
   typedef struct {
           mqtt_v_t        var_sb;
           unsigned char   var_data[0];
   } __packed mqtthdr_var_t;
   #define MQTTHDR_VAR_SIZEOF(x)           (assert((x)), sizeof(mqtt_v_t) + ntohs((x)->var_sb.val))
   
   typedef unsigned char mqtthdr_protover_t;
   
   typedef struct {
           unsigned char   reserved:1,
                           clean_sess:1,
                           will_flg:1,
                           will_qos:2,
                           will_retain:1,
                           password:1,
                           username:1;
   } __packed mqtthdr_connflgs_t;
   
   typedef struct {
           unsigned char   reserved;
           unsigned char   retcode;
   } __packed mqtthdr_connack_t;
   
   
   /* MQTT Message buffer */
   
   typedef struct {
           void            *msg_base;
           unsigned short  msg_len;
   } mqtt_msg_t;
   
   
 // -------------------------------------------------------  // -------------------------------------------------------
 // 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 78  inline const char *mqtt_GetError(); Line 142  inline const char *mqtt_GetError();
   
   
 /*  /*
    * mqtt_msgAlloc() Allocate memory for MQTT Message
    *
    * @len = >0 Allocate buffer with length
    * return: NULL error or Message, after use must call mqtt_msgFree() with all!=0
    */
   inline mqtt_msg_t *mqtt_msgAlloc(unsigned short len);
   /*
    * mqtt_msgFree() Free MQTT message
    *
    * @msg = Message buffer
    * @all = !=0 Destroy entire message, if MQTT Message allocated with mqtt_msgAlloc()
    * return: none
    */
   inline void mqtt_msgFree(mqtt_msg_t ** __restrict msg, int all);
   /*
    * mqtt_msgRealloc() Reallocate MQTT message buffer
    *
    * @msg = MQTT message
    * @len = new length
    * return: -1 error or >-1 old buffer length
    */
   inline int mqtt_msgRealloc(mqtt_msg_t * __restrict msg, unsigned short len);
   
   /*
  * 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
  * @n = sizeof bytes, if !=NULL   * @n = sizeof bytes, if !=NULL
  * return: -1 error, >-1 length of message   * return: -1 error, >-1 length of message
Line 92  inline unsigned int mqtt_encodeLen(unsigned int num); Line 182  inline unsigned int mqtt_encodeLen(unsigned int num);
 inline unsigned int mqtt_decodeLen(unsigned int len, char *n);  inline unsigned int mqtt_decodeLen(unsigned int len, char *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_str2sub Create MQTT subscribe variable from string(s)
    *
    * @csStr = strings
    * @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 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_msgCONNECT() Create CONNECT message
    *
    * @buf = Message buffer
    * @csConnID = ConnectID
    * @csUser = Username if !=NULL
    * @csPass = Password for Username, only if csUser is set
    * @csWillTopic = Will Topic if !=NULL Will Flags set into message
    * @csWillMessage = Will Message, may be NULL
    * @ClrSess = Clear Session subscriptions after disconnect
    * @WillQOS = Will QOS if csWillTopic is set
    * @WillRetain = Will Retain Will Message if csWillTopic is set
    * return: -1 error or >-1 message size for send
    */
   int mqtt_msgCONNECT(mqtt_msg_t * __restrict buf, const char *csConnID, 
                   const char *csUser, const char *csPass, 
                   const char *csWillTopic, const char *csWillMessage, 
                   unsigned char ClrSess, unsigned char WillQOS, unsigned char WillRetain);
   /*
    * mqtt_msgCONNACK() Create CONNACK message
    *
    * @buf = Message buffer
    * @retcode = Return code
    * return: -1 error or >-1 message size for send
    */
   int mqtt_msgCONNACK(mqtt_msg_t * __restrict buf, unsigned char retcode);
   
   /*
    * 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, unsigned short 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);
   
   
 #endif  #endif

Removed from v.1.1.1.1.2.2  
changed lines
  Added in v.1.1.1.1.2.16


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