[Tinyos-2-commits] CVS: tinyos-2.x/tos/chips/cc1000 CC1000SendReceiveP.nc, 1.12, 1.13
Jan Beutel
beutel at users.sourceforge.net
Mon Sep 1 01:28:40 PDT 2008
Update of /cvsroot/tinyos/tinyos-2.x/tos/chips/cc1000
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv17586/tos/chips/cc1000
Modified Files:
CC1000SendReceiveP.nc
Log Message:
reverted devdj commit that broke building for mica2dot
Index: CC1000SendReceiveP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/chips/cc1000/CC1000SendReceiveP.nc,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** CC1000SendReceiveP.nc 19 Aug 2008 10:28:02 -0000 1.12
--- CC1000SendReceiveP.nc 1 Sep 2008 08:28:38 -0000 1.13
***************
*** 1,2 ****
--- 1,4 ----
+ // $Id$
+
/*
* "Copyright (c) 2000-2005 The Regents of the University of California.
***************
*** 31,35 ****
#include "CC1000Const.h"
#include "Timer.h"
- #include "CC1000TimeSyncMessage.h"
/**
--- 33,36 ----
***************
*** 50,54 ****
* @author Joe Polastre
* @author David Gay
- * @author Marco Langerwisch (Packet timestamping)
*/
--- 51,54 ----
***************
*** 59,70 ****
interface Send;
interface Receive;
interface Packet;
interface ByteRadio;
interface PacketAcknowledgements;
interface LinkPacketMetadata;
-
- interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
- interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
- interface PacketTimeSyncOffset;
}
uses {
--- 59,67 ----
interface Send;
interface Receive;
+ interface RadioTimeStamping;
interface Packet;
interface ByteRadio;
interface PacketAcknowledgements;
interface LinkPacketMetadata;
}
uses {
***************
*** 75,93 ****
interface ReadNow<uint16_t> as RssiRx;
async command am_addr_t amAddress();
-
- interface LocalTime<T32khz> as LocalTime32khz;
- interface LocalTime<TMilli> as LocalTimeMilli;
}
}
implementation
{
- #ifdef PLATFORM_MICA2
- // estimated calibration, 19.2 Kbps data, Manchester Encoding, time in jiffies (32768 Hz)
- static const int8_t BIT_CORRECTION[8] = { 27, 28, 30, 32, 34, 36, 38, 40 };
- #else
- // other platforms not calibrated yet
- static const uint8_t BIT_CORRECTION[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
- #endif
-
enum {
OFF_STATE,
--- 72,79 ----
***************
*** 272,283 ****
else {
cc1000_header_t *header = getHeader(msg);
- cc1000_metadata_t *metadata = getMetadata(msg);
f.txBusy = TRUE;
header->length = len;
txBufPtr = msg;
-
- metadata->timesync = FALSE;
- metadata->timestamp = CC1000_INVALID_TIMESTAMP;
}
}
--- 258,265 ----
***************
*** 318,321 ****
--- 300,304 ----
nextTxByte = SYNC_BYTE2;
enterTxDataState();
+ signal RadioTimeStamping.transmittedSFD(0, txBufPtr);
}
***************
*** 323,338 ****
cc1000_header_t *txHeader = getHeader(txBufPtr);
sendNextByte();
-
- if (nextTxByte == SYNC_BYTE2) {
- // SYNC_WORD has just been sent
- uint32_t time32khz = call LocalTime32khz.get();
- call PacketTimeStamp32khz.set(txBufPtr, time32khz);
-
- if (call PacketTimeSyncOffset.isSet(txBufPtr)) {
- timesync_radio_t *timesync = (timesync_radio_t*)((void*)txBufPtr + call PacketTimeSyncOffset.get(txBufPtr));
- // set timesync event time as the offset between the event time and the SFD interrupt time (TEP 133)
- *timesync -= time32khz;
- }
- }
if (count < txHeader->length + sizeof(message_header_t))
--- 306,309 ----
***************
*** 475,484 ****
{
// TODO: Modify to be tolerant of bad bits in the preamble...
- uint32_t time;
uint16_t tmp;
uint8_t i;
- time = call LocalTime32khz.get();
-
// bit shift the data in with previous sample to find sync
tmp = rxShiftBuf;
--- 446,452 ----
***************
*** 497,504 ****
signal ByteRadio.rx();
f.rxBitOffset = 7 - i;
! // correct receive time according to bit offset and set timestamp
! time -= BIT_CORRECTION[f.rxBitOffset];
! call PacketTimeStamp32khz.set(rxBufPtr, time);
!
call RssiRx.read();
}
--- 465,469 ----
signal ByteRadio.rx();
f.rxBitOffset = 7 - i;
! signal RadioTimeStamping.receivedSFD(0);
call RssiRx.read();
}
***************
*** 713,782 ****
return getMetadata(msg)->metadataBits & CC1000_WHITE_BIT;
}
!
! /***************** PacketTimeStamp32khz Commands ****************/
! async command bool PacketTimeStamp32khz.isValid(message_t* msg)
! {
! return (getMetadata(msg)->timestamp != CC1000_INVALID_TIMESTAMP);
! }
!
! async command uint32_t PacketTimeStamp32khz.timestamp(message_t* msg)
! {
! return getMetadata(msg)->timestamp;
! }
!
! async command void PacketTimeStamp32khz.clear(message_t* msg)
! {
! getMetadata(msg)->timesync = FALSE;
! getMetadata(msg)->timestamp = CC1000_INVALID_TIMESTAMP;
! }
!
! async command void PacketTimeStamp32khz.set(message_t* msg, uint32_t value)
! {
! getMetadata(msg)->timestamp = value;
! }
!
! /***************** PacketTimeStampMilli Commands ****************/
! // over the air value is always T32khz
! async command bool PacketTimeStampMilli.isValid(message_t* msg)
! {
! return call PacketTimeStamp32khz.isValid(msg);
! }
!
! async command uint32_t PacketTimeStampMilli.timestamp(message_t* msg)
! {
! int32_t offset = call PacketTimeStamp32khz.timestamp(msg) - call LocalTime32khz.get();
! return (offset >> 5) + call LocalTimeMilli.get();
! }
!
! async command void PacketTimeStampMilli.clear(message_t* msg)
! {
! call PacketTimeStamp32khz.clear(msg);
! }
!
! async command void PacketTimeStampMilli.set(message_t* msg, uint32_t value)
! {
! int32_t offset = (value - call LocalTimeMilli.get()) << 5;
! call PacketTimeStamp32khz.set(msg, offset + call LocalTime32khz.get());
! }
!
! /*----------------- PacketTimeSyncOffset -----------------*/
! async command bool PacketTimeSyncOffset.isSet(message_t* msg)
! {
! return getMetadata(msg)->timesync;
! }
!
! async command uint8_t PacketTimeSyncOffset.get(message_t* msg)
! {
! return sizeof(cc1000_header_t) + getHeader(msg)->length - sizeof(timesync_radio_t);
! }
!
! async command void PacketTimeSyncOffset.set(message_t* msg)
! {
! getMetadata(msg)->timesync = TRUE;
! }
!
! async command void PacketTimeSyncOffset.cancel(message_t* msg)
! {
! getMetadata(msg)->timesync = FALSE;
! }
}
--- 678,685 ----
return getMetadata(msg)->metadataBits & CC1000_WHITE_BIT;
}
!
! // Default events for radio send/receive coordinators do nothing.
! // Be very careful using these, or you'll break the stack.
! default async event void RadioTimeStamping.transmittedSFD(uint16_t time, message_t *msgBuff) { }
! default async event void RadioTimeStamping.receivedSFD(uint16_t time) { }
}
More information about the Tinyos-2-commits
mailing list