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;
implementation
{
- components RF212ActiveMessageP, IEEE154PacketLayerC, RadioAlarmC;
+ components RF212ActiveMessageP, RadioAlarmC;
#ifdef RADIO_DEBUG
components AssertC;
#endif
- RF212ActiveMessageP.IEEE154PacketLayer -> IEEE154PacketLayerC;
+ RF212ActiveMessageP.IEEE154MessageLayer -> IEEE154MessageLayerC;
RF212ActiveMessageP.RadioAlarm -> RadioAlarmC.RadioAlarm[unique("RadioAlarm")];
RF212ActiveMessageP.PacketTimeStamp -> TimeStampingLayerC;
+ RF212ActiveMessageP.ActiveMessagePacket -> ActiveMessageLayerC;
+ RF212ActiveMessageP.RF212Packet -> RF212DriverLayerC;
- Packet = RF212ActiveMessageP;
-
-// -------- ActiveMessage
+// -------- Active Message
components ActiveMessageLayerC;
ActiveMessageLayerC.Config -> RF212ActiveMessageP;
- ActiveMessageLayerC.AMPacket -> IEEE154PacketLayerC;
- ActiveMessageLayerC.SubSend -> IEEE154NetworkLayerC;
- ActiveMessageLayerC.SubReceive -> IEEE154NetworkLayerC;
+ ActiveMessageLayerC.SubSend -> LowpanNetworkLayerC;
+ ActiveMessageLayerC.SubReceive -> LowpanNetworkLayerC;
+ ActiveMessageLayerC.SubPacket ->LowpanNetworkLayerC;
AMSend = ActiveMessageLayerC;
+ Packet = ActiveMessageLayerC;
Receive = ActiveMessageLayerC.Receive;
Snoop = ActiveMessageLayerC.Snoop;
- AMPacket = IEEE154PacketLayerC;
+ AMPacket = ActiveMessageLayerC;
+ SendNotifier = ActiveMessageLayerC;
-// -------- IEEE154Network
+// -------- Lowpan Network
#ifdef TFRAMES_ENABLED
- components new DummyLayerC() as IEEE154NetworkLayerC;
+ components new DummyLayerC() as LowpanNetworkLayerC;
#else
- components IEEE154NetworkLayerC;
+ components LowpanNetworkLayerC;
#endif
- IEEE154NetworkLayerC.SubSend -> UniqueLayerC;
- IEEE154NetworkLayerC.SubReceive -> LowPowerListeningLayerC;
+ LowpanNetworkLayerC.SubSend -> IEEE154MessageLayerC;
+ LowpanNetworkLayerC.SubReceive -> LowPowerListeningLayerC;
+ LowpanNetworkLayerC.SubPacket -> IEEE154MessageLayerC;
+
+// -------- IEEE154 Message
+
+ components IEEE154MessageLayerC;
+ IEEE154MessageLayerC.SubPacket -> LowPowerListeningLayerC;
+ IEEE154MessageLayerC.SubSend -> UniqueLayerC;
// -------- UniqueLayer Send part (wired twice)
// -------- Low Power Listening
#ifdef LOW_POWER_LISTENING
+ #warning "*** USING LOW POWER LISTENING LAYER"
components LowPowerListeningLayerC;
- LowPowerListeningLayerC.PacketLplMetadata -> RF212ActiveMessageP;
- LowPowerListeningLayerC.IEEE154PacketLayer -> IEEE154PacketLayerC;
+ LowPowerListeningLayerC.Config -> RF212ActiveMessageP;
LowPowerListeningLayerC.PacketAcknowledgements -> SoftwareAckLayerC;
#else
components LowPowerListeningDummyC as LowPowerListeningLayerC;
LowPowerListeningLayerC.SubControl -> MessageBufferLayerC;
LowPowerListeningLayerC.SubSend -> PacketLinkLayerC;
LowPowerListeningLayerC.SubReceive -> MessageBufferLayerC;
+ LowPowerListeningLayerC.SubPacket -> PacketLinkLayerC;
SplitControl = LowPowerListeningLayerC;
LowPowerListening = LowPowerListeningLayerC;
// -------- Packet Link
#ifdef PACKET_LINK
+ #warning "*** USING PACKET LINK LAYER"
components PacketLinkLayerC;
PacketLink = PacketLinkLayerC;
- PacketLinkLayerC.PacketLinkMetadata -> RF212ActiveMessageP;
PacketLinkLayerC.PacketAcknowledgements -> SoftwareAckLayerC;
#else
components new DummyLayerC() as PacketLinkLayerC;
#endif
PacketLinkLayerC.SubSend -> MessageBufferLayerC;
+ PacketLinkLayerC.SubPacket -> TimeStampingLayerC;
// -------- MessageBuffer
components MessageBufferLayerC;
- MessageBufferLayerC.Packet -> RF212ActiveMessageP;
MessageBufferLayerC.RadioSend -> TrafficMonitorLayerC;
MessageBufferLayerC.RadioReceive -> UniqueLayerC;
MessageBufferLayerC.RadioState -> 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
CsmaLayerC -> RF212DriverLayerC.RadioSend;
CsmaLayerC -> RF212DriverLayerC.RadioCCA;
+// -------- TimeStamping
+
+ components TimeStampingLayerC;
+ TimeStampingLayerC.LocalTimeRadio -> RF212DriverLayerC;
+ TimeStampingLayerC.SubPacket -> MetadataFlagsLayerC;
+ PacketTimeStampRadio = TimeStampingLayerC;
+ PacketTimeStampMilli = TimeStampingLayerC;
+
+// -------- MetadataFlags
+
+ components MetadataFlagsLayerC;
+ MetadataFlagsLayerC.SubPacket -> RF212DriverLayerC;
+
// -------- RF212 Driver
components RF212DriverLayerC;
- RF212DriverLayerC.PacketRF212Metadata -> RF212ActiveMessageP;
- RF212DriverLayerC.RF212DriverConfig -> RF212ActiveMessageP;
+ RF212DriverLayerC.Config -> RF212ActiveMessageP;
RF212DriverLayerC.PacketTimeStamp -> TimeStampingLayerC;
PacketTransmitPower = RF212DriverLayerC.PacketTransmitPower;
PacketLinkQuality = RF212DriverLayerC.PacketLinkQuality;
PacketRSSI = RF212DriverLayerC.PacketRSSI;
LocalTimeRadio = RF212DriverLayerC;
-
-// -------- MetadataFlags
-
- components MetadataFlagsLayerC;
- MetadataFlagsLayerC.PacketFlagsMetadata -> RF212ActiveMessageP;
-
-// -------- TimeStamping
-
- components TimeStampingLayerC;
- TimeStampingLayerC.LocalTimeRadio -> RF212DriverLayerC;
- TimeStampingLayerC.PacketTimeStampMetadata -> RF212ActiveMessageP;
- PacketTimeStampRadio = TimeStampingLayerC;
- PacketTimeStampMilli = TimeStampingLayerC;
}