[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/net/le LinkEstimatorP.nc, 1.14, 1.15

John Regehr regehr at users.sourceforge.net
Tue Jun 3 22:45:23 PDT 2008


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/net/le
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9471/net/le

Modified Files:
	LinkEstimatorP.nc 
Log Message:
few more safe tinyos annotations

Index: LinkEstimatorP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/net/le/LinkEstimatorP.nc,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** LinkEstimatorP.nc	22 Jan 2008 18:04:30 -0000	1.14
--- LinkEstimatorP.nc	4 Jun 2008 05:45:20 -0000	1.15
***************
*** 101,107 ****
  
    // get the link estimation footer (neighbor entries) in the packet
!   linkest_footer_t* getFooter(message_t* m, uint8_t len) {
      // To get a footer at offset "len", the payload must be len + sizeof large.
!     return (linkest_footer_t*)(len + (uint8_t *)call Packet.getPayload(m,len + sizeof(linkest_footer_t)));
    }
  
--- 101,107 ----
  
    // get the link estimation footer (neighbor entries) in the packet
!   linkest_footer_t* getFooter(message_t* ONE m, uint8_t len) {
      // To get a footer at offset "len", the payload must be len + sizeof large.
!     return (linkest_footer_t* ONE)(len + (uint8_t *)call Packet.getPayload(m,len + sizeof(linkest_footer_t)));
    }
  
***************
*** 109,113 ****
    // footer (neighbor entries) in the packet. Call just before sending
    // the packet.
!   uint8_t addLinkEstHeaderAndFooter(message_t *msg, uint8_t len) {
      uint8_t newlen;
      linkest_header_t *hdr;
--- 109,113 ----
    // footer (neighbor entries) in the packet. Call just before sending
    // the packet.
!   uint8_t addLinkEstHeaderAndFooter(message_t * ONE msg, uint8_t len) {
      uint8_t newlen;
      linkest_header_t *hdr;
***************
*** 132,143 ****
      newPrevSentIdx = 0;
      for (i = 0; i < NEIGHBOR_TABLE_SIZE && j < maxEntries; i++) {
        k = (prevSentIdx + i + 1) % NEIGHBOR_TABLE_SIZE;
        if ((NeighborTable[k].flags & VALID_ENTRY) &&
  	  (NeighborTable[k].flags & MATURE_ENTRY)) {
! 	footer->neighborList[j].ll_addr = NeighborTable[k].ll_addr;
! 	footer->neighborList[j].inquality = NeighborTable[k].inquality;
  	newPrevSentIdx = k;
! 	dbg("LI", "Loaded on footer: %d %d %d\n", j, footer->neighborList[j].ll_addr,
! 	    footer->neighborList[j].inquality);
  	j++;
        }
--- 132,152 ----
      newPrevSentIdx = 0;
      for (i = 0; i < NEIGHBOR_TABLE_SIZE && j < maxEntries; i++) {
+       uint8_t neighborCount;
+       neighbor_stat_entry_t * COUNT(neighborCount) neighborLists;
+       if(maxEntries <= NEIGHBOR_TABLE_SIZE)
+         neighborCount = maxEntries;
+       else
+         neighborCount = NEIGHBOR_TABLE_SIZE;
+       
+       neighborLists = TCAST(neighbor_stat_entry_t * COUNT(neighborCount), footer->neighborList);
+ 
        k = (prevSentIdx + i + 1) % NEIGHBOR_TABLE_SIZE;
        if ((NeighborTable[k].flags & VALID_ENTRY) &&
  	  (NeighborTable[k].flags & MATURE_ENTRY)) {
! 	neighborLists[j].ll_addr = NeighborTable[k].ll_addr;
! 	neighborLists[j].inquality = NeighborTable[k].inquality;
  	newPrevSentIdx = k;
! 	dbg("LI", "Loaded on footer: %d %d %d\n", j, neighborLists[j].ll_addr,
! 	    neighborLists[j].inquality);
  	j++;
        }
***************
*** 612,616 ****
    // packets from upper layer that are wired to pass through
    // link estimator is received
!   void processReceivedMessage(message_t* msg, void* payload, uint8_t len) {
      uint8_t nidx;
      uint8_t num_entries;
--- 621,625 ----
    // packets from upper layer that are wired to pass through
    // link estimator is received
!   void processReceivedMessage(message_t* ONE msg, void* COUNT_NOK(len) payload, uint8_t len) {
      uint8_t nidx;
      uint8_t num_entries;
***************
*** 621,625 ****
      if (call SubAMPacket.destination(msg) == AM_BROADCAST_ADDR) {
        linkest_header_t* hdr = getHeader(msg);
!       linkest_footer_t* footer;
        am_addr_t ll_addr;
  
--- 630,634 ----
      if (call SubAMPacket.destination(msg) == AM_BROADCAST_ADDR) {
        linkest_header_t* hdr = getHeader(msg);
!       linkest_footer_t* ONE footer;
        am_addr_t ll_addr;
  
***************
*** 684,701 ****
        if ((nidx != INVALID_RVAL) && (num_entries > 0)) {
  	uint8_t payloadLen = call SubPacket.payloadLength(msg);
! 	void* subPayload = call SubPacket.getPayload(msg, payloadLen);
  	void* payloadEnd = subPayload + payloadLen;
  	dbg("LI", "Number of footer entries: %d\n", num_entries);
  	
! 	footer = (linkest_footer_t*) (payloadEnd - (num_entries*sizeof(linkest_footer_t)));
  	{
  	  uint8_t i;
  	  am_addr_t my_ll_addr;
  	  my_ll_addr = call SubAMPacket.address();
  	  for (i = 0; i < num_entries; i++) {
! 	    dbg("LI", "%d %d %d\n", i, footer->neighborList[i].ll_addr,
! 		footer->neighborList[i].inquality);
! 	    if (footer->neighborList[i].ll_addr == my_ll_addr) {
! 	      updateReverseQuality(ll_addr, footer->neighborList[i].inquality);
  	    }
  	  }
--- 693,712 ----
        if ((nidx != INVALID_RVAL) && (num_entries > 0)) {
  	uint8_t payloadLen = call SubPacket.payloadLength(msg);
! 	void* COUNT_NOK(payloadLen) subPayload = call SubPacket.getPayload(msg, payloadLen);
  	void* payloadEnd = subPayload + payloadLen;
  	dbg("LI", "Number of footer entries: %d\n", num_entries);
  	
! 	footer = TCAST(linkest_footer_t* COUNT(num_entries), (payloadEnd - (num_entries*sizeof(linkest_footer_t))));
  	{
  	  uint8_t i;
  	  am_addr_t my_ll_addr;
+           neighbor_stat_entry_t * COUNT(num_entries) neighborLists;
  	  my_ll_addr = call SubAMPacket.address();
+           neighborLists = TCAST(neighbor_stat_entry_t * COUNT(num_entries), footer->neighborList);
  	  for (i = 0; i < num_entries; i++) {
! 	    dbg("LI", "%d %d %d\n", i, neighborLists[i].ll_addr,
! 	    	neighborLists[i].inquality);
! 	    if (neighborLists[i].ll_addr == my_ll_addr) {
! 	      updateReverseQuality(ll_addr, neighborLists[i].inquality);
  	    }
  	  }



More information about the Tinyos-2-commits mailing list