我是靠谱客的博主 顺心黄豆,这篇文章主要介绍TinyOS之UDPEcho(一) - 精简程序,现在分享给大家,希望可以做个参考。

对于6LoWPAN的学习,tinyos2.x/apps/UDPEcho是对于初学者最好的例子了。系统例程考虑到应用的扩展性,在程序中增添了很多宏定义,对于熟练的应用者而言,这样是便于开发的;但对于初学者,程序显得复杂而臃肿。下面我们本着实现最简单应用的原则,将UDPEcho实例的代码精简。

在本示例中我们要实现的功能是:

  1. 能够实现ping6功能(支持ICMP协议)
  2. 能够接收和发送UDP数据包
精简后代码如下:

//UDPEchoC.nc
#include <6lowpan.h>

configuration UDPEchoC {

} implementation {
  components MainC;
  components UDPEchoP;

  UDPEchoP.Boot -> MainC;

  components IPDispatchC;

  UDPEchoP.RadioControl -> IPDispatchC;
  components new UdpSocketC() as Echo;
  UDPEchoP.Echo -> Echo;
}

//UDPEchoP.nc
#include <IPDispatch.h>
#include <lib6lowpan.h>
#include <ip.h>
#include <lib6lowpan.h>
#include <ip.h>

#include "UDPReport.h"
#include "PrintfUART.h"


module UDPEchoP {
  uses {
    interface Boot;
    interface SplitControl as RadioControl;

    interface UDP as Echo;
  }

} implementation {
  event void Boot.booted() {
    call RadioControl.start();

    call Echo.bind(5002);
  }

  event void RadioControl.startDone(error_t e) {

  }

  event void RadioControl.stopDone(error_t e) {

  }

  event void Echo.recvfrom(struct sockaddr_in6 *from, void *data, 
                           uint16_t len, struct ip_metadata *meta) {
    call Echo.sendto(from, data, len);
  }
}
上面的精简的代码完全能够实现最初我们设定的功能。

最后

以上就是顺心黄豆最近收集整理的关于TinyOS之UDPEcho(一) - 精简程序的全部内容,更多相关TinyOS之UDPEcho(一)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(116)

评论列表共有 0 条评论

立即
投稿
返回
顶部