- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Z-Stack协议栈运行机制详解
掌握Z-Stack的运行机制,能完成任务初始化函数的编写;能掌握用户事件处理函数的运行流程;能掌握事件和数据的传输方式。任务描述
Z-Stack协议栈运行流程Z-Stack采用基于一个轮转查询式操作系统,该操作系统命名为OSAL(OperatingSystemAbstractionLayer),中文为“操作系统抽象层”。Z-Stack协议栈将底层、网络层等复杂部分屏蔽掉,让程序员通过API函数就可以轻松地开发一套ZigBee系统。
Z-Stack协议栈运行流程:
Z-Stack协议栈运行流程:系统初始化:1
Z-Stack协议栈运行流程:OSAL?任务初始化2
Z-Stack协议栈运行流程:事件处理函数3
Z-Stack协议栈运行流程:Z-Stack协议栈运行流程:任务轮循4
Z-Stack协议栈运行流程:任务轮循4三者的关系如图
协议栈简单的工作流程
事件和消息事件1在ZigBee协议栈中,事件可以是用户定义的事件,也可以是协议栈内部已经定义的事件。事件变量是16位的二进制变量(uint16占2个字节),一个OSAL任务最多可以定义16个事件。SYS_EVENT_MSG就是协议栈内部定义的事件之一,SYS_EVENT_MSG定义如下:#define SYS_EVENT_MSG0x8000
AF_INCOMING_MSG_CMD:表示收到了一个新的无线数据事件。ZDO_STATE_CHANGE:表示当网络状态发生变化时,会产生该事件。KEY_CHANGE:表示按键事件。ZDO_CB_MSG:表示每一个注册的ZDO响应消息。AF_DATA_CONFIRM_CMD:调用AF_DataRequest()发送数据时,有时需要确认信息,该事件与此有关。由协议栈定的事件为系统强制事件(MandatoryEvents),SYS_EVENT_MSG是一个事件集合,主要包括以下几个事件:事件和消息事件1
事件和消息消息2消息是收到的事件和数据的一个封装,比如发生了一个事件(收到别的节点发的消息),这时就会把这个事件所对应的事件号及收到的数据封装成消息,放入消息队列中。OSAL消息队列:通常某些事件的发生,双伴随着一些附加数据的产生,这就需要将事件和数据封装成一个消息,将消息发送到消息队列中,然后使用osal_msg_receive(SampleApp_TaskID)函数从消息队列中得到消息。
事件和消息OSAL维护一个消息队列,每个消息都会被放入该消息队列中,每个消息都包括一个消息头osal_msg_hdr_t和用户自定义的消息。在OSAL.h中osal_msg_hdr_t结构体的定义为:typedefstruct { void*next; uint16len; uint8dest_id; }osal_msg_hdr_t;
单播、组播与广播:Zigbee网络中进行数据通信主要有三种类型:单播、组播、广播。单播即传送数据包只发送给一个设备;组播即传送数据包给一组设备;而广播数据包则要发送给整个网络的所有节点。无论哪种数据发送模式,必须有发送地址模式参数。单播组播广播
单播、组播与广播:在AF.h文件中定义了结构体afAddrType_t,通过配置该结构体变量的参数来设置发送地址模式参数。typedefstruct{union{uint16shortAddr;?//用于标识该节点网络地址的变量ZLongAddr_textAddr;}addr;afAddrMode_taddrMode;//用于指定数据传送模式,单播、组播还是广播uint8endPoint;uint16panId;//usedfortheINTER_PANfeature}afAddrType_t;
单播、组播与广播:在上述结构体中成员addrMode的值为枚举类型,如下所示:typedefenum{afAddrNotPresent=AddrNotPresent,?//表示通过绑定关系指定目的地址afAddr16Bit=Addr16Bit,?//短地址单播发送afAddr64Bit=Addr64Bit,//长地址单播发送afAddrGroup=AddrGroup,//组播afAddrBroadcast=AddrBroadcast//广播}afAddrMode_t;
单播、组播与广播:单播1直接指定目标地址的单播传输:是标准寻址模式,它将数据包发送给
原创力文档


文档评论(0)