我又遇到了一个疑问。我在我的实现中插入了使用ACK。ACK与包重发
在功能:
AMSend.sendDone (message_t * bufPtr, error_t error) {
if (call PacketAcknowledgements.wasAcked (bufPtr)) {
dbg ("test", "SEND_ACK \ n");
}
}
而且这显然是正常工作,这取决于输出日志。
已在功能:
AMControl.startDone (error_t err) {
radio = TRUE;
dbg ("test", "SLOT_ACTIVE \ n");
if (err == SUCCESS) {
if ((call Clock.get()> (ultpkdados + 5000)) && (TOS_NODE_ID! = 0)) {
test_msg_t * rcm = (test_msg_t *) call Packet.getPayload (& pkt, sizeof (test_msg_t));
rcm-> type = 1;
rcm-> nodeid = TOS_NODE_ID;
rcm-> proxsalto = syncwith;
call PacketAcknowledgements.requestAck (& pkt);
if (call AMSend.send (syncwith, & pkt, sizeof (test_msg_t)) == SUCCESS) {
Dbg ("test", "SEND_PKT_DATA \ n"));
locked = TRUE;
ultpkdados call Clock.get =();
}
}
}
}
此功能startDone
正在发送“数据”的该分组通常,我提出的呼叫PacketAcknowledgements.requestAck
请求ACK。
我的问题是在这一点上,如果ACK没有被确认,原始邮件的重发。如果这种情况没有发生,你能否建议我对此进行适当的修改?