]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/chips/rf2xx/rf230/RF230RadioC.nc
Initial support for hardware acknowledgements and address recognition. Use RF230_HARD...
[tinyos-2.x.git] / tos / chips / rf2xx / rf230 / RF230RadioC.nc
index 380664b868bd598588c63e600e5d9d8bc10fc9a9..45270039436df5d613cf531b7546c3f7e809db47 100644 (file)
 
 #include <RadioConfig.h>
 
-#ifndef TFRAMES_ENABLED
-#define PACKET_LINK
-#endif
-
 configuration RF230RadioC
 {
        provides 
@@ -108,7 +104,7 @@ implementation
 #ifndef IEEE154FRAMES_ENABLED
 #ifndef TFRAMES_ENABLED
        components new AutoResourceAcquireLayerC();
-       AutoResourceAcquireLayerC.Resource -> SendResourceC.Resource[unique("RADIO_SEND_RESOURCE")];
+       AutoResourceAcquireLayerC.Resource -> SendResourceC.Resource[unique(RADIO_SEND_RESOURCE)];
 #else
        components new DummyLayerC() as AutoResourceAcquireLayerC;
 #endif
@@ -118,7 +114,7 @@ implementation
 // -------- RadioSend Resource
 
 #ifndef TFRAMES_ENABLED
-       components new SimpleFcfsArbiterC("RADIO_SEND_RESOURCE") as SendResourceC;
+       components new SimpleFcfsArbiterC(RADIO_SEND_RESOURCE) as SendResourceC;
        SendResource = SendResourceC;
 
 // -------- Ieee154 Message
@@ -162,7 +158,11 @@ implementation
        #warning "*** USING LOW POWER LISTENING LAYER"
        components LowPowerListeningLayerC;
        LowPowerListeningLayerC.Config -> RF230RadioP;
+#ifdef RF230_HARDWARE_ACK
+       LowPowerListeningLayerC.PacketAcknowledgements -> RF230DriverLayerC;
+#else
        LowPowerListeningLayerC.PacketAcknowledgements -> SoftwareAckLayerC;
+#endif
 #else  
        components LowPowerListeningDummyC as LowPowerListeningLayerC;
 #endif
@@ -178,7 +178,11 @@ implementation
 #ifdef PACKET_LINK
        components PacketLinkLayerC;
        PacketLink = PacketLinkLayerC;
+#ifdef RF230_HARDWARE_ACK
+       PacketLinkLayerC.PacketAcknowledgements -> RF230DriverLayerC;
+#else
        PacketLinkLayerC.PacketAcknowledgements -> SoftwareAckLayerC;
+#endif
 #else
        components new DummyLayerC() as PacketLinkLayerC;
 #endif
@@ -217,16 +221,23 @@ implementation
        components RandomCollisionLayerC as CollisionAvoidanceLayerC;
 #endif
        CollisionAvoidanceLayerC.Config -> RF230RadioP;
+#ifdef RF230_HARDWARE_ACK
+       CollisionAvoidanceLayerC.SubSend -> CsmaLayerC;
+       CollisionAvoidanceLayerC.SubReceive -> RF230DriverLayerC;
+#else
        CollisionAvoidanceLayerC.SubSend -> SoftwareAckLayerC;
        CollisionAvoidanceLayerC.SubReceive -> SoftwareAckLayerC;
+#endif
 
 // -------- SoftwareAcknowledgement
 
+#ifndef RF230_HARDWARE_ACK
        components SoftwareAckLayerC;
        SoftwareAckLayerC.Config -> RF230RadioP;
        SoftwareAckLayerC.SubSend -> CsmaLayerC;
        SoftwareAckLayerC.SubReceive -> RF230DriverLayerC;
        PacketAcknowledgements = SoftwareAckLayerC;
+#endif
 
 // -------- Carrier Sense
 
@@ -250,7 +261,13 @@ implementation
 
 // -------- RF230 Driver
 
+#ifdef RF230_HARDWARE_ACK
+       components RF230DriverHwAckC as RF230DriverLayerC;
+       PacketAcknowledgements = RF230DriverLayerC;
+       RF230DriverLayerC.Ieee154PacketLayer -> Ieee154PacketLayerC;
+#else
        components RF230DriverLayerC;
+#endif
        RF230DriverLayerC.Config -> RF230RadioP;
        RF230DriverLayerC.PacketTimeStamp -> TimeStampingLayerC;
        PacketTransmitPower = RF230DriverLayerC.PacketTransmitPower;