]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
be more careful with conversion
authorandreaskoepke <andreaskoepke>
Wed, 9 Jul 2008 12:48:43 +0000 (12:48 +0000)
committerandreaskoepke <andreaskoepke>
Wed, 9 Jul 2008 12:48:43 +0000 (12:48 +0000)
tos/platforms/eyesIFX/LocalTimeP.nc
tos/platforms/eyesIFX/PacketStampC.nc
tos/platforms/eyesIFX/PacketStampP.nc
tos/platforms/eyesIFX/TimeSyncMessageC.nc
tos/platforms/eyesIFX/TimeSyncMessageP.nc

index f637469d774ad7eb4b579e07eb0baf55c354cc1c..2136381a1baa5f223a4880c6af932389a07e568f 100644 (file)
@@ -94,7 +94,7 @@ implementation  {
     }
     
     async command uint32_t LocalTimeTMilli.get() {
-        return (call LocalTime32kHz.get() / 32);
+        return (call WideLocalTime.get() / 32);
     }
 }
 
index a28d99462f5769a17489ea75ac585d89044439ea..88f1a0a1987ac75e66f4430838bf3f6c9f0543af 100644 (file)
@@ -35,7 +35,10 @@ configuration PacketStampC {
 }
 implementation  {
     components PacketStampP as PS;
+    components LocalTimeC as LT;
+    
     PacketTimeStamp32khz = PS;
     PacketTimeStampMilli = PS;
+    PS.LocalTimeMilli -> LT;  
 }
 
index 5893a1b8e37779bf1f91c8438c9ea5c78af040d9..e92f3c273acc7dc265d3047252e2d274899369f4 100644 (file)
@@ -34,6 +34,9 @@ module PacketStampP {
         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) {
@@ -47,14 +50,15 @@ implementation  {
     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) {
-        return (getMetadata(msg)->time / 32);
+        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;
index 963fafff9187f13c4ba8d4ee217ad71df4ad4f03..03ace249c84c09ea3bb48287da6d2575ac82f9fc 100644 (file)
@@ -51,7 +51,8 @@ configuration TimeSyncMessageC {
 implementation {
     components TimeSyncMessageP as TS;
     components ActiveMessageC as AM;
-
+    components LocalTimeC as LT;
+    
     SplitControl = AM;
 
     Receive      = AM.Receive;
@@ -64,6 +65,7 @@ implementation {
 
     TS.SubSend -> AM.AMSend;
     TS.AMPacket -> AM.AMPacket;
+    TS.LocalTimeMilli -> LT;
 
     TimeSyncAMSend32khz       = TS;
     TimeSyncAMSendMilli       = TS;
index 6748e144752fdd4a238672ac031dbd4732ce1090..9eceba8bad2615326a7ad6e8e7011a43e56c8682 100644 (file)
@@ -43,6 +43,7 @@ module TimeSyncMessageP {
     uses {
         interface AMSend as SubSend[am_id_t id];
         interface AMPacket;
+        interface LocalTime<TMilli> as LocalTimeMilli;
     }
 }
 implementation {
@@ -111,7 +112,9 @@ implementation {
     }
     
     command uint32_t TimeSyncPacketMilli.eventTime(message_t* msg) {
-        return (getMetadata(msg)->time / 32);
+        uint32_t now = call LocalTimeMilli.get();
+        uint32_t delay = (now * 32) - (getMetadata(msg)->time);
+        return now - (delay / 32);
     };
 
     event void SubSend.sendDone[uint8_t id](message_t* msg, error_t result) {