]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/rf2xx/rf212/RF212ActiveMessageC.nc
implement the PacketLink layer
[tinyos-2.x.git] / tos / chips / rf2xx / rf212 / RF212ActiveMessageC.nc
index 6a79f8534e6e4d95d856f10110e4271621451c55..65eba63c45f23477b4dd47fbb9d63f0c61ffc58d 100644 (file)
@@ -36,7 +36,14 @@ configuration RF212ActiveMessageC
                interface Packet;
                interface AMPacket;
                interface PacketAcknowledgements;
+
+               // we provide a dummy LowPowerListening interface if LOW_POWER_LISTENING is not defined
                interface LowPowerListening;
+
+#ifdef PACKET_LINK
+               interface PacketLink;
+#endif
+
                interface RadioChannel;
 
                interface PacketField<uint8_t> as PacketLinkQuality;
@@ -50,13 +57,13 @@ configuration RF212ActiveMessageC
 
 implementation
 {
-       components RF212ActiveMessageP, RF212PacketC, IEEE154PacketC, RadioAlarmC;
+       components RF212ActiveMessageP, RF212PacketC, IEEE154Packet2C, RadioAlarmC;
 
 #ifdef RADIO_DEBUG
        components AssertC;
 #endif
 
-       RF212ActiveMessageP.IEEE154Packet -> IEEE154PacketC;
+       RF212ActiveMessageP.IEEE154Packet2 -> IEEE154Packet2C;
        RF212ActiveMessageP.Packet -> RF212PacketC;
        RF212ActiveMessageP.RadioAlarm -> RadioAlarmC.RadioAlarm[unique("RadioAlarm")];
 
@@ -77,19 +84,35 @@ implementation
 #else
        components IEEE154NetworkLayerC;
 #endif
+
 #ifdef LOW_POWER_LISTENING
        components LowPowerListeningLayerC;
+       LowPowerListeningLayerC.PacketSleepInterval -> RF230PacketC;
+       LowPowerListeningLayerC.IEEE154Packet2 -> IEEE154Packet2C;
+       LowPowerListeningLayerC.PacketAcknowledgements -> RF230PacketC;
 #else  
        components new DummyLayerC() as LowPowerListeningLayerC;
 #endif
+
+#ifdef PACKET_LINK
+       components PacketLinkLayerC;
+       PacketLink = PacketLinkLayerC;
+       PacketLinkLayerC.PacketData -> RF230PacketC;
+       PacketLinkLayerC.PacketAcknowledgements -> RF230PacketC;
+#else
+       components new DummyLayerC() as PacketLinkLayerC;
+#endif
+
        components MessageBufferLayerC;
        components UniqueLayerC;
        components TrafficMonitorLayerC;
+
 #ifdef SLOTTED_MAC
        components SlottedCollisionLayerC as CollisionAvoidanceLayerC;
 #else
        components RandomCollisionLayerC as CollisionAvoidanceLayerC;
 #endif
+
        components SoftwareAckLayerC;
        components new DummyLayerC() as CsmaLayerC;
        components RF212DriverLayerC;
@@ -100,7 +123,7 @@ implementation
        Snoop = ActiveMessageLayerC.Snoop;
 
        ActiveMessageLayerC.Config -> RF212ActiveMessageP;
-       ActiveMessageLayerC.AMPacket -> IEEE154PacketC;
+       ActiveMessageLayerC.AMPacket -> IEEE154Packet2C;
        ActiveMessageLayerC.SubSend -> IEEE154NetworkLayerC;
        ActiveMessageLayerC.SubReceive -> IEEE154NetworkLayerC;
 
@@ -112,13 +135,10 @@ implementation
        UniqueLayerC.SubSend -> LowPowerListeningLayerC;
 
        LowPowerListeningLayerC.SubControl -> MessageBufferLayerC;
-       LowPowerListeningLayerC.SubSend -> MessageBufferLayerC;
+       LowPowerListeningLayerC.SubSend -> PacketLinkLayerC;
        LowPowerListeningLayerC.SubReceive -> MessageBufferLayerC;
-#ifdef LOW_POWER_LISTENING
-       LowPowerListeningLayerC.PacketSleepInterval -> RF212PacketC;
-       LowPowerListeningLayerC.IEEE154Packet -> IEEE154PacketC;
-       LowPowerListeningLayerC.PacketAcknowledgements -> RF212PacketC;
-#endif
+
+       PacketLinkLayerC.SubSend -> MessageBufferLayerC;
 
        MessageBufferLayerC.Packet -> RF212PacketC;
        MessageBufferLayerC.RadioSend -> TrafficMonitorLayerC;