From 0e4c31ae6440ea865b1938f3ccab4b91107d8b65 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Fri, 18 Dec 2020 10:14:59 +0100 Subject: [PATCH 1/2] net/emcute: add doc that QoS -1 is not supported --- sys/include/net/emcute.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/include/net/emcute.h b/sys/include/net/emcute.h index a9c214de22..9f47cd3aa4 100644 --- a/sys/include/net/emcute.h +++ b/sys/include/net/emcute.h @@ -66,6 +66,7 @@ * how to put / how to encode the IPv(4/6) address AND the port of * a gateway in the GwAdd field of the GWINFO message * @todo QOS level 2 + * @todo QOS level -1 * @todo put the node to sleep (send DISCONNECT with duration field set) * @todo handle DISCONNECT messages initiated by the broker/gateway * @todo support for pre-defined and short topic IDs From 610ae4925e055d3e6480a7778433bea08fe67e14 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Thu, 17 Dec 2020 12:05:28 +0100 Subject: [PATCH 2/2] net/emcute: fix MsgId for PUBLISH with QOS0 --- sys/net/application_layer/emcute/emcute.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sys/net/application_layer/emcute/emcute.c b/sys/net/application_layer/emcute/emcute.c index 31b9bfaaf2..9326d9e996 100644 --- a/sys/net/application_layer/emcute/emcute.c +++ b/sys/net/application_layer/emcute/emcute.c @@ -351,8 +351,15 @@ int emcute_pub(emcute_topic_t *topic, const void *data, size_t len, tbuf[pos++] = flags; byteorder_htobebufs(&tbuf[pos], topic->id); pos += 2; - byteorder_htobebufs(&tbuf[pos], id_next); - waitonid = id_next++; + /* set generated MessageId for QOS 1 and 2, else set it to 0 */ + if (((flags & MQTTSN_QOS_MASK) == MQTTSN_QOS_1) || + ((flags & MQTTSN_QOS_MASK) == MQTTSN_QOS_2)) { + byteorder_htobebufs(&tbuf[pos], id_next); + waitonid = id_next++; + } + else { + memset(&tbuf[pos], 0, 2); + } pos += 2; memcpy(&tbuf[pos], data, len);