--- mqtt/inc/Attic/aitmqtt.h 2011/11/07 14:01:58 1.1.1.1.2.3 +++ mqtt/inc/Attic/aitmqtt.h 2011/11/07 16:55:46 1.1.1.1.2.4 @@ -3,14 +3,21 @@ #define MQTT_DATA_MAX 268435455 +#define MQTT_CONN_STR "MQIsdp" +#define MQTT_PROTO_VER 3 +#define MQTT_KEEPALIVE 10 +/* FIXED HEADER */ + struct mqtthdr { - unsigned char mqtt_retain : 1, - mqtt_qos : 2, - mqtt_dup : 1, - mqtt_type : 4; - unsigned char mqtt_len; -}; + struct { + unsigned char retain:1, + qos:2, + dup:1, + 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_CONNECT 1 /* client request to connect to server */ @@ -70,7 +77,43 @@ struct mqtthdr { 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. */ +/* 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; +} mqtthdr_val_t; + +typedef struct { + mqtthdr_val_t var_sb; + unsigned char var_data[0]; +} __packed mqtthdr_var_t; + +typedef unsigned char mqtthdr_protover_t; +typedef unsigned char mqtthdr_retcode_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; + + // ------------------------------------------------------- // mqtt_GetErrno() Get error code of last operation inline int mqtt_GetErrno(); @@ -98,6 +141,13 @@ inline unsigned int mqtt_decodeLen(unsigned int len, c * return: -1 error, >-1 sizeof len in bytes */ inline char mqtt_sizeLen(unsigned int len); +/* + * mqtt_str2var Create MQTT variable from string + * @csStr = string + * @strLen = string length + * return: NULL error or != ok variable, must be free after use! + */ +inline mqtthdr_var_t *mqtt_str2var(const unsigned char *csStr, unsigned short strLen); #endif