Lesson12---网络协议 TinyOS系统经典PPT教程 教学课件.ppt

Lesson12---网络协议 TinyOS系统经典PPT教程 教学课件.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lesson12---网络协议 TinyOS系统经典PPT教程 教学课件

Lesson12 网络协议 介绍两种基本的多跳协议:分发(Dissemination)和收集(Collection)。 分发协议可以可靠地传送小数据项到网络中的每一个节点。 收集协议则可以把网络中每个节点的小数据项传递到指定的根节点。 一、分发协议 分发协议主要用于实现共享变量的网络一致性。网络中的每一个节点都保存有该共享变量的一个副本。 在任意给定时刻,可能会有2个节点的变量值不相同。但随着时间的流逝,不一致的节点数会越来越少,最终整个网络都将统一于一个相同的变量值。 网络的一致性并不意味着每个节点都能够发现变量值的所有变动,它仅仅表示网络最终会在最新的变量值上达成一致。 能够将小数据分发到整个网络中,这个功能特性对于传感器网络的应用而言是非常有用的。它允许管理员向网络注入小段程序、命令以及配置信息。 1.1 分发协议的接口 两个接口:DisseminationValue和DisseminationUpdate接口。前者适用于分发数据的消费者(接收从网络中分发过来的数据),后者适用于生产者(产生需分发的数据)。 interface DisseminationValuet { command const t* get(); event void changed(); } 当分发的变量值发生改变时,就会触发changed()事件,再进行相应处理。消费者能够通过DisseminationValue.get()获取const类型的指针指向数据区域。 interface DisseminationUpdatet { command void change(t* newVal); } 调用change()命令会隐式地使其函数参数成为最新的分发值,并将其分发给网络中的每一个节点。 1.2 分发协议的组件 DisseminationValue接口和DisseminationUpdate接口由DisseminatorC组件提供。 generic configuration DisseminatorC(typedef t, uint16_t key) { //通用组件,需实例化 provides interface DisseminationValue t; provides interface DisseminationUpdate t; } 参数t即数据包结构类型,其大小必须能够包含于单个message_t包。 键值(key)允许创建不同的DisseminatorC实例组件,类似于AM标识号可以虚拟化AM服务。该值一般由unique()函数产生。 1.3 EasyDissemination实例 一个源节点周期性地将其计数值分发给网络中的其它节点。收到该计数值的节点将其显示到LED灯上。 二、收集协议 2.2 CTP协议的接口 setRoot()命令设立收集树的根节点。如果一个节点已经是根节点,并调用setRoot命令,则返回SUCCESS。那么接下来的isRoot命令返回TRUE。 2.2 CTP协议的组件 -- 1 CTP协议由CollectionC组件提供,其提供了无线通信的大多数基本接口。 2.2 CTP协议的组件 -- 2 注意:不可以绑定其它组件到CollectionC.Send接口,通用组件CollectionSenderC提供了虚拟化的发送接口。 2.3 EasyCollection实例 网络中的节点周期性地发送信息到基站,基站节点负责收集网络中所有的数据。 三、分发协议的补充说明 在TinyOS 2.x里,对于小数据项的分发协议有两种分发库:Drip和DIP。 Drip把每个数据项当做分发的单独实体,并提供了很好的粒子性控制,控制何时如何快速地把想要的数据项分发出去。 DIP则把它们当做一个群体,即分发控制和参数可以适用于所有的数据项集体。 Drip应该在你只有少数数据项且不确定每个节点的数据类型时使用。这个灵活性要求你的网络中发出更多的通知消息。 DIP则在所有的节点有统一的数据类型,且需要高效率的消息机制时使用。 configuration EasyDisseminationAppC {} implementation { components MainC; EasyDisseminationC.Boot - MainC; components LedsC; EasyDisseminationC.Leds - LedsC; components new TimerMilliC(); EasyDisseminationC.Timer - TimerMilliC; //part 1 components

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档