X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Ftda5250%2Fmac%2FSpeckMacDP.nc;h=daa64e713da604a94f87a48e55079be891d71ee3;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=5988ed47ef6772cabde438cad89f83543d88a65a;hpb=022d74b6f732058bcf08f9af5f7a28f246331401;p=tinyos-2.x.git diff --git a/tos/chips/tda5250/mac/SpeckMacDP.nc b/tos/chips/tda5250/mac/SpeckMacDP.nc index 5988ed47..daa64e71 100644 --- a/tos/chips/tda5250/mac/SpeckMacDP.nc +++ b/tos/chips/tda5250/mac/SpeckMacDP.nc @@ -140,6 +140,7 @@ implementation SUB_HEADER_TIME=PHY_HEADER_TIME + sizeof(message_header_t)*BYTE_TIME, SUB_FOOTER_TIME=2*BYTE_TIME, // 2 bytes crc +#ifndef DEFAULT_SLEEP_TIME DEFAULT_SLEEP_TIME=1625, // DEFAULT_SLEEP_TIME=3250, // DEFAULT_SLEEP_TIME=6500, @@ -147,6 +148,7 @@ implementation // DEFAULT_SLEEP_TIME=16384, // DEFAULT_SLEEP_TIME=32768U, // DEFAULT_SLEEP_TIME=65535U, +#endif DATA_DETECT_TIME=17, RX_SETUP_TIME=102, // time to set up receiver TX_SETUP_TIME=58, // time to set up transmitter @@ -346,7 +348,7 @@ implementation sT = networkSleeptime; } if(msg == NULL) return; - macHdr = (red_mac_header_t *)call SubPacket.getPayload(msg, sizeof(red_mac_header_t) + length); + macHdr = (red_mac_header_t *)call SubPacket.getPayload(msg, sizeof(red_mac_header_t)); macHdr->repetitionCounter = sT/(length * BYTE_TIME + SUB_HEADER_TIME + SUB_FOOTER_TIME) + 1; atomic { getHeader(msg)->token = seqNo; @@ -539,6 +541,7 @@ implementation MIN_BACKOFF_MASK = (MIN_BACKOFF_MASK << 1) + 1; } MIN_BACKOFF_MASK >>= 2; + if(MIN_BACKOFF_MASK < 0x3ff) MIN_BACKOFF_MASK=0x3ff; } #ifdef SPECKMAC_DEBUG call SerialDebug.putShortDesc("SpeckMacP"); @@ -788,6 +791,7 @@ implementation rxStat.duplicate = PERF_NEW_MSG; #endif storeStrength(msg); + getMetadata(msg)->sfdtime = rxTime; getMetadata(msg)->time = calcGeneratedTime((red_mac_header_t*) payload); getMetadata(msg)->ack = WAS_NOT_ACKED; m = signal MacReceive.receiveDone(msg); @@ -949,8 +953,10 @@ implementation async event void RadioTimeStamping.transmittedSFD(uint16_t time, message_t* p_msg ) { if((macState == TX) && (p_msg == txBufPtr)) { + getMetadata(p_msg)->sfdtime = call LocalTime32kHz.get(); txMacHdr->time = - call TimeDiff32.computeDelta(call LocalTime32kHz.get(), getMetadata(p_msg)->time); + call TimeDiff32.computeDelta(getMetadata(p_msg)->sfdtime, + getMetadata(p_msg)->time); } }