概述
对于6LoWPAN的学习,tinyos2.x/apps/UDPEcho是对于初学者最好的例子了。系统例程考虑到应用的扩展性,在程序中增添了很多宏定义,对于熟练的应用者而言,这样是便于开发的;但对于初学者,程序显得复杂而臃肿。下面我们本着实现最简单应用的原则,将UDPEcho实例的代码精简。
在本示例中我们要实现的功能是:
- 能够实现ping6功能(支持ICMP协议)
- 能够接收和发送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(一) - 精简程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复