BlinkToRadio与ActiveMessageC

来源:互联网 发布:ps磨皮滤镜mac中文版 编辑:程序博客网 时间:2024/06/09 20:54

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);

}

0 0
原创粉丝点击