在Contiki (Rime) 中,如何了解您成功传输了哪条单播消息?

How to understand which runicast message you have succesfully transmitted in Contiki (Rime)?

之后我用函数runicast_send发送不同的runicast消息,我怎么知道触发回调sent_runicast时哪个消息被确认了?

runicast.h 文件指出:

The runicast primitive adds two packet attributes: the single-hop packet type and the single-hop packet ID. The runicast primitive uses the packet ID attribute as a sequence number for matching acknowledgement packets to the corresponding data packets.

但我在实践中不明白如何去做。有人可以举个例子吗?

一种方法是在发送数据包之前查看 struct runicast_conn *c 的字段 sndnxt,然后比较 "sent" 中 packetbuf_attr(PACKETBUF_ATTR_PACKET_ID) 的值代码回调。

但是请注意,默认情况下,runicast 数据包 ID 的长度仅为 2 位。在大多数情况下足以对 ACK 进行多路分解,但可能不足以满足您的目的。 (可以通过重新定义 RUNICAST_PACKET_ID_BITS 来更改以位为单位的数据包 ID 大小。)

Rime 也已过时。不要在你的代码中使用它,尤其是生产代码,除非你知道你在做什么。 runicast 从来都不是 Rime 的亮点之一,我怀疑没有更好的选择(例如 uIPv6 堆栈)来满足您的需求。