[Tinyos-beta-commits] CVS: tinyos-1.x/beta/SystemCore/MultiHopRSSI MultiHopLayer.h, 1.5, 1.6 MultiHopRSSI.nc, 1.21, 1.22

Gilman Tolle gtolle at users.sourceforge.net
Mon Sep 20 20:57:55 PDT 2004


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

Modified Files:
	MultiHopLayer.h MultiHopRSSI.nc 
Log Message:
* MultiHopRSSI will now use the LQI indicator available on the CC2420
radio. This may suggest a name change. Any suggestions?

* The MultiHopRSSI tree construction message now can have a
user-settable period. It's included in the message.




Index: MultiHopLayer.h
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/SystemCore/MultiHopRSSI/MultiHopLayer.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** MultiHopLayer.h	23 Aug 2004 23:19:49 -0000	1.5
--- MultiHopLayer.h	21 Sep 2004 03:57:53 -0000	1.6
***************
*** 58,63 ****
    uint16_t cost;
    uint16_t treeID;
-   uint8_t  beaconSeqno;
    uint32_t timestamp;
  } MultihopBeaconMsg;
  
--- 58,64 ----
    uint16_t cost;
    uint16_t treeID;
    uint32_t timestamp;
+   uint16_t beaconPeriod;
+   uint8_t  beaconSeqno;
  } MultihopBeaconMsg;
  

Index: MultiHopRSSI.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/SystemCore/MultiHopRSSI/MultiHopRSSI.nc,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** MultiHopRSSI.nc	1 Sep 2004 01:32:29 -0000	1.21
--- MultiHopRSSI.nc	21 Sep 2004 03:57:53 -0000	1.22
***************
*** 103,106 ****
--- 103,107 ----
    int8_t   beaconSeqno = 1;
    uint8_t  missedBeacons = 0;
+   uint16_t beaconPeriod;
  
    uint16_t currentTreeID = 0;
***************
*** 108,111 ****
--- 109,113 ----
    uint16_t currentParentCost;
    uint16_t currentParentLinkEst;
+   uint16_t currentParentLQI;
    uint16_t currentParentAckEst;
  
***************
*** 117,120 ****
--- 119,128 ----
  #define MIN(a_,b_) (a_ < b_ ? a_ : b_)
  
+   uint16_t adjustLQI(uint8_t val) {
+     uint16_t result = (80 - (val - 50));
+     result = (((result * result) >> 3) * result) >> 3;
+     return result;
+   }
+ 
    task void SendRouteTask() {
      TOS_MsgPtr pMsgBuf = call SharedMsgBuf.getMsgBuf();
***************
*** 146,152 ****
      pRP->cost += currentParentAckEst;
  #endif
- 
      pRP->treeID = currentTreeID;
      pRP->beaconSeqno = beaconSeqno;
  
  #ifdef TIMESYNC
--- 154,160 ----
      pRP->cost += currentParentAckEst;
  #endif
      pRP->treeID = currentTreeID;
      pRP->beaconSeqno = beaconSeqno;
+     pRP->beaconPeriod = beaconPeriod;
  
  #ifdef TIMESYNC
***************
*** 170,176 ****
  
      currentParentAddr = TOS_BCAST_ADDR;
!     currentParentCost = 0x7fff;
!     currentParentLinkEst = 0xff;
      currentParentAckEst = UNKNOWN_ACK_EST;
  
      call MA_Parent.init(sizeof(uint16_t), MA_TYPE_UINT);
--- 178,185 ----
  
      currentParentAddr = TOS_BCAST_ADDR;
!     currentParentCost = 0xffff;
!     currentParentLinkEst = 0xffff;
      currentParentAckEst = UNKNOWN_ACK_EST;
+     currentParentLQI = 0x0;
  
      call MA_Parent.init(sizeof(uint16_t), MA_TYPE_UINT);
***************
*** 188,193 ****
  
    command result_t StdControl.start() {
-     call AgingTimer.start(TIMER_ONE_SHOT, 
- 			  call Random.rand() % (1024 * BEACON_PERIOD));
      return SUCCESS;
    }
--- 197,200 ----
***************
*** 299,303 ****
      }
  
!     call AgingTimer.start(TIMER_ONE_SHOT, (1024 * BEACON_PERIOD));
      return SUCCESS;
    }
--- 306,310 ----
      }
  
!     call AgingTimer.start(TIMER_ONE_SHOT, (1024 * beaconPeriod));
      return SUCCESS;
    }
***************
*** 325,330 ****
        }
  
        call Timer.start(TIMER_ONE_SHOT, 
! 		       (call Random.rand() % (1024 * BEACON_PERIOD)) + 1);
      }
      
--- 332,343 ----
        }
  
+       if (pRP->beaconPeriod != beaconPeriod) {
+ 	beaconPeriod = pRP->beaconPeriod;
+ 	call AgingTimer.stop();
+ 	call AgingTimer.start(TIMER_ONE_SHOT,
+ 			      1024 * beaconPeriod);
+       }
        call Timer.start(TIMER_ONE_SHOT, 
! 		       (call Random.rand() % (1024 * beaconPeriod)) + 1);
      }
      
***************
*** 333,339 ****
      if (pRP->sourceAddr == currentParentAddr) {
  
        currentTreeID = pRP->treeID;
        currentParentCost = pRP->cost;
!       currentParentLinkEst = Msg->strength;
  
        missedBeacons = 0;
--- 346,363 ----
      if (pRP->sourceAddr == currentParentAddr) {
  
+       uint16_t newLinkEst;
+ 
+       
        currentTreeID = pRP->treeID;
        currentParentCost = pRP->cost;
! 
! #ifdef PLATFORM_TELOS
!       newLinkEst = adjustLQI(Msg->lqi);
!       currentParentLQI = Msg->lqi;
! #else
!       newLinkEst = Msg->strength;
! #endif
! 
!       currentParentLinkEst = newLinkEst;
  
        missedBeacons = 0;
***************
*** 350,369 ****
         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;
--- 374,407 ----
         switch if necessary */
  
!       uint32_t currentQuality = 
! 	(uint32_t) currentParentCost + (uint32_t) currentParentLinkEst; 
!       uint16_t newLinkEst;
!       uint32_t newQuality = pRP->cost;
!       
! #ifdef PLATFORM_TELOS
!       newLinkEst = adjustLQI(Msg->lqi);
!       newQuality += (uint32_t) adjustLQI(Msg->lqi);
  #else
!       newLinkEst = Msg->strength;
!       newQuality += (uint32_t) Msg->strength;
  #endif
!       
! #ifdef NO_ACK_EST
!       // do nothing
! #else
!       currentQuality += (uint32_t) currentParentAckEst;
!       newQuality += (uint32_t) UNKNOWN_ACK_EST;
! #endif
! 
!       if (newQuality < currentQuality && pRP->parent != TOS_LOCAL_ADDRESS) {
! 	
  	currentTreeID = pRP->treeID;
  	currentParentAddr = pRP->sourceAddr;
  	currentParentCost = pRP->cost;
! 	currentParentLinkEst = newLinkEst;
  	currentParentAckEst = UNKNOWN_ACK_EST;
! #ifdef PLATFORM_TELOS
! 	currentParentLQI = Msg->lqi;
! #endif
  	successCounter = 0;
  	failCounter = 0;



More information about the Tinyos-beta-commits mailing list