我又遇到了一個疑問。我在我的實現中插入了使用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沒有被確認,原始郵件的重發。如果這種情況沒有發生,你能否建議我對此進行適當的修改?