package net.tinyos.packet;
import net.tinyos.util.*;
+
import java.io.*;
import java.util.*;
import java.nio.*;
synchronized public void open(Messenger messages) throws IOException {
super.open(messages);
- if(!reader.isAlive()) {
+ if (!reader.isAlive()) {
reader.start();
}
}
// Write an ack-ed packet
protected boolean writeSourcePacket(byte[] packet) throws IOException {
- writeFramedPacket(P_PACKET_ACK, ++seqNo, packet, packet.length);
+ for (int retries = 0; retries < 25; retries++) {
+ writeFramedPacket(P_PACKET_ACK, ++seqNo, packet, packet.length);
+
+ long deadline = System.currentTimeMillis() + ACK_TIMEOUT;
- long deadline = System.currentTimeMillis() + ACK_TIMEOUT;
- for (;;) {
byte[] ack = readProtocolPacket(P_ACK, deadline);
if (ack == null) {
if (DEBUG) {
message(name + ": ACK timed out");
}
- return false;
+ continue;
}
if (ack[0] == (byte) seqNo) {
if (DEBUG) {
}
}
+ return false;
}
static private byte ackPacket[] = new byte[0];