+ }
+
+ nextToSend = nextMsg();
+ fwdbusy = FALSE;
+
+ if (nextToSend != NULL) {
+ forward(nextToSend);
+ }
+
+ dbg("LQI", "Packet not longer busy:\t%s\n", fields(msg));
+ }
+
+ event void SubSendMine.sendDone(message_t* msg, error_t success) {
+ if (!call PacketAcknowledgements.wasAcked(msg) &&
+ call AMPacket.destination(msg) != TOS_BCAST_ADDR &&
+ fail_count < 5){
+ call RouteSelect.selectRoute(msg, 1);
+ call PacketAcknowledgements.requestAck(msg);
+ if (call SubSendMine.send(call AMPacket.destination(msg),
+ msg,
+ call SubPacket.payloadLength(msg)) == SUCCESS) {
+ dbg("LQI", "Packet not acked, retransmit:\t%s\n", fields(msg));
+ fail_count ++;
+ } else {
+ dbg("LQI", "Packet not acked, retransmit fail:\t%s\n", fields(msg));
+ sendFailures++;
+ }
+ }
+
+ fail_count = 0;
+ signal Send.sendDone(msg, success);