[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