X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Frf2xx%2Frf212%2FRF212ActiveMessageC.nc;h=d6076abbf23f194107301e351af3d46316dea9c8;hb=00e708814493e030803019f2a98f3fe7e707805d;hp=6a79f8534e6e4d95d856f10110e4271621451c55;hpb=a4f296e45b6dca5370f596e8be299f40253eb946;p=tinyos-2.x.git diff --git a/tos/chips/rf2xx/rf212/RF212ActiveMessageC.nc b/tos/chips/rf2xx/rf212/RF212ActiveMessageC.nc index 6a79f853..d6076abb 100644 --- a/tos/chips/rf2xx/rf212/RF212ActiveMessageC.nc +++ b/tos/chips/rf2xx/rf212/RF212ActiveMessageC.nc @@ -32,17 +32,24 @@ configuration RF212ActiveMessageC interface AMSend[am_id_t id]; interface Receive[am_id_t id]; interface Receive as Snoop[am_id_t id]; + interface SendNotifier[am_id_t id]; interface Packet; interface AMPacket; interface PacketAcknowledgements; interface LowPowerListening; + +#ifdef PACKET_LINK + interface PacketLink; +#endif + interface RadioChannel; interface PacketField as PacketLinkQuality; interface PacketField as PacketTransmitPower; interface PacketField as PacketRSSI; + interface LocalTime as LocalTimeRadio; interface PacketTimeStamp as PacketTimeStampRadio; interface PacketTimeStamp as PacketTimeStampMilli; } @@ -50,99 +57,155 @@ configuration RF212ActiveMessageC implementation { - components RF212ActiveMessageP, RF212PacketC, IEEE154PacketC, RadioAlarmC; + components RF212ActiveMessageP, RadioAlarmC; #ifdef RADIO_DEBUG components AssertC; #endif - RF212ActiveMessageP.IEEE154Packet -> IEEE154PacketC; - RF212ActiveMessageP.Packet -> RF212PacketC; + RF212ActiveMessageP.IEEE154MessageLayer -> IEEE154MessageLayerC; RF212ActiveMessageP.RadioAlarm -> RadioAlarmC.RadioAlarm[unique("RadioAlarm")]; + RF212ActiveMessageP.PacketTimeStamp -> TimeStampingLayerC; + RF212ActiveMessageP.ActiveMessagePacket -> ActiveMessageLayerC; + RF212ActiveMessageP.RF212Packet -> RF212DriverLayerC; - Packet = RF212PacketC; - AMPacket = RF212PacketC; - PacketAcknowledgements = RF212PacketC; - PacketLinkQuality = RF212PacketC.PacketLinkQuality; - PacketTransmitPower = RF212PacketC.PacketTransmitPower; - PacketRSSI = RF212PacketC.PacketRSSI; - PacketTimeStampRadio = RF212PacketC; - PacketTimeStampMilli = RF212PacketC; - LowPowerListening = LowPowerListeningLayerC; - RadioChannel = MessageBufferLayerC; +// -------- Active Message components ActiveMessageLayerC; + ActiveMessageLayerC.Config -> RF212ActiveMessageP; + ActiveMessageLayerC.SubSend -> LowpanNetworkLayerC; + ActiveMessageLayerC.SubReceive -> LowpanNetworkLayerC; + ActiveMessageLayerC.SubPacket ->LowpanNetworkLayerC; + AMSend = ActiveMessageLayerC; + Packet = ActiveMessageLayerC; + Receive = ActiveMessageLayerC.Receive; + Snoop = ActiveMessageLayerC.Snoop; + AMPacket = ActiveMessageLayerC; + SendNotifier = ActiveMessageLayerC; + +// -------- Lowpan Network + #ifdef TFRAMES_ENABLED - components new DummyLayerC() as IEEE154NetworkLayerC; -#else - components IEEE154NetworkLayerC; -#endif -#ifdef LOW_POWER_LISTENING - components LowPowerListeningLayerC; -#else - components new DummyLayerC() as LowPowerListeningLayerC; -#endif - components MessageBufferLayerC; - components UniqueLayerC; - components TrafficMonitorLayerC; -#ifdef SLOTTED_MAC - components SlottedCollisionLayerC as CollisionAvoidanceLayerC; + components new DummyLayerC() as LowpanNetworkLayerC; #else - components RandomCollisionLayerC as CollisionAvoidanceLayerC; + components LowpanNetworkLayerC; #endif - components SoftwareAckLayerC; - components new DummyLayerC() as CsmaLayerC; - components RF212DriverLayerC; + LowpanNetworkLayerC.SubSend -> IEEE154MessageLayerC; + LowpanNetworkLayerC.SubReceive -> LowPowerListeningLayerC; + LowpanNetworkLayerC.SubPacket -> IEEE154MessageLayerC; - SplitControl = LowPowerListeningLayerC; - AMSend = ActiveMessageLayerC; - Receive = ActiveMessageLayerC.Receive; - Snoop = ActiveMessageLayerC.Snoop; +// -------- IEEE154 Message - ActiveMessageLayerC.Config -> RF212ActiveMessageP; - ActiveMessageLayerC.AMPacket -> IEEE154PacketC; - ActiveMessageLayerC.SubSend -> IEEE154NetworkLayerC; - ActiveMessageLayerC.SubReceive -> IEEE154NetworkLayerC; + components IEEE154MessageLayerC; + IEEE154MessageLayerC.SubPacket -> LowPowerListeningLayerC; + IEEE154MessageLayerC.SubSend -> UniqueLayerC; - IEEE154NetworkLayerC.SubSend -> UniqueLayerC; - IEEE154NetworkLayerC.SubReceive -> LowPowerListeningLayerC; +// -------- UniqueLayer Send part (wired twice) - // the UniqueLayer is wired at two points + components UniqueLayerC; UniqueLayerC.Config -> RF212ActiveMessageP; UniqueLayerC.SubSend -> LowPowerListeningLayerC; +// -------- Low Power Listening + +#ifdef LOW_POWER_LISTENING + #warning "*** USING LOW POWER LISTENING LAYER" + components LowPowerListeningLayerC; + LowPowerListeningLayerC.Config -> RF212ActiveMessageP; + LowPowerListeningLayerC.PacketAcknowledgements -> SoftwareAckLayerC; +#else + components LowPowerListeningDummyC as LowPowerListeningLayerC; +#endif 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; + LowPowerListeningLayerC.SubPacket -> PacketLinkLayerC; + SplitControl = LowPowerListeningLayerC; + LowPowerListening = LowPowerListeningLayerC; + +// -------- Packet Link + +#ifdef PACKET_LINK + #warning "*** USING PACKET LINK LAYER" + components PacketLinkLayerC; + PacketLink = PacketLinkLayerC; + PacketLinkLayerC.PacketAcknowledgements -> SoftwareAckLayerC; +#else + components new DummyLayerC() as PacketLinkLayerC; #endif + PacketLinkLayerC.SubSend -> MessageBufferLayerC; + PacketLinkLayerC.SubPacket -> TimeStampingLayerC; - MessageBufferLayerC.Packet -> RF212PacketC; +// -------- MessageBuffer + + components MessageBufferLayerC; MessageBufferLayerC.RadioSend -> TrafficMonitorLayerC; MessageBufferLayerC.RadioReceive -> UniqueLayerC; MessageBufferLayerC.RadioState -> TrafficMonitorLayerC; + RadioChannel = MessageBufferLayerC; + +// -------- UniqueLayer receive part (wired twice) UniqueLayerC.SubReceive -> TrafficMonitorLayerC; +// -------- Traffic Monitor + +#ifdef TRAFFIC_MONITOR + components TrafficMonitorLayerC; +#else + components new DummyLayerC() as TrafficMonitorLayerC; +#endif TrafficMonitorLayerC.Config -> RF212ActiveMessageP; - TrafficMonitorLayerC.SubSend -> CollisionAvoidanceLayerC; - TrafficMonitorLayerC.SubReceive -> CollisionAvoidanceLayerC; - TrafficMonitorLayerC.SubState -> RF212DriverLayerC; + TrafficMonitorLayerC -> CollisionAvoidanceLayerC.RadioSend; + TrafficMonitorLayerC -> CollisionAvoidanceLayerC.RadioReceive; + TrafficMonitorLayerC -> RF212DriverLayerC.RadioState; +// -------- CollisionAvoidance + +#ifdef SLOTTED_MAC + components SlottedCollisionLayerC as CollisionAvoidanceLayerC; +#else + components RandomCollisionLayerC as CollisionAvoidanceLayerC; +#endif CollisionAvoidanceLayerC.Config -> RF212ActiveMessageP; CollisionAvoidanceLayerC.SubSend -> SoftwareAckLayerC; CollisionAvoidanceLayerC.SubReceive -> SoftwareAckLayerC; +// -------- SoftwareAcknowledgement + + components SoftwareAckLayerC; SoftwareAckLayerC.Config -> RF212ActiveMessageP; SoftwareAckLayerC.SubSend -> CsmaLayerC; SoftwareAckLayerC.SubReceive -> RF212DriverLayerC; + PacketAcknowledgements = SoftwareAckLayerC; +// -------- Carrier Sense + + components new DummyLayerC() as CsmaLayerC; CsmaLayerC.Config -> RF212ActiveMessageP; CsmaLayerC -> RF212DriverLayerC.RadioSend; CsmaLayerC -> RF212DriverLayerC.RadioCCA; - RF212DriverLayerC.RF212DriverConfig -> RF212ActiveMessageP; +// -------- TimeStamping + + components TimeStampingLayerC; + TimeStampingLayerC.LocalTimeRadio -> RF212DriverLayerC; + TimeStampingLayerC.SubPacket -> MetadataFlagsLayerC; + PacketTimeStampRadio = TimeStampingLayerC; + PacketTimeStampMilli = TimeStampingLayerC; + +// -------- MetadataFlags + + components MetadataFlagsLayerC; + MetadataFlagsLayerC.SubPacket -> RF212DriverLayerC; + +// -------- RF212 Driver + + components RF212DriverLayerC; + RF212DriverLayerC.Config -> RF212ActiveMessageP; + RF212DriverLayerC.PacketTimeStamp -> TimeStampingLayerC; + PacketTransmitPower = RF212DriverLayerC.PacketTransmitPower; + PacketLinkQuality = RF212DriverLayerC.PacketLinkQuality; + PacketRSSI = RF212DriverLayerC.PacketRSSI; + LocalTimeRadio = RF212DriverLayerC; }