[Tinyos-beta-commits] CVS: tinyos-1.x/beta/Deluge/delugetools
Downloader.java, 1.2, 1.3 Pinger.java, 1.11, 1.12
Jonathan Hui
jwhui at users.sourceforge.net
Tue Jul 12 11:03:39 PDT 2005
Update of /cvsroot/tinyos/tinyos-1.x/beta/Deluge/delugetools
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12388
Modified Files:
Downloader.java Pinger.java
Log Message:
- Allow resetting of an image's version number.
Index: Downloader.java
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/Deluge/delugetools/Downloader.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Downloader.java 29 Jun 2005 01:21:20 -0000 1.2
--- Downloader.java 12 Jul 2005 18:03:37 -0000 1.3
***************
*** 37,40 ****
--- 37,41 ----
private static final int PAGE_SIZE = DelugeConsts.DELUGE_PKTS_PER_PAGE*DelugeConsts.DELUGE_PKT_PAYLOAD_SIZE;
+ private static final int MAX_REQ_ATTEMPTS = 4;
private Pinger pinger;
***************
*** 49,52 ****
--- 50,56 ----
private String outfile;
+ private int reqAttempts;
+ private int reqDest;
+
public Downloader(Pinger pinger, int imageNum,
MoteIF moteif, boolean verbose,
***************
*** 83,88 ****
--- 87,95 ----
setupNextPage();
+ reqDest = pingReply.get_sourceAddr();
+ reqAttempts = MAX_REQ_ATTEMPTS;
curPage = 0;
+ moteif.registerListener(new DelugeAdvMsg(), this);
moteif.registerListener(new DelugeDataMsg(), this);
***************
*** 96,108 ****
System.out.print("\rDownloading page [" + (curPage+1) + "] of [" + pingReply.get_imgDesc_numPgs() + "] ...");
! DelugeReqMsg reqMsg = new DelugeReqMsg();
! reqMsg.set_sourceAddr(pinger.getPCAddr());
! reqMsg.set_dest(pingReply.get_sourceAddr());
! reqMsg.set_vNum(pingReply.get_imgDesc_vNum());
! reqMsg.set_imgNum(pingReply.get_imgDesc_imgNum());
! reqMsg.set_pgNum(curPage);
! reqMsg.set_requestedPkts(pktsToReceive);
! if (verbose) System.out.print(reqMsg);
! send(reqMsg);
} catch (Exception e) {
e.printStackTrace();
--- 103,128 ----
System.out.print("\rDownloading page [" + (curPage+1) + "] of [" + pingReply.get_imgDesc_numPgs() + "] ...");
! if ( reqAttempts == 0 ) {
! DelugeAdvMsg advMsg = (DelugeAdvMsg)pingReply.clone();
! advMsg.set_sourceAddr(pinger.getPCAddr());
! advMsg.set_version(DelugeConsts.DELUGE_VERSION);
! advMsg.set_type(DelugeConsts.DELUGE_ADV_PING);
! advMsg = DelugeCrc.computeAdvCrc(advMsg);
! if (verbose) System.out.print(advMsg);
! send(advMsg);
! reqDest = MoteIF.TOS_BCAST_ADDR;
! }
! else {
! DelugeReqMsg reqMsg = new DelugeReqMsg();
! reqMsg.set_sourceAddr(pinger.getPCAddr());
! reqMsg.set_dest(reqDest);
! reqMsg.set_vNum(pingReply.get_imgDesc_vNum());
! reqMsg.set_imgNum(pingReply.get_imgDesc_imgNum());
! reqMsg.set_pgNum(curPage);
! reqMsg.set_requestedPkts(pktsToReceive);
! if (verbose) System.out.print(reqMsg);
! send(reqMsg);
! reqAttempts--;
! }
} catch (Exception e) {
e.printStackTrace();
***************
*** 241,244 ****
--- 261,277 ----
switch(m.amType()) {
+ case DelugeAdvMsg.AM_TYPE:
+
+ DelugeAdvMsg adv = (DelugeAdvMsg)m;
+
+ if ( reqDest == MoteIF.TOS_BCAST_ADDR
+ && adv.get_imgDesc_vNum() == pingReply.get_imgDesc_vNum()
+ && adv.get_imgDesc_numPgsComplete() > curPage ) {
+ reqDest = adv.get_sourceAddr();
+ reqAttempts = MAX_REQ_ATTEMPTS;
+ }
+
+ break;
+
case DelugeDataMsg.AM_TYPE:
***************
*** 247,264 ****
short pktNum = data.get_pktNum();
! if (verbose) System.out.print(data);
!
! if ((pktsToReceive[pktNum/8] & (0x1 << (pktNum%8))) != 0) {
!
! pktsToReceive[pktNum/8] &= ~(0x1 << (pktNum%8));
! pktsReceived++;
! System.arraycopy(data.get_data(), 0, imageData,
! pgNum*PAGE_SIZE + pktNum*DelugeConsts.DELUGE_PKT_PAYLOAD_SIZE,
! DelugeConsts.DELUGE_PKT_PAYLOAD_SIZE);
! if (pktsReceived >= DelugeConsts.DELUGE_PKTS_PER_PAGE) {
! setupNextPage();
! curPage++;
}
--- 280,304 ----
short pktNum = data.get_pktNum();
! if ( data.get_imgNum() == pingReply.get_imgDesc_imgNum()
! && data.get_vNum() == pingReply.get_imgDesc_vNum()
! && data.get_pgNum() == curPage ) {
! reqAttempts = MAX_REQ_ATTEMPTS;
! if (verbose) System.out.print(data);
!
! if ((pktsToReceive[pktNum/8] & (0x1 << (pktNum%8))) != 0) {
!
! pktsToReceive[pktNum/8] &= ~(0x1 << (pktNum%8));
! pktsReceived++;
!
! System.arraycopy(data.get_data(), 0, imageData,
! pgNum*PAGE_SIZE + pktNum*DelugeConsts.DELUGE_PKT_PAYLOAD_SIZE,
! DelugeConsts.DELUGE_PKT_PAYLOAD_SIZE);
!
! if (pktsReceived >= DelugeConsts.DELUGE_PKTS_PER_PAGE) {
! setupNextPage();
! curPage++;
! }
}
Index: Pinger.java
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/Deluge/delugetools/Pinger.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** Pinger.java 29 Jun 2005 21:08:32 -0000 1.11
--- Pinger.java 12 Jul 2005 18:03:37 -0000 1.12
***************
*** 87,91 ****
advMsg.set_sourceAddr(pcAddr);
advMsg.set_version(DelugeConsts.DELUGE_VERSION);
! advMsg.set_type((short)DelugeConsts.DELUGE_ADV_PC);
advMsg.set_nodeDesc_vNum(DelugeConsts.DELUGE_INVALID_VNUM);
advMsg.set_nodeDesc_imgNum(DelugeConsts.DELUGE_INVALID_IMGNUM);
--- 87,91 ----
advMsg.set_sourceAddr(pcAddr);
advMsg.set_version(DelugeConsts.DELUGE_VERSION);
! advMsg.set_type((short)DelugeConsts.DELUGE_ADV_PING);
advMsg.set_nodeDesc_vNum(DelugeConsts.DELUGE_INVALID_VNUM);
advMsg.set_nodeDesc_imgNum(DelugeConsts.DELUGE_INVALID_IMGNUM);
More information about the Tinyos-beta-commits
mailing list