[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