[Tinyos-2-commits] CVS: tinyos-2.x/tos/chips/tda5250/mac RedMacP.nc, 1.3, 1.4 CsmaMacP.nc, 1.5, 1.6

akoepke andreaskoepke at users.sourceforge.net
Tue Feb 27 11:18:26 PST 2007


Update of /cvsroot/tinyos/tinyos-2.x/tos/chips/tda5250/mac
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv12749/tos/chips/tda5250/mac

Modified Files:
	RedMacP.nc CsmaMacP.nc 
Log Message:
increase raw bit rate from 38400 to 49000 bits/s


Index: RedMacP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/chips/tda5250/mac/RedMacP.nc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** RedMacP.nc	24 Jan 2007 19:40:27 -0000	1.3
--- RedMacP.nc	27 Feb 2007 19:18:24 -0000	1.4
***************
*** 187,205 ****
      /**************** Module Global Constants  *****************/
      enum {
          BYTE_TIME=13,                // byte at 38400 kBit/s, 4b6b encoded
          PREAMBLE_BYTE_TIME=9,        // byte at 38400 kBit/s, no coding
          PHY_HEADER_TIME=51,          // 6 Phy Preamble at 38400
          SUB_HEADER_TIME=PHY_HEADER_TIME + sizeof(tda5250_header_t)*BYTE_TIME,
!         SUB_FOOTER_TIME=2*BYTE_TIME, // 2 bytes crc 38400 kBit/s with 4b6b encoding
!         MAX_TIME_VALUE=0xFFFFFFFF,
!         MAXTIMERVALUE=0xFFFF,        // helps to compute backoff
          DEFAULT_SLEEP_TIME=3250,
          // DEFAULT_SLEEP_TIME=6500,
          // DEFAULT_SLEEP_TIME=9750,
          DATA_DETECT_TIME=17,
          RX_SETUP_TIME=111,    // time to set up receiver
          TX_SETUP_TIME=69,     // time to set up transmitter
!         ADDED_DELAY = 40,
!         RX_ACK_TIMEOUT = RX_SETUP_TIME + PHY_HEADER_TIME + 29 + 2*ADDED_DELAY,
          TX_GAP_TIME=RX_ACK_TIMEOUT + TX_SETUP_TIME + 11,
          // the duration of a send ACK
--- 187,211 ----
      /**************** Module Global Constants  *****************/
      enum {
+ /*
          BYTE_TIME=13,                // byte at 38400 kBit/s, 4b6b encoded
          PREAMBLE_BYTE_TIME=9,        // byte at 38400 kBit/s, no coding
          PHY_HEADER_TIME=51,          // 6 Phy Preamble at 38400
+ */
+         BYTE_TIME=10,                // byte at 49000 kBit/s, 4b6b encoded
+         PREAMBLE_BYTE_TIME=7,        // byte at 49000 kBit/s, no coding
+         PHY_HEADER_TIME=40,          // 6 Phy Preamble at 49000
+ 
          SUB_HEADER_TIME=PHY_HEADER_TIME + sizeof(tda5250_header_t)*BYTE_TIME,
!         SUB_FOOTER_TIME=2*BYTE_TIME, // 2 bytes crc 
!         // DEFAULT_SLEEP_TIME=1625,
          DEFAULT_SLEEP_TIME=3250,
          // DEFAULT_SLEEP_TIME=6500,
          // DEFAULT_SLEEP_TIME=9750,
+         // DEFAULT_SLEEP_TIME=16384,
          DATA_DETECT_TIME=17,
          RX_SETUP_TIME=111,    // time to set up receiver
          TX_SETUP_TIME=69,     // time to set up transmitter
!         ADDED_DELAY = 20,
!         RX_ACK_TIMEOUT = RX_SETUP_TIME + PHY_HEADER_TIME + 14 + 2*ADDED_DELAY,
          TX_GAP_TIME=RX_ACK_TIMEOUT + TX_SETUP_TIME + 11,
          // the duration of a send ACK
***************
*** 219,225 ****
          PREAMBLE_LONG = 6,
          PREAMBLE_SHORT = 2,
      };
      
- 
      /**************** Module Global Variables  *****************/
      typedef union 
--- 225,232 ----
          PREAMBLE_LONG = 6,
          PREAMBLE_SHORT = 2,
+         // reduced minimal backoff
+         ZERO_BACKOFF_MASK = 0xff
      };
      
      /**************** Module Global Variables  *****************/
      typedef union 
***************
*** 348,351 ****
--- 355,360 ----
  
      /**************** Helper functions ************************/
+     void computeBackoff();
+     
      void checkSend() {
          storeOldState(10);
***************
*** 361,365 ****
      uint32_t backoff(uint8_t counter) {
          uint32_t rVal = call Random.rand16() &  MIN_BACKOFF_MASK;
!         return rVal << counter;
      }
      
--- 370,374 ----
      uint32_t backoff(uint8_t counter) {
          uint32_t rVal = call Random.rand16() &  MIN_BACKOFF_MASK;
!         return (rVal << counter) + ZERO_BACKOFF_MASK;
      }
      
***************
*** 423,427 ****
              setFlag(&flags, MESSAGE_PREPARED);
              if((macState == SLEEP) && (!call Timer.isRunning()) && (!isFlagSet(&flags, RESUME_BACKOFF))) {
!                 call Timer.start(backoff(longRetryCounter));
              }
          }
--- 432,442 ----
              setFlag(&flags, MESSAGE_PREPARED);
              if((macState == SLEEP) && (!call Timer.isRunning()) && (!isFlagSet(&flags, RESUME_BACKOFF))) {
!                 if((longRetryCounter == 1) &&
!                    (getHeader(msg)->dest != AM_BROADCAST_ADDR)) {
!                     call Timer.start((call Random.rand16() >> 3) & ZERO_BACKOFF_MASK);
!                 }
!                 else {
!                     call Timer.start(backoff(longRetryCounter));
!                 }
              }
          }
***************
*** 505,512 ****
              }
              else {
!                 restLaufzeit +=  MAXTIMERVALUE - now;
              }
              if(restLaufzeit > MIN_BACKOFF_MASK << MAX_LONG_RETRY) {
!                 restLaufzeit = backoff(0);
              }
              setFlag(&flags, RESUME_BACKOFF);
--- 520,527 ----
              }
              else {
!                 restLaufzeit =  (uint16_t)(-1) - restLaufzeit + now;
              }
              if(restLaufzeit > MIN_BACKOFF_MASK << MAX_LONG_RETRY) {
!                 restLaufzeit = call Random.rand16() & ZERO_BACKOFF_MASK;
              }
              setFlag(&flags, RESUME_BACKOFF);
***************
*** 781,794 ****
                  if(congestionLevel > 0) congestionLevel--;
              }
!             if((macState == SLEEP) && (!call Timer.isRunning())) {
!                 if(isFlagSet(&flags, RESUME_BACKOFF)) {
!                     storeOldState(61);
!                     clearFlag(&flags, RESUME_BACKOFF);
!                     call Timer.start(restLaufzeit);
!                     restLaufzeit = 0;
!                 }
!                 else {
!                     storeOldState(62);
!                     checkSend();
                  }
              }
--- 796,811 ----
                  if(congestionLevel > 0) congestionLevel--;
              }
!             if(macState == SLEEP) {
!                 if(!call Timer.isRunning()) {
!                     if(isFlagSet(&flags, RESUME_BACKOFF)) {
!                         storeOldState(61);
!                         clearFlag(&flags, RESUME_BACKOFF);
!                         call Timer.start(restLaufzeit);
!                         restLaufzeit = 0;
!                     }
!                     else {
!                         storeOldState(62);
!                         checkSend();
!                     }
                  }
              }
***************
*** 1065,1069 ****
              else {
                  // assume a clock wrap here
!                 txMacHdr->time = MAX_TIME_VALUE - mTime + now;
              }
          }
--- 1082,1086 ----
              else {
                  // assume a clock wrap here
!                 txMacHdr->time = (uint32_t)(-1) - mTime + now;
              }
          }
***************
*** 1075,1078 ****
--- 1092,1096 ----
              time.lo = call Counter32khz16.get();
              time.hi = counter2sec;
+             if(call Counter32khz16.isOverflowPending()) ++time.hi;
          }
          return time.op;
***************
*** 1080,1088 ****
      
      async event void Counter32khz16.overflow() {
!         counter2sec++;
      }
  
!     
!     
      /****** Timer ******************************/
  
--- 1098,1105 ----
      
      async event void Counter32khz16.overflow() {
!         ++counter2sec;
      }
  
! 
      /****** Timer ******************************/
  
***************
*** 1111,1115 ****
              else {
                  storeOldState(154);
!                 call Timer.start(TX_GAP_TIME>>1);
                  requestAdc();
              }
--- 1128,1132 ----
              else {
                  storeOldState(154);
!                 call Timer.start(TX_GAP_TIME >> 1);
                  requestAdc();
              }
***************
*** 1119,1123 ****
              if(checkCounter < 3) {
                  storeOldState(158);                
!                 call Timer.start((TX_GAP_TIME + backoff(0))>>1);
                  requestAdc();
              }
--- 1136,1140 ----
              if(checkCounter < 3) {
                  storeOldState(158);                
!                 call Timer.start(TX_GAP_TIME >> 1);
                  requestAdc();
              }
***************
*** 1172,1176 ****
               if(isFlagSet(&flags, SWITCHING)) {
                   storeOldState(106);
!                  call Timer.start(backoff(0));
               }
               else {
--- 1189,1193 ----
               if(isFlagSet(&flags, SWITCHING)) {
                   storeOldState(106);
!                  call Timer.start(call Random.rand16() & 0x0f);
               }
               else {

Index: CsmaMacP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/chips/tda5250/mac/CsmaMacP.nc,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** CsmaMacP.nc	24 Jan 2007 19:40:27 -0000	1.5
--- CsmaMacP.nc	27 Feb 2007 19:18:24 -0000	1.6
***************
*** 88,94 ****
--- 88,101 ----
  
      enum {
+         /*
          BYTE_TIME=13,                // byte at 38400 kBit/s, 4b6b encoded
          PREAMBLE_BYTE_TIME=9,        // byte at 38400 kBit/s, no coding
          PHY_HEADER_TIME=51,          // 6 Phy Preamble at 38400
+         */
+ 
+         BYTE_TIME=10,                // byte at 49000 kBit/s, 4b6b encoded
+         PREAMBLE_BYTE_TIME=7,        // byte at 49000 kBit/s, no coding
+         PHY_HEADER_TIME=40,          // 6 Phy Preamble at 49000
+ 
          SUB_HEADER_TIME=PHY_HEADER_TIME + sizeof(tda5250_header_t)*BYTE_TIME,
          SUB_FOOTER_TIME=2*BYTE_TIME, // 2 bytes crc 38400 kBit/s with 4b6b encoding



More information about the Tinyos-2-commits mailing list