[Tinyos-beta-commits] CVS: tinyos-1.x/beta/SystemCore/MultiHopRSSI MultiHopRSSI.nc, 1.20, 1.21 RSSIMultiHopRouter.nc, 1.21, 1.22

Gilman Tolle gtolle at users.sourceforge.net
Tue Aug 31 18:32:32 PDT 2004


Update of /cvsroot/tinyos/tinyos-1.x/beta/SystemCore/MultiHopRSSI
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29603/MultiHopRSSI

Modified Files:
	MultiHopRSSI.nc RSSIMultiHopRouter.nc 
Log Message:
* Added an estimator to MultiHopRSSI that checks for asymmetric links
and downed nodes by keeping track of the percentage of acknowledged
packets. This estimate is then added into the link cost. -DNO_ACK_EST
to disable it, because it's still sort of new, though tested to be
more responsive.

* Added timestamps to the MgmtQuery results, and cleaned up the log
output of EventLogger.

* You can now disable sleep-on-boot by defining HELLO_NO_SLEEP. Useful
in the testbed.



Index: MultiHopRSSI.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/SystemCore/MultiHopRSSI/MultiHopRSSI.nc,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** MultiHopRSSI.nc	26 Aug 2004 22:59:23 -0000	1.20
--- MultiHopRSSI.nc	1 Sep 2004 01:32:29 -0000	1.21
***************
*** 75,79 ****
--- 75,81 ----
      interface MgmtAttr as MA_CurrentParentCost;
      interface MgmtAttr as MA_CurrentParentLinkEst;
+     interface MgmtAttr as MA_CurrentParentAckEst;
      interface MgmtAttr as MA_BeaconSeqno;
+     interface MgmtAttr as MA_SuccessCounter;
      interface MgmtAttr as MA_FailCounter;
      interface MgmtAttr as MA_PacketTTLDrops;
***************
*** 86,94 ****
    enum {
      BEACON_PERIOD        = 31,
!     MAX_MISSED_BEACONS   = 2,
    };
  
    enum {
!     ROUTE_INVALID    = 0xff
    };
  
--- 88,97 ----
    enum {
      BEACON_PERIOD        = 31,
!     MAX_MISSED_BEACONS   = 5,
    };
  
    enum {
!     ROUTE_INVALID    = 0xff,
!     UNKNOWN_ACK_EST  = 127,
    };
  
***************
*** 105,110 ****
--- 108,115 ----
    uint16_t currentParentCost;
    uint16_t currentParentLinkEst;
+   uint16_t currentParentAckEst;
  
    uint16_t packetTTLDrops = 0;
+   uint16_t successCounter = 0;
    uint16_t failCounter = 0;
  
***************
*** 138,141 ****
--- 143,149 ----
      pRP->sourceAddr = TOS_LOCAL_ADDRESS;
      pRP->cost = currentParentCost + currentParentLinkEst;
+ #ifndef NO_ACK_EST
+     pRP->cost += currentParentAckEst;
+ #endif
  
      pRP->treeID = currentTreeID;
***************
*** 164,167 ****
--- 172,176 ----
      currentParentCost = 0x7fff;
      currentParentLinkEst = 0xff;
+     currentParentAckEst = UNKNOWN_ACK_EST;
  
      call MA_Parent.init(sizeof(uint16_t), MA_TYPE_UINT);
***************
*** 169,173 ****
--- 178,184 ----
      call MA_CurrentParentCost.init(sizeof(uint16_t), MA_TYPE_UINT);
      call MA_CurrentParentLinkEst.init(sizeof(uint16_t), MA_TYPE_UINT);
+     call MA_CurrentParentAckEst.init(sizeof(uint16_t), MA_TYPE_UINT);
      call MA_BeaconSeqno.init(sizeof(uint8_t), MA_TYPE_UINT);
+     call MA_SuccessCounter.init(sizeof(uint16_t), MA_TYPE_UINT);
      call MA_FailCounter.init(sizeof(uint16_t), MA_TYPE_UINT);
      call MA_PacketTTLDrops.init(sizeof(uint16_t), MA_TYPE_UINT);
***************
*** 209,214 ****
  
    command void forwardResult(result_t result) {
!     if (result == FAIL)
        failCounter++;
    }
  
--- 220,228 ----
  
    command void forwardResult(result_t result) {
!     if (result == SUCCESS) {
!       successCounter++; 
!     } else {
        failCounter++;
+     }
    }
  
***************
*** 267,270 ****
--- 281,291 ----
  
    event result_t AgingTimer.fired() {
+ #ifndef NO_ACK_EST
+     if (successCounter + failCounter > 0) {
+       currentParentAckEst = (255 - (255 * successCounter) / (successCounter + failCounter));
+       successCounter = failCounter = 0;
+     }
+ #endif
+ 
      if (missedBeacons > MAX_MISSED_BEACONS) {
        if (currentParentLinkEst << 1 < 0xffff) {
***************
*** 277,280 ****
--- 298,303 ----
        missedBeacons++;
      }
+ 
+     call AgingTimer.start(TIMER_ONE_SHOT, (1024 * BEACON_PERIOD));
      return SUCCESS;
    }
***************
*** 314,317 ****
--- 337,342 ----
        currentParentLinkEst = Msg->strength;
  
+       missedBeacons = 0;
+ 
  #ifdef TIMESYNC
        call TimeSet.set(call TimeUtil.create(0, pRP->timestamp));
***************
*** 325,343 ****
         switch if necessary */
  
        if ((uint32_t) pRP->cost + (uint32_t) Msg->strength <
! 	  (uint32_t) currentParentCost + (uint32_t) currentParentLinkEst  
! //	  + (uint32_t) failCounter 
  	  && pRP->parent != TOS_LOCAL_ADDRESS) {
! 
  	currentTreeID = pRP->treeID;
  	currentParentAddr = pRP->sourceAddr;
  	currentParentCost = pRP->cost;
  	currentParentLinkEst = Msg->strength;
  	failCounter = 0;
        }
      }
  
-     missedBeacons = 0;
- 
      return Msg;
    }
--- 350,374 ----
         switch if necessary */
  
+ #ifndef NO_ACK_EST
+       if ((uint32_t) pRP->cost + (uint32_t) Msg->strength + UNKNOWN_ACK_EST <
+ 	  (uint32_t) currentParentCost + (uint32_t) currentParentLinkEst + (uint32_t) currentParentAckEst
+ 	  && pRP->parent != TOS_LOCAL_ADDRESS) {
+ #else
        if ((uint32_t) pRP->cost + (uint32_t) Msg->strength <
! 	  (uint32_t) currentParentCost + (uint32_t) currentParentLinkEst
  	  && pRP->parent != TOS_LOCAL_ADDRESS) {
! #endif
! 	    
  	currentTreeID = pRP->treeID;
  	currentParentAddr = pRP->sourceAddr;
  	currentParentCost = pRP->cost;
  	currentParentLinkEst = Msg->strength;
+ 	currentParentAckEst = UNKNOWN_ACK_EST;
+ 
+ 	successCounter = 0;
  	failCounter = 0;
        }
      }
  
      return Msg;
    }
***************
*** 403,406 ****
--- 434,445 ----
      return SUCCESS;
    }
+   event result_t MA_CurrentParentAckEst.getAttr(uint8_t *attrBuf) {
+     memcpy(attrBuf, &currentParentAckEst, sizeof(currentParentAckEst));
+     return SUCCESS;
+   }
+   event result_t MA_SuccessCounter.getAttr(uint8_t *attrBuf) {
+     memcpy(attrBuf, &successCounter, sizeof(successCounter));
+     return SUCCESS;
+   }
    event result_t MA_FailCounter.getAttr(uint8_t *attrBuf) {
      memcpy(attrBuf, &failCounter, sizeof(failCounter));

Index: RSSIMultiHopRouter.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/SystemCore/MultiHopRSSI/RSSIMultiHopRouter.nc,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** RSSIMultiHopRouter.nc	26 Aug 2004 22:59:23 -0000	1.21
--- RSSIMultiHopRouter.nc	1 Sep 2004 01:32:29 -0000	1.22
***************
*** 102,106 ****
--- 102,108 ----
    MultiHopRSSI.MA_CurrentParentCost -> MgmtAttrsC.MgmtAttr[unique("MgmtAttr")];
    MultiHopRSSI.MA_CurrentParentLinkEst -> MgmtAttrsC.MgmtAttr[unique("MgmtAttr")];
+   MultiHopRSSI.MA_CurrentParentAckEst -> MgmtAttrsC.MgmtAttr[unique("MgmtAttr")];
    MultiHopRSSI.MA_BeaconSeqno -> MgmtAttrsC.MgmtAttr[unique("MgmtAttr")];
+   MultiHopRSSI.MA_SuccessCounter -> MgmtAttrsC.MgmtAttr[unique("MgmtAttr")];
    MultiHopRSSI.MA_FailCounter -> MgmtAttrsC.MgmtAttr[unique("MgmtAttr")];
    MultiHopRSSI.MA_PacketTTLDrops -> MgmtAttrsC.MgmtAttr[unique("MgmtAttr")];



More information about the Tinyos-beta-commits mailing list