我正在使用 telosB 微粒进行实施。我遇到了一种确认数据包的方法,
task void send() {
call PacketAcknowledgements.requestAck(&myMsg);
if(call AMSend.send(1, &myMsg, 0) != SUCCESS) {
post send();
}
}
event void AMSend.sendDone(message_t *msg, error_t error) {
if(call PacketAcknowledgements.wasAcked(msg))
// do something if packet was acked
else
// do something else if packet was not acked (possibly resend)
}
实际上我的疑问是,接收节点应该必须确认数据包,或者它的应用程序中应该有 PacketAcknowledgements 接口才能发送 ACK。这种类型的确认是如何工作的?
而且我已经检查了我自己的确认类型,它的工作方式就像在收到数据包后,mote 确认数据包,如果源 mote 在特定时间范围内没有收到肯定的 ack,则重新传输数据包。
那么哪种方式更好呢?
请指导,谢谢,