]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/rf2xx/layers/TimeSyncMessageLayerC.nc
Use the AM_TIMESYNCMSG name for the active message ID used by all time sync messages
[tinyos-2.x.git] / tos / chips / rf2xx / layers / TimeSyncMessageLayerC.nc
index 808e0ab94b1846b58d0c8e6a42739840e8a8efe4..b1643522c8ef72280aa975d47ad550419cc3b889 100644 (file)
 #include <Timer.h>
 #include <AM.h>
 #include <RadioConfig.h>
+#include <TimeSyncMessageLayer.h>
 
 configuration TimeSyncMessageLayerC
 {
        provides
        {
+               interface Receive[uint8_t id];
+               interface Receive as Snoop[am_id_t id];
+               interface AMPacket;
                interface Packet;
 
                interface TimeSyncAMSend<TRadio, uint32_t> as TimeSyncAMSendRadio[am_id_t id];
@@ -45,9 +49,6 @@ configuration TimeSyncMessageLayerC
 
                interface LocalTime<TRadio> as LocalTimeRadio;
                interface PacketField<uint8_t> as PacketTimeSyncOffset;
-
-               interface AMSend as SubSend[am_id_t id];
-               interface Packet as SubPacket;
        }
 }
 
@@ -55,16 +56,27 @@ implementation
 {
        components TimeSyncMessageLayerP, LocalTimeMilliC;
 
+       AMPacket = TimeSyncMessageLayerP;
        Packet = TimeSyncMessageLayerP;
 
+       Receive = TimeSyncMessageLayerP.Receive;
+       Snoop = TimeSyncMessageLayerP.Snoop;
+
        TimeSyncAMSendRadio = TimeSyncMessageLayerP;
        TimeSyncPacketRadio = TimeSyncMessageLayerP;
 
        TimeSyncAMSendMilli = TimeSyncMessageLayerP;
        TimeSyncPacketMilli = TimeSyncMessageLayerP;
 
-       SubSend = TimeSyncMessageLayerP;
-       SubPacket = TimeSyncMessageLayerP;
+       // Ok, we use the AMSenderC infrastructure to avoid concurrent send clashes
+       components new AMSenderC(AM_TIMESYNCMSG);
+       TimeSyncMessageLayerP.SubAMSend -> AMSenderC;
+       TimeSyncMessageLayerP.SubAMPacket -> AMSenderC;
+       TimeSyncMessageLayerP.SubPacket -> AMSenderC;
+
+       components ActiveMessageC;
+       TimeSyncMessageLayerP.SubReceive -> ActiveMessageC.Receive[AM_TIMESYNCMSG];
+       TimeSyncMessageLayerP.SubSnoop -> ActiveMessageC.Snoop[AM_TIMESYNCMSG];;
 
        PacketTimeStampRadio = TimeSyncMessageLayerP;
        PacketTimeStampMilli = TimeSyncMessageLayerP;