[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