module BlinkToRadioC { ///tinyos-2.x/apps
uses interface Boot;
uses interface Leds;
uses interface Timer<TMilli> as Timer0;
uses interface Packet;
uses interface AMPacket;
uses interface AMSend;
uses interface Receive;
uses interface SplitControl as AMControl;
}
configuration BlinkToRadioAppC {
}
implementation {......
components BlinkToRadioC as App;
components ActiveMessageC;
App.AMControl -> ActiveMessageC;..............
}
..................................................................................................................................................................................................................................
configuration ActiveMessageC { //tinyos-2.x/tos/lib/mac/tkn154
provides {
interface SplitControl;
interface AMSend[am_id_t id];
interface Receive[am_id_t id];
interface Receive as Snoop[am_id_t id];
interface Packet;
interface AMPacket;
interface PacketAcknowledgements;
interface IEEE154Frame;
}
}
implementation {
components TKN154ActiveMessageP as AM;
SplitControl = AM;
AMSend = AM;
Receive = AM.Receive;
Snoop = AM.Snoop;
AMPacket = AM;
Packet = AM;
PacketAcknowledgements = AM;
.........}
.....................................................................................................................................................................................................
module TKN154ActiveMessageP { //tinyos-2.x/tos/lib/mac/tkn154
provides {.......
interface IEEE154Frame as Frame;
}
command void* AMSend.getPayload[am_id_t id](message_t* m, uint8_t len)
{
return call Packet.getPayload(m, len);
}
command void* Packet.getPayload(message_t* msg, uint8_t len)
{if (len > call Packet.maxPayloadLength())
return NULL;
else
return call Frame.getPayload(msg);
}
default event message_t* Receive.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { return msg; }
default event message_t* Snoop.receive[am_id_t id](message_t* msg, void* payload, uint8_t len) { return msg; }
default event void AMSend.sendDone[uint8_t id](message_t* msg, error_t err) { }
}
...................................................................................................................................................................................................................................................
#include <TKN154.h>
#include <message.h>
interface IEEE154Frame //tinyos-2.x/tos/lib/mac/tkn154/interfaces/public
{
command uint8_t getSrcAddrMode(message_t* frame);
command error_t getSrcAddr(message_t* frame, ieee154_address_t *address);
command error_t getSrcPANId(message_t* frame, uint16_t* PANID);
command uint8_t getDstAddrMode(message_t* frame);
command error_t getDstAddr(message_t* frame, ieee154_address_t *address);
command error_t getDstPANId(message_t* frame, uint16_t* PANID);
command error_t setAddressingFields(message_t* frame,
uint8_t SrcAddrMode,
uint8_t DstAddrMode,
uint16_t DstPANID,
ieee154_address_t *DstAddr,
ieee154_security_t *security);
command void* getPayload(message_t* frame);
command uint8_t getPayloadLength(message_t* frame);
command uint32_t getTimestamp(message_t* frame);
command bool isTimestampValid(message_t* frame);
command uint8_t getDSN(message_t* frame);
command uint8_t getLinkQuality(message_t* frame);
command int8_t getRSSI(message_t* frame);
command uint8_t getFrameType(message_t* frame);
command void* getHeader(message_t* frame);
command uint8_t getHeaderLength(message_t* frame);
command bool wasPromiscuousModeEnabled(message_t* frame);
command bool hasStandardCompliantHeader(message_t* frame);
}