--- mqtt/inc/Attic/aitmqtt.h 2011/11/22 14:48:25 1.1.1.1.2.20 +++ mqtt/inc/Attic/aitmqtt.h 2011/12/05 10:37:17 1.1.1.1.2.23 @@ -18,6 +18,23 @@ struct mqtthdr { } __packed; #define MQTTHDR_MSGINIT(x) (assert((x)), (x)->mqtt_msg.val ^= (x)->mqtt_msg.val) +#define MQTT_TYPE_UNKNOWN 0 /* reserved */ +#define MQTT_TYPE_CONNECT 1 /* client request to connect to server */ +#define MQTT_TYPE_CONNACK 2 /* connect acknowledgment */ +#define MQTT_TYPE_PUBLISH 3 /* publish message */ +#define MQTT_TYPE_PUBACK 4 /* publish acknowledgment */ +#define MQTT_TYPE_PUBREC 5 /* publish received (assured delivery part 1) */ +#define MQTT_TYPE_PUBREL 6 /* publish release (assured delivery part 2) */ +#define MQTT_TYPE_PUBCOMP 7 /* publish complete (assured delivery part 3) */ +#define MQTT_TYPE_SUBSCRIBE 8 /* client subscribe request */ +#define MQTT_TYPE_SUBACK 9 /* subscribe acknowledgment */ +#define MQTT_TYPE_UNSUBSCRIBE 10 /* client unsubscribe request */ +#define MQTT_TYPE_UNSUBACK 11 /* unsubscribe acknowledgment */ +#define MQTT_TYPE_PINGREQ 12 /* PING request */ +#define MQTT_TYPE_PINGRESP 13 /* PING response */ +#define MQTT_TYPE_DISCONNECT 14 /* client is disconnecting */ +#define MQTT_TYPE_MAX 15 /* reserved */ + #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. This applies to messages where the value of QoS is greater than @@ -78,9 +95,9 @@ typedef union { } mqtt_v_t; typedef struct { - mqtt_v_t sub_sb; - char *sub_data; - unsigned char sub_qos; + unsigned char sub_ret; + struct __sbuf sub_topic; + struct __sbuf sub_value; } mqtt_subscr_t; typedef struct { @@ -161,11 +178,11 @@ inline unsigned int mqtt_encodeLen(unsigned int num); /* * mqtt_decodeLen() Decode length from MQTT packet * - * @len = length + * @len = length from MQTT header * @n = sizeof bytes, if !=NULL * 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 * @@ -359,6 +376,23 @@ mqtt_cb_t *mqttInitCallbacks(void); * 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