]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/rf2xx/rf230/RF230ActiveMessageC.nc
implement the PacketLink layer
[tinyos-2.x.git] / tos / chips / rf2xx / rf230 / RF230ActiveMessageC.nc
index 46c2f575da0f196753e4ab466aebdb6c3c7a76c1..af6e816e6441d6ce2a8e57919247f0b78baf3ce2 100644 (file)
@@ -36,7 +36,14 @@ configuration RF230ActiveMessageC
                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 RF230ActiveMessageC
 
 implementation
 {
-       components RF230ActiveMessageP, RF230PacketC, IEEE154PacketC, RadioAlarmC;
+       components RF230ActiveMessageP, RF230PacketC, IEEE154Packet2C, RadioAlarmC;
 
 #ifdef RADIO_DEBUG
        components AssertC;
 #endif
 
-       RF230ActiveMessageP.IEEE154Packet -> IEEE154PacketC;
+       RF230ActiveMessageP.IEEE154Packet2 -> IEEE154Packet2C;
        RF230ActiveMessageP.Packet -> RF230PacketC;
        RF230ActiveMessageP.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 RF230DriverLayerC;
@@ -100,7 +123,7 @@ implementation
        Snoop = ActiveMessageLayerC.Snoop;
 
        ActiveMessageLayerC.Config -> RF230ActiveMessageP;
-       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 -> RF230PacketC;
-       LowPowerListeningLayerC.IEEE154Packet -> IEEE154PacketC;
-       LowPowerListeningLayerC.PacketAcknowledgements -> RF230PacketC;
-#endif
+
+       PacketLinkLayerC.SubSend -> MessageBufferLayerC;
 
        MessageBufferLayerC.Packet -> RF230PacketC;
        MessageBufferLayerC.RadioSend -> TrafficMonitorLayerC;