TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议

TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议

ID:41287850

大小:1.49 MB

页数:107页

时间:2019-08-21

TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议_第1页
TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议_第2页
TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议_第3页
TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议_第4页
TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议_第5页
资源描述:

《TinyOS操作系统开发技术及实践(西电版)第6章TinyOS网络协议》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章TinyOS网络协议6.1概述6.2分发路由协议6.3汇聚型路由协议6.4CTP协议的实现小结6.1概述路由协议一直是无线传感器网络研究的一个重要方向,在TinyOS2.x中有两种基本的多跳路由协议:分发路由协议(DisseminationProtocol)和汇聚型路由协议(CollectionProtocol)。分发协议能够可靠地传送小数据项到网络中的每一个节点;汇聚型路由协议可以把网络中每个节点的小数据项传递到指定的根节点。本章主要介绍这两种协议以及实现过程。6.2分发路由协议分发协议主要用于实现共享变量的网络一致性。网络中的每个节点都

2、保存有该共享变量的一个副本。分发服务会通知节点该变量值更改的时间,同时交换数据包以达到整个网络的一致性。在任意给定时刻,可能会有两个节点的变量值不相同。但过一段时间后,不一致的节点数会越来越少,最终整个网络都将同一于一个相同的变量值。分发协议具有以下几个特点: 分发协议能够达到网络的高度一致性,能有效避免临时性通信链路失效以及高丢包率等网络传输问题。   分发协议要求在有链路连接的情况下确保能够达到某个变量值一致。对于不同大小的数据项,分发协议的设计会有很大的不同。   以下内容将讲解分发协议的一系列接口和组件,以及具体的实现过程。6.2.1相关

3、接口和组件在TinyOS2.x中为分发协议提供了实现,下面讲解涉及到的重要接口和组件。1.分发协议的接口在分发协议中分发服务提供了两个主要的接口:DisseminationValue接口和DisseminationUpdate接口。它们都位于“tinyos-2.x/tos/lib/net/”目录下。(1)DisseminationValue接口。DisseminationValue接口适用于接收从网络中分发过来的数据,在此接口中包含两个命令函数和一个事件函数,其具体代码如代码6-1所示。【代码6-1】DisseminationValue.ncin

4、terfaceDisseminationValue{commandconstt*get();commandvoidset(constt*);eventvoidchanged();}其中,各个函数的功能如下所述:DisseminationValue.get()命令获取const类型的指针指向数据区域。DisseminationValue.set()命令允许节点改变其当前的变量值,并帮助节点给变量分配一个初始值。DisseminationValue.changed()触发节点改变变量值的事件。(2)DisseminationUpdate接口。D

5、isseminationUpdate接口用于产生分发的数据,此接口只包含一个命令函数,该命令有一个指针类型的参数,提供DisseminationUpdate接口的组件必须将数据赋值到自己分配的内存中,DisseminationValue接口必须触发change()事件,以此作为对change()调用的响应。其接口定义如代码6-2所示。【代码6-2】DisseminationUpdate.ncinterfaceDisseminationUpdate{commandvoidchange(t*ONEnewVal);}2.分发协议的组件在分发协议中

6、有较多的组件,本文将讲解比较重要的组件为DisseminatorC组件,该组件提供了DisseminationValue接口和DisseminationUpdate接口。该组件位于“tinyos-2.x/tos/lib/net/drip”,其具体代码如代码6-3所示。【代码6-3】DisseminatorC.ncgenericconfigurationDisseminatorC(typedeft,dip_key_tkey){providesinterfaceDisseminationValue;providesinterfaceDissem

7、inationUpdate;}在DisseminatorC组件中提供了两个参数:参数t和参数key。   参数t:数据包结构类型,其大小必须能够包含单个message_t包。   参数key:即键值key,允许创建不同的DisseminatorC实例组件,类似于AM标识号可以虚拟化AM服务。该键值一般由unique()函数产生。6.2.2分发协议的实现以下内容将实现任务描述6.D.1,使用分发协议进行小数据的发送接收,当节点收到分发者发送的数据时,点亮LED。需要以下几个步骤:(1)在“cygwinoptmytinyosapps”目录

8、下创建myDissemination子目录。(2)在myDissemination目录下创建并编写myDisseminationApp.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。