[Tinyos-beta-commits] CVS: tinyos-1.x/beta/Drip/tools/java/net/tinyos/drip Drip.java, 1.6, 1.7

Gilman Tolle gtolle at users.sourceforge.net
Sat Jul 16 14:24:15 PDT 2005


Update of /cvsroot/tinyos/tinyos-1.x/beta/Drip/tools/java/net/tinyos/drip
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7240/tools/java/net/tinyos/drip

Modified Files:
	Drip.java 
Log Message:
Changed Drip from System.out to log4j for logging. So Nice. Added APIs for addressed sending. Improved performance when sending unreliable Drip messages so that Clog can work at full speed.

Index: Drip.java
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/Drip/tools/java/net/tinyos/drip/Drip.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** Drip.java	16 Jul 2005 01:29:47 -0000	1.6
--- Drip.java	16 Jul 2005 21:24:13 -0000	1.7
***************
*** 12,15 ****
--- 12,17 ----
  import net.tinyos.util.*;
  
+ import org.apache.log4j.*;
+ 
  import java.io.*; 
  import java.text.*;
***************
*** 18,22 ****
  public class Drip implements MessageListener {
  
-   public static boolean DEBUG = false;
    public static int SEND_COUNT = 6;
    public static int SEND_RATE = DripConsts.DRIP_TIMER_PERIOD;
--- 20,23 ----
***************
*** 25,28 ****
--- 26,31 ----
    public static int WAKEUP_SEND_RATE = 40;
  
+   private Logger log = Logger.getLogger(Drip.class.getName());
+ 
    private static final int IDLE = 0;
    private static final int PROBING = 1;
***************
*** 50,53 ****
--- 53,57 ----
    public Drip(int id) {
  
+     log.info("Started id=" + id);
      try {
        moteIF = new MoteIF((Messenger)null);
***************
*** 63,66 ****
--- 67,72 ----
    public Drip(int id, MoteIF p_moteIF) {
  
+     log.info("Started with own moteIF id=" + id);
+ 
      try {
        moteIF = p_moteIF;
***************
*** 74,78 ****
    }
  
!   public synchronized void send(Message msg, int msgSize) {
      trickle = new Timer();
      trickleTask = new DripSender();
--- 80,84 ----
    }
  
!   void setupDrip(Message msg, int msgSize) {
      trickle = new Timer();
      trickleTask = new DripSender();
***************
*** 81,87 ****
  		    msgSize);
      sendCount = 0;
      state = PROBING;
      wakeupMsg = false;
-     seqno = DripConsts.DRIP_SEQNO_OLDEST;
      maxSendCount = SEND_COUNT;
      trickle.schedule(trickleTask, 0, SEND_RATE);
--- 87,115 ----
  		    msgSize);
      sendCount = 0;
+ 
+   }
+ 
+   Message buildAddrMsg(int dest, Message msg, int msgSize) {
+     AddressMsg addrMsg = new AddressMsg(AddressMsg.DEFAULT_MESSAGE_SIZE + msgSize);
+     String moteid = Env.getenv("MOTEID");
+     int source = 0xFFFF;
+     
+     if (moteid != null) {
+       source = Integer.parseInt(moteid);
+     }
+ 
+     addrMsg.dataSet(msg.dataGet(), 0, addrMsg.offset_data(0), msgSize);
+     
+     addrMsg.set_dest(dest);
+     addrMsg.set_source(source);
+ 
+     return addrMsg;
+   }
+ 
+   public synchronized void send(Message msg, int msgSize) {
+     setupDrip(msg, msgSize);
+ 
      state = PROBING;
      wakeupMsg = false;
      maxSendCount = SEND_COUNT;
      trickle.schedule(trickleTask, 0, SEND_RATE);
***************
*** 93,106 ****
    }
  
    public synchronized void sendUnreliable(Message msg, int msgSize) {
!     trickle = new Timer();
!     trickleTask = new DripSender();
!     dripMsg = new DripMsg(DripMsg.DEFAULT_MESSAGE_SIZE + msgSize);
!     dripMsg.dataSet(msg.dataGet(), 0, dripMsg.offset_data(0),
! 		    msgSize);
!     sendCount = 0;
      state = SENDING_NEW;
      wakeupMsg = false;
!     maxSendCount = SEND_COUNT;
      trickle.schedule(trickleTask, 0, SEND_RATE);
      try {
--- 121,136 ----
    }
  
+   public synchronized void sendAddressed(int dest, Message msg, int msgSize) {
+ 
+     AddressMsg addrMsg = (AddressMsg) buildAddrMsg(dest, msg, msgSize);
+     send(addrMsg, msgSize + AddressMsg.DEFAULT_MESSAGE_SIZE);
+   }
+ 
    public synchronized void sendUnreliable(Message msg, int msgSize) {
!     setupDrip(msg, msgSize);
! 
      state = SENDING_NEW;
      wakeupMsg = false;
!     maxSendCount = 1;
      trickle.schedule(trickleTask, 0, SEND_RATE);
      try {
***************
*** 111,123 ****
    }
  
    public synchronized void sendWakeup(Message msg, int msgSize) {
!     trickle = new Timer();
!     trickleTask = new DripSender();
!     dripMsg = new DripMsg(DripMsg.DEFAULT_MESSAGE_SIZE + msgSize);
!     dripMsg.dataSet(msg.dataGet(), 0, dripMsg.offset_data(0),
! 		    msgSize);
!     sendCount = 0;
      state = SENDING_NEW;
-     seqno = DripConsts.DRIP_SEQNO_NEWEST;
      wakeupMsg = true;
      maxSendCount = WAKEUP_SEND_COUNT;
--- 141,154 ----
    }
  
+   public synchronized void sendAddressedUnreliable(int dest, Message msg, 
+ 						   int msgSize) {
+     AddressMsg addrMsg = (AddressMsg) buildAddrMsg(dest, msg, msgSize);
+     sendUnreliable(addrMsg, msgSize + AddressMsg.DEFAULT_MESSAGE_SIZE);
+   }
+ 
    public synchronized void sendWakeup(Message msg, int msgSize) {
!     setupDrip(msg, msgSize);
! 
      state = SENDING_NEW;
      wakeupMsg = true;
      maxSendCount = WAKEUP_SEND_COUNT;
***************
*** 138,143 ****
      
      public void run() {
!       
!       if (DEBUG) { System.err.println("drip task running"); }
  
        dripMsg.set_metadata_id((short)id);
--- 169,176 ----
      
      public void run() {
! 
!       boolean stopSending = false;
! 
!       log.debug("DripSender.run()");
  
        dripMsg.set_metadata_id((short)id);
***************
*** 146,179 ****
        case PROBING:
  	if (sendCount < maxSendCount) {
! 	  if (DEBUG) { System.err.println("probing"); }
  	  dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_OLDEST);
  	} else {
! 	  if (DEBUG) { System.err.println("sending last"); }
! 	  // last chance
  	  dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_NEWEST);
! 	  state = SENT_SEQNO;
  	}
  	break;
        case SENDING_SEQNO:
  	if (sendCount < maxSendCount) {
! 	  if (DEBUG) { System.err.println("sending "+seqno); }
  	  dripMsg.set_metadata_seqno((byte)seqno);
  	} else {
! 	  if (DEBUG) { System.err.println("sending last"); }
! 	  // last chance
  	  dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_NEWEST);
! 	  state = SENT_SEQNO;
  	}
  	break;
-       case SENT_SEQNO:
- 	if (DEBUG) { System.err.println("cancelling"); }
- 	trickle.cancel();
- 	trickleTask.cancel();
- 	sendDone();
- 	return;
        case SENDING_NEW:
! 	if (DEBUG) { System.err.println("sending new"); }
! 	dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_NEWEST);
  	break;
        default:
        }
--- 179,214 ----
        case PROBING:
  	if (sendCount < maxSendCount) {
! 	  log.debug("probing");
  	  dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_OLDEST);
  	} else {
! 	  log.debug("probing finished");
  	  dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_NEWEST);
! 	  stopSending = true;
  	}
  	break;
        case SENDING_SEQNO:
  	if (sendCount < maxSendCount) {
! 	  log.debug("sending new seqno "+seqno);
  	  dripMsg.set_metadata_seqno((byte)seqno);
  	} else {
! 	  log.debug("sending finished");
  	  dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_NEWEST);
! 	  stopSending = true;
  	}
  	break;
        case SENDING_NEW:
! 	if (sendCount < maxSendCount) {
! 	  log.debug("sending unreliably");
! 	  dripMsg.set_metadata_seqno((byte)DripConsts.DRIP_SEQNO_NEWEST);
! 	  if (sendCount == maxSendCount-1) {
! 	    log.debug("sending unreliably finished");
! 	    stopSending = true;
! 	  }
! 	}
  	break;
+       case SENT_SEQNO:
+ 	log.debug("done sending");
+ 	stopSending = true;
+ 	return;
        default:
        }
***************
*** 182,191 ****
  	dripMsg.set_metadata_seqno((short)((dripMsg.get_metadata_seqno()+1) % 256));
        }
!       
!       if (DEBUG) {
! 	System.err.println("Sending Msg " + sendCount + ": id=" + id + ",seqno=" + dripMsg.get_metadata_seqno());
!       }
        send(dripMsg);
        sendCount++;
      }
    }
--- 217,230 ----
  	dripMsg.set_metadata_seqno((short)((dripMsg.get_metadata_seqno()+1) % 256));
        }
! 
!       log.info("Sending Msg " + sendCount + ": id=" + id + ",seqno=" + dripMsg.get_metadata_seqno());
        send(dripMsg);
        sendCount++;
+ 
+       if (stopSending) {
+ 	trickle.cancel();
+ 	trickleTask.cancel();
+ 	sendDone();
+       }
      }
    }
***************
*** 209,218 ****
      int newId = msg.get_metadata_id();
      int newSeqno = msg.get_metadata_seqno();
  	
!     if (newId != id)
        return;
- 	
-     if (DEBUG) {
-       System.err.println("Received Msg: id=" + newId + ",seqno=" + newSeqno);
      }
  
--- 248,263 ----
      int newId = msg.get_metadata_id();
      int newSeqno = msg.get_metadata_seqno();
+ 
+     log.debug("Received Msg: id=" + newId + ",seqno=" + newSeqno);
  	
!     if (newId != id) {
!       log.debug("dropped, not my ID " + id);
!       return;
!     }
! 
!     if ((newSeqno & ~DripConsts.DRIP_WAKEUP_BIT) == DripConsts.DRIP_SEQNO_OLDEST ||
! 	(newSeqno & ~DripConsts.DRIP_WAKEUP_BIT) == DripConsts.DRIP_SEQNO_NEWEST) {
!       log.debug("dropped, a special seqno " + newSeqno);
        return;
      }
  
***************
*** 220,231 ****
      case PROBING:
        seqno = newSeqno;
        incrementSeqno();
        state = SENDING_SEQNO;
      case SENDING_SEQNO:
        if (seqno == newSeqno) {
! 	if (DEBUG) {
! 	  System.err.println("Message Injected Successfully");
! 	}
! 	state = SENT_SEQNO;
        }
      default:
--- 265,277 ----
      case PROBING:
        seqno = newSeqno;
+       log.info("Receive: id=" + id + ",seqno=" + dripMsg.get_metadata_seqno() + " Heard Old Seqno");
        incrementSeqno();
        state = SENDING_SEQNO;
      case SENDING_SEQNO:
        if (seqno == newSeqno) {
! 	log.info("Receive: id=" + id + ",seqno=" + dripMsg.get_metadata_seqno() + " Heard New Seqno");
! 	trickle.cancel();
! 	trickleTask.cancel();
! 	sendDone();
        }
      default:



More information about the Tinyos-beta-commits mailing list