- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ZigBee绑定指南
一、绑定(Binding)
绑定是一种控制两个或者多个设备应用层之间信息流传递的机制。在ZigBee2006发布版本中,它被称为源绑定,所有的设备都可以执行绑定机制。
绑定允许应用程序发送一个数据包而不需要知道目标设备的短地址(此时将目标设备的短地址设置为无效地址0xFFFE)。应用支持子层(APS)从它的绑定表中确定目标设备的短地址,然后将数据发送给目标应用或者目标组。如果在绑定表中找到的短地址不止一个,协议栈会向所有找到的短地址发送数据。
说明:绑定只能在补充的设备间被创建。也就是说,当两个设备已经在他们的简单描述符结构中登记为一样的命令ID,并且一个作为输入另一个作为输出时,绑定才能成功
Zigbee Device Object Bind Request(ZDO绑定请求)——通过一个命令告诉设备创建一个绑定表记录
Zigbee Device Object End Device Bind Request(ZDO终端绑定请求)——两个设备可以告诉协调器它们想要建立一个绑定表记录。协调器来协调并在两个设备中创建绑定表记录。
Device Application(设备应用)—一个设备上的应用程序建立或者管理一个绑定表
三、绑定表的建立
TI的Zstack2006协议栈中提供两种可用的机制配置设备绑定:(1)如果目的设备的扩展地址是已知的(2)如果扩展地址是未知的
zb_BindDevice ()函数便可以进行绑定,zb_BindDevice ()中地址要设置为目标设备的扩展地址。
绑定函数说明:
zb_BindDevice ( uint8 create, //创建还是删除绑定,TRUE创建,FALSE删除
uint16 commandId, //命令ID,绑定是基于命令ID的绑定
uint8 *pDestination ) //扩展地址,可以为NULL,决定绑定类型、基于扩展地址的绑定:
void zb_BindDevice ( uint8 create, uint16 commandId, uint8 *pDestination )
{
if ( create ){
if ( pDestination )//长地址不为空
{
//地址模式为64位地址,即destination.addrMode = Addr64Bit;
//将参数pDestination 的值复制到 destination.addr.extAddr中
osal_cpyExtAddr( destination.addr.extAddr, pDestination );
//调用函数 APSME_BindRequest进行基于长地址的绑定
ret = APSME_BindRequest( sapi_epDesc.endPoint, commandId,
destination, sapi_epDesc.endPoint );
if ( ret == ZSuccess )
{
//绑定成功后获取目的设备的短地址
ZDP_NwkAddrReq(pDestination, ZDP_ADDR_REQTYPE_SINGLE, 0, 0 );
//定时触发事件 ZDO_NWK_UPDATE_NV
osal_start_timerEx( ZDAppTaskID, ZDO_NWK_UPDATE_NV, 250 );
}
……
}
void *osal_cpyExtAddr( void *dest, void *src )
说明:该函数的作用是复制扩展地址。将*src指向的扩展地址复制到指针*dest指向的内存
参数说明:*dest----------------------------目标地址指针
*src-----------------------------源地址指针
返回值:指针
、ZStatus_t APSME_BindRequest( byte SrcEndpInt, uint16 ClusterId,
zAddrType_t *DstAddr, byte DstEndpInt)
说明:应用支持子层绑定函数,通过该函数可以在两个设备间的应用层创建绑定,以原语APSME_BIND.confirm返回绑定结果。注意这里传递的地址是64位的扩展地址。
参数说明:SrcEndpInt ---------------------------源设备的端点
ClusterId ------------------------------簇ID
*DstAddr -----------------------------目标设备的地址
DstEndpInt -------------------
文档评论(0)