[Tinyos-2-commits] CVS: tinyos-2.x/tos/platforms/eyesIFX TimeSyncMessageP.nc, NONE, 1.1 TimeSyncMessageC.nc, NONE, 1.1 PacketStampP.nc, NONE, 1.1 PacketStampC.nc, NONE, 1.1 LocalTimeP.nc, 1.4, 1.5 LocalTimeC.nc, 1.2, 1.3 ActiveMessageC.nc, 1.5, 1.6

akoepke andreaskoepke at users.sourceforge.net
Wed Jul 9 03:00:50 PDT 2008


Update of /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27162

Modified Files:
	LocalTimeP.nc LocalTimeC.nc ActiveMessageC.nc 
Added Files:
	TimeSyncMessageP.nc TimeSyncMessageC.nc PacketStampP.nc 
	PacketStampC.nc 
Log Message:
started support for FTSP


--- NEW FILE: TimeSyncMessageP.nc ---
/* -*- mode:c++; indent-tabs-mode:nil -*- 
 * Copyright (c) 2008, Technische Universitaet Berlin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met:
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright 
 *   notice, this list of conditions and the following disclaimer in the 
 *   documentation and/or other materials provided with the distribution.
 * - Neither the name of the Technische Universitaet Berlin nor the names 
 *   of its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * Expose the time sync capabilities of the eyesIFX platform 
 */
#include "radiopacketfunctions.h"

module TimeSyncMessageP {
    provides {
        interface TimeSyncAMSend<T32khz, uint32_t> as TimeSyncAMSend32khz[am_id_t id];
        interface TimeSyncPacket<T32khz, uint32_t> as TimeSyncPacket32khz;

        interface TimeSyncAMSend<TMilli, uint32_t> as TimeSyncAMSendMilli[am_id_t id];
        interface TimeSyncPacket<TMilli, uint32_t> as TimeSyncPacketMilli;
    }
    uses {
        interface AMSend as SubSend[am_id_t id];
        interface AMPacket;
    }
}
implementation {
    typedef enum 
    {
        NONE,
        RES_32_K,
        RES_1_K
    } resolution_t;

    resolution_t resolution = NONE;
    
    command error_t TimeSyncAMSend32khz.send[am_id_t id](am_addr_t addr,
                                                         message_t* msg,
                                                         uint8_t len,
                                                         uint32_t event_time) {
        getMetadata(msg)->time = event_time;
        resolution = RES_32_K;
        return call SubSend.send[id](addr, msg, len);
    }
    
    command error_t TimeSyncAMSend32khz.cancel[am_id_t id](message_t* msg) {
        return call SubSend.cancel[id](msg);
    }
    
    command uint8_t TimeSyncAMSend32khz.maxPayloadLength[am_id_t id]() {
        return call SubSend.maxPayloadLength[id]();
    }
    
    command void* TimeSyncAMSend32khz.getPayload[am_id_t id](message_t* m, uint8_t len) {
        return call SubSend.getPayload[id](m, len);
    }


    command bool TimeSyncPacket32khz.isValid(message_t* msg) {
        return TRUE;
    }
    
    command uint32_t TimeSyncPacket32khz.eventTime(message_t* msg) {
        return getMetadata(msg)->time;
    };
    
    command error_t TimeSyncAMSendMilli.send[am_id_t id](am_addr_t addr,
                                                         message_t* msg,
                                                         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);
    }
    
    command error_t TimeSyncAMSendMilli.cancel[am_id_t id](message_t* msg) {
        return call SubSend.cancel[id](msg);
    }
    
    command uint8_t TimeSyncAMSendMilli.maxPayloadLength[am_id_t id]() {
        return call SubSend.maxPayloadLength[id]();
    }
    
    command void* TimeSyncAMSendMilli.getPayload[am_id_t id](message_t* m, uint8_t len) {
        return call SubSend.getPayload[id](m, len);
    }

    command bool TimeSyncPacketMilli.isValid(message_t* msg) {
        return TRUE;
    }
    
    command uint32_t TimeSyncPacketMilli.eventTime(message_t* msg) {
        return (getMetadata(msg)->time / 32);
    };

    event void SubSend.sendDone[uint8_t id](message_t* msg, error_t result) {
        if(resolution == RES_32_K) {
            signal TimeSyncAMSend32khz.sendDone[id](msg, result);
        }
        else {
            signal TimeSyncAMSendMilli.sendDone[id](msg, result);
        }
    }

    default event void TimeSyncAMSend32khz.sendDone[uint8_t id](message_t* msg, error_t err) {
        return;
    }
    default event void TimeSyncAMSendMilli.sendDone[uint8_t id](message_t* msg, error_t err) {
        return;
    }
}


--- NEW FILE: TimeSyncMessageC.nc ---
/* -*- mode:c++; indent-tabs-mode:nil -*- 
 * Copyright (c) 2008, Technische Universitaet Berlin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met:
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright 
 *   notice, this list of conditions and the following disclaimer in the 
 *   documentation and/or other materials provided with the distribution.
 * - Neither the name of the Technische Universitaet Berlin nor the names 
 *   of its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
 * Expose the time sync capabilities of the eyesIFX platform 
 */
configuration TimeSyncMessageC {
  provides {
    interface SplitControl;
    interface Receive[am_id_t id];
    interface Receive as Snoop[am_id_t id];
    interface Packet;
    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;

    interface TimeSyncAMSend<TMilli, uint32_t> as TimeSyncAMSendMilli[am_id_t id];
    interface TimeSyncPacket<TMilli, uint32_t> as TimeSyncPacketMilli;
  }
}
implementation {
    components TimeSyncMessageP as TS;
    components ActiveMessageC as AM;

    SplitControl = AM;

    Receive      = AM.Receive;
    Snoop        = AM.Snoop;
    Packet       = AM;
    AMPacket     = AM;
    
    PacketTimeStamp32khz = AM;
    PacketTimeStampMilli = AM;

    TS.SubSend -> AM.AMSend;
    TS.AMPacket -> AM.AMPacket;

    TimeSyncAMSend32khz       = TS;
    TimeSyncAMSendMilli       = TS;
    TimeSyncPacket32khz       = TS;
    TimeSyncPacketMilli       = TS;
}

--- NEW FILE: PacketStampP.nc ---
/* -*- mode:c++; indent-tabs-mode:nil -*- 
 * Copyright (c) 2008, Technische Universitaet Berlin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met:
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright 
 *   notice, this list of conditions and the following disclaimer in the 
 *   documentation and/or other materials provided with the distribution.
 * - Neither the name of the Technische Universitaet Berlin nor the names 
 *   of its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include "radiopacketfunctions.h"

module PacketStampP {
    provides {  
        interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
        interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
    }
}
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) {
        return (getMetadata(msg)->time / 32);
    }
    async command void PacketTimeStampMilli.set(message_t* msg, uint32_t value) {
        getMetadata(msg)->time = value * 32;
    }
}


--- NEW FILE: PacketStampC.nc ---
/* -*- mode:c++; indent-tabs-mode:nil -*- 
 * Copyright (c) 2008, Technische Universitaet Berlin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met:
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright 
 *   notice, this list of conditions and the following disclaimer in the 
 *   documentation and/or other materials provided with the distribution.
 * - Neither the name of the Technische Universitaet Berlin nor the names 
 *   of its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

configuration PacketStampC {
    provides {  
        interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
        interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
    }
}
implementation  {
    components PacketStampP as PS;
    PacketTimeStamp32khz = PS;
    PacketTimeStampMilli = PS;
}


Index: LocalTimeP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/LocalTimeP.nc,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** LocalTimeP.nc	7 Dec 2007 19:00:15 -0000	1.4
--- LocalTimeP.nc	9 Jul 2008 10:00:43 -0000	1.5
***************
*** 31,34 ****
--- 31,35 ----
      provides {  
          interface LocalTime<T32khz> as LocalTime32kHz;
+         interface LocalTime<TMilli> as LocalTimeTMilli;
          interface WideLocalTime<T32khz> as WideLocalTime;
      }
***************
*** 92,95 ****
--- 93,100 ----
          if(dayCounter < 0) dayCounter = 0;
      }
+     
+     async command uint32_t LocalTimeTMilli.get() {
+         return (call LocalTime32kHz.get() / 32);
+     }
  }
  

Index: LocalTimeC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/LocalTimeC.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** LocalTimeC.nc	5 Dec 2007 10:14:55 -0000	1.2
--- LocalTimeC.nc	9 Jul 2008 10:00:44 -0000	1.3
***************
*** 30,34 ****
  configuration LocalTimeC {
      provides {  
!         interface LocalTime<T32khz> as LocalTime;
          interface WideLocalTime<T32khz> as WideLocalTime;
      }
--- 30,35 ----
  configuration LocalTimeC {
      provides {  
!         interface LocalTime<T32khz> as LocalTimeT32khz;
!         interface LocalTime<TMilli> as LocalTimeTMilli;
          interface WideLocalTime<T32khz> as WideLocalTime;
      }
***************
*** 36,40 ****
  implementation  {
      components LocalTimeP, Counter32khz16C as Counter;
!     LocalTime = LocalTimeP;
      WideLocalTime = LocalTimeP;
      LocalTimeP.Counter32khz16 -> Counter;
--- 37,42 ----
  implementation  {
      components LocalTimeP, Counter32khz16C as Counter;
!     LocalTimeT32khz = LocalTimeP;
!     LocalTimeTMilli = LocalTimeP;
      WideLocalTime = LocalTimeP;
      LocalTimeP.Counter32khz16 -> Counter;

Index: ActiveMessageC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/platforms/eyesIFX/ActiveMessageC.nc,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** ActiveMessageC.nc	11 Jun 2008 00:46:26 -0000	1.5
--- ActiveMessageC.nc	9 Jul 2008 10:00:44 -0000	1.6
***************
*** 46,49 ****
--- 46,51 ----
   */
  
+ #include "Timer.h"
+ 
  configuration ActiveMessageC {
    provides {
***************
*** 58,61 ****
--- 60,66 ----
  
      interface PacketAcknowledgements;
+ 
+     interface PacketTimeStamp<T32khz, uint32_t> as PacketTimeStamp32khz;
+     interface PacketTimeStamp<TMilli, uint32_t> as PacketTimeStampMilli;
    }
  }
***************
*** 63,66 ****
--- 68,72 ----
    components ActiveMessageFilterC as Filter;
    components Tda5250ActiveMessageC as AM;
+   components PacketStampC as PacketStamp;
  
    AMSend       = Filter;
***************
*** 78,80 ****
--- 84,89 ----
  
    PacketAcknowledgements = AM;
+ 
+   PacketTimeStamp32khz = PacketStamp;
+   PacketTimeStampMilli = PacketStamp;
  }



More information about the Tinyos-2-commits mailing list