--- mqtt/src/Attic/pub.c 2011/11/21 14:40:56 1.1.2.2 +++ mqtt/src/Attic/pub.c 2011/11/21 15:27:26 1.1.2.5 @@ -12,16 +12,19 @@ * @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, u_short msgID, - u_char Dup, u_char QOS, u_char Retain) + u_char Dup, u_char QOS, u_char Retain, const void *pData, u_short datlen) { int siz = 0; struct mqtthdr *hdr; mqtthdr_var_t *topic; mqtt_v_t *mid; + void *data; if (!buf || !csTopic) return -1; @@ -51,6 +54,14 @@ mqtt_msgPUBLISH(mqtt_msg_t * __restrict buf, const cha mid = (mqtt_v_t*) (buf->msg_base + siz); mid->val = htons(msgID); siz += sizeof(mqtt_v_t); + + /* load with data */ + + if (pData && datlen) { + data = buf->msg_base + siz; + memcpy(data, pData, datlen); + siz += datlen; + } /* fixed header */