[Tinyos-2-commits] CVS: tinyos-2.x/tos/platforms/eyesIFX TimeSyncMessageP.nc, 1.2, 1.3 TimeSyncMessageC.nc, 1.2, 1.3 PacketStampP.nc, 1.2, 1.3 PacketStampC.nc, 1.2, 1.3 LocalTimeP.nc, 1.6, 1.7 LocalTimeC.nc, 1.3, 1.4
akoepke
andreaskoepke at users.sourceforge.net
Thu Jul 10 05:47:46 PDT 2008
Update of /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9219
Modified Files:
TimeSyncMessageP.nc TimeSyncMessageC.nc PacketStampP.nc
PacketStampC.nc LocalTimeP.nc LocalTimeC.nc
Log Message:
Comply with semantics described in TEP, use HilTimerMilli as base for LocalTime in milli seconds.
TestFtsp works, however FTSP relies on the assumption that
message_t.data = call Send.getPayload (just like BaseStation)
but this is not true for RedMac/SpeckMacD on an eyesIFX node.
After suitable modification of TimeSyncP (replace
TimeSyncMsg* msg = (TimeSyncMsg*)(processedMsg->data);
with
TimeSyncMsg* msg = (TimeSyncMsg*)(call Send.getPayload(processedMsg, sizeof(TimeSyncMsg)));
it works.
Index: TimeSyncMessageP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/TimeSyncMessageP.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TimeSyncMessageP.nc 9 Jul 2008 12:48:43 -0000 1.2
--- TimeSyncMessageP.nc 10 Jul 2008 12:47:44 -0000 1.3
***************
*** 31,35 ****
* Expose the time sync capabilities of the eyesIFX platform
*/
- #include "radiopacketfunctions.h"
module TimeSyncMessageP {
--- 31,34 ----
***************
*** 44,48 ****
interface AMSend as SubSend[am_id_t id];
interface AMPacket;
! interface LocalTime<TMilli> as LocalTimeMilli;
}
}
--- 43,48 ----
interface AMSend as SubSend[am_id_t id];
interface AMPacket;
! interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
! interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
}
}
***************
*** 61,65 ****
uint8_t len,
uint32_t event_time) {
! getMetadata(msg)->time = event_time;
resolution = RES_32_K;
return call SubSend.send[id](addr, msg, len);
--- 61,65 ----
uint8_t len,
uint32_t event_time) {
! call PacketTimeStamp32khz.set(msg, event_time);
resolution = RES_32_K;
return call SubSend.send[id](addr, msg, len);
***************
*** 80,88 ****
command bool TimeSyncPacket32khz.isValid(message_t* msg) {
! return TRUE;
}
command uint32_t TimeSyncPacket32khz.eventTime(message_t* msg) {
! return getMetadata(msg)->time;
};
--- 80,88 ----
command bool TimeSyncPacket32khz.isValid(message_t* msg) {
! return call PacketTimeStamp32khz.isValid(msg);
}
command uint32_t TimeSyncPacket32khz.eventTime(message_t* msg) {
! return call PacketTimeStamp32khz.timestamp(msg);
};
***************
*** 91,95 ****
uint8_t len,
uint32_t event_time) {
! getMetadata(msg)->time = (event_time * 32);
resolution = RES_1_K;
return call SubSend.send[id](addr, msg, len);
--- 91,96 ----
uint8_t len,
uint32_t event_time) {
!
! call PacketTimeStampMilli.set(msg, event_time);
resolution = RES_1_K;
return call SubSend.send[id](addr, msg, len);
***************
*** 109,119 ****
command bool TimeSyncPacketMilli.isValid(message_t* msg) {
! return TRUE;
}
command uint32_t TimeSyncPacketMilli.eventTime(message_t* msg) {
! uint32_t now = call LocalTimeMilli.get();
! uint32_t delay = (now * 32) - (getMetadata(msg)->time);
! return now - (delay / 32);
};
--- 110,118 ----
command bool TimeSyncPacketMilli.isValid(message_t* msg) {
! return call PacketTimeStamp32khz.isValid(msg);
}
command uint32_t TimeSyncPacketMilli.eventTime(message_t* msg) {
! return call PacketTimeStampMilli.timestamp(msg);
};
Index: TimeSyncMessageC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/TimeSyncMessageC.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TimeSyncMessageC.nc 9 Jul 2008 12:48:43 -0000 1.2
--- TimeSyncMessageC.nc 10 Jul 2008 12:47:44 -0000 1.3
***************
*** 39,45 ****
interface AMPacket;
- interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
- interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
-
interface TimeSyncAMSend<T32khz, uint32_t> as TimeSyncAMSend32khz[am_id_t id];
interface TimeSyncPacket<T32khz, uint32_t> as TimeSyncPacket32khz;
--- 39,42 ----
***************
*** 52,56 ****
components TimeSyncMessageP as TS;
components ActiveMessageC as AM;
! components LocalTimeC as LT;
SplitControl = AM;
--- 49,53 ----
components TimeSyncMessageP as TS;
components ActiveMessageC as AM;
! components PacketStampC as PS;
SplitControl = AM;
***************
*** 61,71 ****
AMPacket = AM;
- PacketTimeStamp32khz = AM;
- PacketTimeStampMilli = AM;
-
TS.SubSend -> AM.AMSend;
TS.AMPacket -> AM.AMPacket;
- TS.LocalTimeMilli -> LT;
TimeSyncAMSend32khz = TS;
TimeSyncAMSendMilli = TS;
--- 58,67 ----
AMPacket = AM;
TS.SubSend -> AM.AMSend;
TS.AMPacket -> AM.AMPacket;
+ TS.PacketTimeStamp32khz -> PS;
+ TS.PacketTimeStampMilli -> PS;
+
TimeSyncAMSend32khz = TS;
TimeSyncAMSendMilli = TS;
Index: PacketStampP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/PacketStampP.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PacketStampP.nc 9 Jul 2008 12:48:43 -0000 1.2
--- PacketStampP.nc 10 Jul 2008 12:47:44 -0000 1.3
***************
*** 33,66 ****
provides {
interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
}
uses {
interface LocalTime<TMilli> as LocalTimeMilli;
}
}
implementation {
! async command bool PacketTimeStamp32khz.isValid(message_t* msg) {
! return TRUE;
}
! async command void PacketTimeStamp32khz.clear(message_t* msg) {
}
! async command uint32_t PacketTimeStamp32khz.timestamp(message_t* msg) {
return getMetadata(msg)->time;
}
! async command void PacketTimeStamp32khz.set(message_t* msg, uint32_t value) {
! getMetadata(msg)->time = value;
}
! async command bool PacketTimeStampMilli.isValid(message_t* msg) {
return TRUE;
}
! async command void PacketTimeStampMilli.clear(message_t* msg) {
}
! async command uint32_t PacketTimeStampMilli.timestamp(message_t* msg) {
! uint32_t now = call LocalTimeMilli.get();
! uint32_t delay = (now * 32) - (getMetadata(msg)->time);
! return now - (delay / 32);
}
! async command void PacketTimeStampMilli.set(message_t* msg, uint32_t value) {
! getMetadata(msg)->time = value * 32;
}
}
--- 33,96 ----
provides {
interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
+ interface TimeSyncPacket<T32khz, uint32_t> as TimeSyncPacket32khz;
+
interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
+ interface TimeSyncPacket<TMilli, uint32_t> as TimeSyncPacketMilli;
}
uses {
interface LocalTime<TMilli> as LocalTimeMilli;
+ interface LocalTime<T32khz> as LocalTime32khz;
}
}
implementation {
! // 32 kHz interface
! // get the time when SFD event was generated
! async command uint32_t PacketTimeStamp32khz.timestamp(message_t* msg) {
! return getMetadata(msg)->sfdtime;
}
! // set the time when SFD event was generated?
! async command void PacketTimeStamp32khz.set(message_t* msg, uint32_t value) {
! getMetadata(msg)->sfdtime = value;
}
! // return time when event was generated at the source
! command uint32_t TimeSyncPacket32khz.eventTime(message_t* msg) {
return getMetadata(msg)->time;
+ };
+
+ // Milli interface
+ // get the time when SFD was send/received
+ async command uint32_t PacketTimeStampMilli.timestamp(message_t* msg) {
+ return call LocalTimeMilli.get() -
+ (call LocalTime32khz.get() - getMetadata(msg)->sfdtime)/32;
}
! // set the time when SFD was send/received?
! async command void PacketTimeStampMilli.set(message_t* msg, uint32_t value) {
! getMetadata(msg)->sfdtime =
! call LocalTime32khz.get() - (call LocalTimeMilli.get() - value)*32;
}
! // return time when event was generated
! command uint32_t TimeSyncPacketMilli.eventTime(message_t* msg) {
! return call LocalTimeMilli.get() -
! (call LocalTime32khz.get() - getMetadata(msg)->time)/32;
! };
!
! // not really supported functions, valid section
! command bool TimeSyncPacket32khz.isValid(message_t* msg) {
return TRUE;
}
! command bool TimeSyncPacketMilli.isValid(message_t* msg) {
! return TRUE;
}
! async command bool PacketTimeStamp32khz.isValid(message_t* msg) {
! return TRUE;
}
! async command bool PacketTimeStampMilli.isValid(message_t* msg) {
! return TRUE;
! }
!
! // not really supported functions, clear section
! async command void PacketTimeStamp32khz.clear(message_t* msg) {
! }
! async command void PacketTimeStampMilli.clear(message_t* msg) {
}
}
Index: PacketStampC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/PacketStampC.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PacketStampC.nc 9 Jul 2008 12:48:43 -0000 1.2
--- PacketStampC.nc 10 Jul 2008 12:47:44 -0000 1.3
***************
*** 29,34 ****
configuration PacketStampC {
! provides {
interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
}
--- 29,37 ----
configuration PacketStampC {
! provides {
! interface TimeSyncPacket<T32khz, uint32_t> as TimeSyncPacket32khz;
interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
+
+ interface TimeSyncPacket<TMilli, uint32_t> as TimeSyncPacketMilli;
interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
}
***************
*** 37,44 ****
components PacketStampP as PS;
components LocalTimeC as LT;
!
PacketTimeStamp32khz = PS;
PacketTimeStampMilli = PS;
! PS.LocalTimeMilli -> LT;
}
--- 40,53 ----
components PacketStampP as PS;
components LocalTimeC as LT;
! components HilTimerMilliC as HilMilli;
!
PacketTimeStamp32khz = PS;
+ TimeSyncPacket32khz = PS;
+
PacketTimeStampMilli = PS;
! TimeSyncPacketMilli = PS;
!
! PS.LocalTime32khz -> LT;
! PS.LocalTimeMilli -> HilMilli;
}
Index: LocalTimeP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/LocalTimeP.nc,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** LocalTimeP.nc 9 Jul 2008 12:48:43 -0000 1.6
--- LocalTimeP.nc 10 Jul 2008 12:47:44 -0000 1.7
***************
*** 31,35 ****
provides {
interface LocalTime<T32khz> as LocalTime32kHz;
- interface LocalTime<TMilli> as LocalTimeTMilli;
interface WideLocalTime<T32khz> as WideLocalTime;
}
--- 31,34 ----
***************
*** 92,100 ****
if(counter2sec == 0) ++dayCounter;
if(dayCounter < 0) dayCounter = 0;
! }
!
! async command uint32_t LocalTimeTMilli.get() {
! return (call WideLocalTime.get() / 32);
! }
}
--- 91,95 ----
if(counter2sec == 0) ++dayCounter;
if(dayCounter < 0) dayCounter = 0;
! }
}
Index: LocalTimeC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/LocalTimeC.nc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** LocalTimeC.nc 9 Jul 2008 10:00:44 -0000 1.3
--- LocalTimeC.nc 10 Jul 2008 12:47:44 -0000 1.4
***************
*** 31,35 ****
provides {
interface LocalTime<T32khz> as LocalTimeT32khz;
- interface LocalTime<TMilli> as LocalTimeTMilli;
interface WideLocalTime<T32khz> as WideLocalTime;
}
--- 31,34 ----
***************
*** 38,42 ****
components LocalTimeP, Counter32khz16C as Counter;
LocalTimeT32khz = LocalTimeP;
- LocalTimeTMilli = LocalTimeP;
WideLocalTime = LocalTimeP;
LocalTimeP.Counter32khz16 -> Counter;
--- 37,40 ----
More information about the Tinyos-2-commits
mailing list