- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
11.2.3 TinyOS通信模型 1.主动消息概述 主动消息模式是一个面向消息通信(message-based communication)的高性能通信模式。早期一般应用于并行和分布式计算系统中,在主动消息通信方式中,每个消息都维护一个应用层(application-level)的处理器(handler),即处理子程序。当目标节点收到这个消息后,就会把消息中的数据作为参数,并传递给应用层的处理器进行处理。应用层的处理器一般完成消息数据的解包操作、计算处理或发送响应消息等工作。在这种情况下,网络就像是一条包含最小消息缓冲区的流水线,消除了一般通信协议中经常碰到的缓冲区处理方面的困难情况。为了避免网络拥塞,还需要消息处理器能够实现异步执行机制。 尽管主动消息起源于并行和分布式计算领域,但其基本思想适合无线传感网的需求。主动消息的轻量级体系结构在设计上同时考虑了通信框架的可扩展性和有效性。主动消息不但可以让应用程序开发者避免使用忙等(busy-waiting)方式等待消息数据的到来,而且可以在通信与计算之间形成重叠,极大地提高CPU的使用效率,并减少传感器节点的能耗。 5. 通信接口和组件 TinyOS系统提供了很多与底层通信相关的接口,并提供了实现这些接口的组件。所有的接口和组件使用一个共同的消息缓存区,称为message_t,一种nesC的结构体(类似于C语言的结构体struct)。message_t代替了TinyOS1.x里的TOS_Msg。与TinyOS1.x不同的是,message_t的成员是不透明的,即不能直接访问。更确切地说,message_t是一个抽象的数据类型,它的成员必须通过accessor函数和mutator函数来读写。 (1)基本通信接口 通信相关的接口和组件使用message_t作为底层的数据结构。通信接口的定义文件都位于tos/interfaces,下面介绍几个常用的通信接口: 1)Packet接口:提供对message_t抽象数据类型的基本访问,其命令有: ①void clear(message_t*msg):清空消息缓存区中的内容。 ②void*getPayload(message_t*msg,uint8_tlen):返回消息有效载荷区的指针。 ③uint8_t payloadLength(message_t*msg)-返回有效载荷区的长度。 ④uint8_t maxPayloadLength():返回有效载荷区的最大长度。 ⑤void setPayloadLength(message_t*msg,uint8__tlen):设定有效载荷区的长度。 2)Send接口:面向任意地址的消息发送接口,其命令和事件有: ①error_t send(message_t*msg,uint8_tlen):发送消息。 ②error_t cancel(message_t*msg):取消消息的发送。 ③void*getPayload(message_t*msg,uint8_t len):返回消息有效载荷区的指针。 ④uint8_t maxPayloadLengt():返回有效载荷区的最大长度。. ⑤void sendDone(message_t*msg,error_t error):指示消息发送结果的事件。 3)Receive接口:最基本的消息接收接口,提供了接收到消息时触发的事件函数:message_t*receive(message_t*msg,void*payload,uint8_tlen):返回刚接收到消息。 4)PacketAcknowledgements接口:提供一种信息包确认的机制。 5)RadioTimeStamping接口:为无线电的发射和接收提供时间标记信息。 (2)主动消息接口 考虑到一个应用程序里通常有多个服务需要使用同一个无线通信,TinyOS采用主动消息层(ActiveMessage,AM)来实现无线通信的多渠道访问机制。AM信息包也包含了目标地址域,把AM地址存储在特定节点的信息包中。 1)AMPacket接口:类似Packet接口,提供对messaget抽象数据类型的AM访问。这个接口提供的命令有: ①am_addr_t address():返回节点的AM地址。 ②am_addr_t destination(message_t*amsg):返回消息包的目标地址。 ③void setDestination(messag_t*amsg,am_addr_t addr):设置AM消息包的目的地址。 ④am_addr_t source(message_t*amsg):返回AM消息包的源地址。 ⑤void setSource(message_t*am_addr_t addr):设置AM消息包的源
您可能关注的文档
最近下载
- 正方体的11种展开图--A4直接打印版.docx VIP
- 新能源汽车动力电池管理及维护技术PPT课件.pptx VIP
- 【中职】高教2023版 世界历史第2课 古代希腊罗马 PPT课件.pptx VIP
- DB32_T4725-2024池塘养殖尾水生态处理技术规范.pdf VIP
- Kaierda凯尔达 KC20机器人操作说明书.pdf VIP
- 第四章陈述性知识课件.ppt VIP
- 锚固剂参数、规格与安装说明.doc VIP
- 2025年安徽省第七届粮食行业职业技能大赛(粮油保管员赛项)备考试题库资料(含答案).pdf VIP
- “巴渝工匠”杯重庆市粮食行业职业技能竞赛_(粮油)仓储管理员备赛试题库资料(含答案).pdf
- 最新锅炉工资格完整考试题库必背100题(含答案) .pdf VIP
文档评论(0)