TinyOS之UDPEcho(一) - 精简程序

来源:互联网 发布:淘宝网65平开窗传动器 编辑:程序博客网 时间:2024/06/06 15:17

对于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);  }}
上面的精简的代码完全能够实现最初我们设定的功能。

原创粉丝点击