BlinkToRadio与ActiveMessageC的渊源

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

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值