第一范文网 - 专业文章范例文档资料分享平台

Z-Stack开发指南

来源:用户分享 时间:2025/5/28 17:13:33 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——数据包发送给所有的路由器,包括协调器。

3.3.4 组寻址(Group Addressing)

当应用程序需要将数据包发送给网络上的一组设备时,使用该模式。地址模式设置为afAddrGroup并且addr.shortAddr设置为组ID。

在使用这个功能呢之前,必须在网络中定义组。(参见Z-stack API文档中的aps_AddGroup()函数)。

注意组可以用来关联间接寻址。再绑定表中找到的目标地址可能是是单点传送或者是一个组地址。另外,广播发送可以看做是一个组寻址的特例。

下面的代码是一个设备怎样加入到一个ID为1的组当中:

aps_Group_t group;

// Assign yourself to group 1

group.ID = 0x0001;

group.name[0] = 0; // This could be a human readable string

aps_AddGroup( SAMPLEAPP_ENDPOINT, &group );

3.4 重要设备地址(Important Device Adresses)

应用程序可能需要知道它的设备地址和父亲地址。使用下面的函数获取设备地址(在ZStack API中定义):

l NLME_GetShortAddr()——返回本设备的16位网络地址

l NLME_GetExtAddr()—— 返回本设备的64位扩展地址

使用下面的函数获取该设备的父亲设备的地址:

l NLME_GetCoordShortAddr()——返回本设备的父亲设备的16位网络地址

l NLME_GetCoordExtAddr()—— 返回本设备的父亲设备的64位扩展地址

4. 绑定(Binding)

绑定是一种两个(或者多个)应用设备之间信息流的控制机制。在ZigBee2006发布版本中,它被称为资源绑定,所有的设备都必须执行绑定机制。

绑定允许应用程序发送一个数据包而不需要知道目标地址。APS层从它的绑定表中确定目标地址,然后将数据继续向目标应用或者目标组发送。

注意:在ZigBee的1.0版本中,绑定表是保存在协调器(Coordinator当中)。现在所有的绑定记录都保存在发送信息的设备当中。

4.1 建立绑定表(Building a Binding Table)

有三种方法可以建立一个绑定表:

l Zigbee Device Object Bind Request——一个启动工具可以告诉设备创建一个绑定记录

l Zigbee Device Object End Device Bind Request——两个设备可以告诉协调器它们想要建立一个绑定表记录。协调器来协调并在两个设备中创建绑定表记录。

l Device Application——一个设备上的应用程序建立或者管理一个绑定表

4.1.1 ZigBee Device Object Binding Request

任何一个设备都可以发送一个ZDO信息给网络中的另一个设备,用来建立绑定表。称之为援助绑定,它可以为一个发送设备创建一个绑定记录。

4.1.1.1 启动申请(The Commissioning Application)

一个应用程序可以通过ZDP_BindReq()函数(在ZDProfile.h),并在绑定表中包含两个请求(地址和终点)以及想要的群ID。第一个参数(目标dstAddr)是绑定源的短地址即,16位网络地址。

确定你已经在ZDConfig.h允许了这个功能(ZDO_BIND_UNBIND_REQUEST)。

你也可以使用ZDP_UnbindReq()用同样的参数取消绑定记录。

目标设备发回ZigBee Device Object Bind 或者Unbind Response信息,该信息是ZDO代码根据动作的状态,通过调用ZDApp_BindRsq()或者ZDApp_UnbindRsq()函数来分析和通知ZDApp.c的。

对于绑定响应,从协调器返回的状态将是ZDP_SUCCESS,ZDP_TABLE_FULL或者ZDP_NOT_SUPPORTED。

对于解除绑定响应,从协调器返回的状态将是ZDP_SUCCESS,ZDP_NO_ENTRY或者ZDP_NOT_SUPPORTED。

4.1.1.2 ZigBee Device Object End Device Bind Request

这个机制是在指定的时间周期(timeout period)内,通过按下选定设备上的按钮或者类似的动作来绑定。协调器在指定的时间周期内,搜集终端设备的绑定请求信息,然后以配置 ID(Profile ID)和群ID(Cluster ID)协议为基础,创建一个绑定表记录作为结果。默认的设备绑定时间周期(APS_DEFAULT_MAXBINDING_TIME)是16秒钟(在 nwk_globals.h中定义)。但是将它添加到f8wConfig.cfg中,则可以更改。

在―用户指南‖中的应用程序就是一个终端设备绑定的例子(在每个设备上按下SW2按键)。

你应该注意到,所有的例程都有处理关键事件的函数(例如:在TransmitApp.c中的TransmitApp_HandleKeys()函数)。这个函数调用ZDApp_SendEndDeviceBindReq()(在ZDApp.c中)。这个函数搜集所有终端节点的请求信息,然后调用 ZDP_EndDeviceBindReq()函数将这些信息发送给协调器。

协调器调用函数ZDP_IncomingData()【ZDProfile.c中】函数接收这些信息,然后再调用 ZDApp_ProcessEndDeviceBindReq ()【ZDObject.c中】函数分析这些信息,最后调用ZDApp_EndDeviceBindReqCB【ZDApp.c中】函数,这个函数再调用 ZDO_MatchEndDeviceBind()【ZDObject.c中】函数来处理这个请求。

当收到两个匹配的终端设备绑定请求,协调器在请求设备中启动创建源绑定记录的进程。假设在ZDO终端设备中发现了匹配的请求,协调器将执行下面的步骤:

l 发送一个解除绑定请求给第一个设备。这个终端设备锁定进程,这样解除绑定被首先发送来去掉一个已经存在的绑定记录。

l 等待ZDO解除绑定的响应,如果响应的状态是ZDP_NO_ENTRY,则发送一个ZDO绑定请求在源设备中创建一个绑定记录。如果状态是ZDP_SUCCESS,则继续前进到第一个设备的群ID。

l 等待ZDO绑定响应,如果收到了,则继续前进到第一个设备的下一个群ID。

l 当地一个设备完成后,用同样的方法处理第二个设备。

l 当第二个设备也完成之后,发送ZDO 终端设备绑定请求消息给两个设备。

4.1.1.3 Device Application Binding Manager

另一种进入设备绑定记录的方式是应用自己管理绑定表。这就意味着应用程序需要通过调用下面的绑定管理函数在本地进入并且删除绑定记录:

l bindAddEntry()——在绑定表中增加一个记录

l bindRemoveEntry()——从绑定表中删除一个记录

l bindRomoveClusterIdFromList()——从一个存在的绑定表记录中删除一个群ID

l bindAddClusterIdToList()——向一个已经存在的绑定记录中增加一个群ID

l bindRemoveDev()——删除所有地址引用的记录

l bindRemoveSrcDev()——删除所有源地址引用的记录

l bindUpdateAddr()——将记录更新为另一个地址

l bindFindExisting()——查找一个绑定表记录

l bindIsClusterIdInList()——在表记录中检查一个已经存在的群ID

l bindNumBoundTo()——拥有相同地址(源或者目的)的记录的个数

l bindNumEntries()——表中记录的个数

l bindCapacity()——最多允许的记录个数

l bindWriteNV()——在NV中更新表

4.1.2 配置源绑定(Configuring Source Binding)

为了在你的设备中使能源绑定在f8wConfig.cfg文件中包含REFLECTOR编译标志。同时在f8wConfig.cfg文件中查看配置项目NWK_MAX_BINDING_ENTRIES和MAX_BINDING_CLUSTER_IDS。 NWK_MAX_BINDING_ENTRIES是限制绑定表中的记录的最大个数,MAX_BINDING_CLUSTER_IDS是每个绑定记录的群 ID的最大个数。

绑定表在静态RAM中(未分配),因此绑定表中记录的个数,每条记录中群ID的个数都实际影响着使用RAM的数量。每一条绑定记录是8字节多 (MAX_BINDING_CLUSTER_IDS * 2字节)。除了绑定表使用的静态RAM的数量,绑定配置项目也影响地址管理器中的记录的个数。

5. 路由(Routing)

5.1 概述(Overview)

A mesh network is described as a network in which the routing of messages is performed as a decentralized,cooperative process involving many peer devices routing on each others’ behalf.

路由对与应用层来说是完全透明的。应用程序只需简单的向下发送去往任何设备的

搜索更多关于: Z-Stack开发指南 的文档
Z-Stack开发指南.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4rohb1gd9r721et5igz1_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top