ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:25.35KB ,
资源ID:21512157      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21512157.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《国家标准》zigbee两种绑定机制Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《国家标准》zigbee两种绑定机制Word下载.docx

1、不同的是,前者采用的目的地址是64位扩展地址,而后者采用的目的地址是16位网络地址。前者已知扩展地址,调用了ZDP_NwkAddrReq()函数获得目的设备短地址;后者利用描述匹配得到了短地址,然后调用了ZDP_IEEEAddrReq()函数,获取目的设备的扩展地址.*1、已知扩展地址的绑定这里可以直接调用函数zb_BindDevice()发起绑定请求: zb_BindDevice ( uint8 create, /是否创建绑定,TRUE则创建,FALSE则解除 uint16 commandId, /命令ID,基于某命令的绑定,相当于簇 uint8 *pDestination )/指向扩展地址

2、的指针函数程序如下(已知扩展地址的绑定部分)*void zb_BindDevice ( uint8 create, uint16 commandId, uint8 *pDestination ) zAddrType_t destination; uint8 ret = ZB_ALREADY_IN_PROGRESS; if ( create ) /create = true 建立绑定 if (sapi_bindInProgress = 0xffff) /不允许绑定过程?/- if ( pDestination ) /已知扩展地址的绑定,即*pDestination 为非NULL destinat

3、ion.addrMode = Addr64Bit; osal_cpyExtAddr( destination.addr.extAddr, pDestination ); /直接调用APS绑定请求函数 ret = APSME_BindRequest( sapi_epDesc.endPoint, /源EP commandId, /簇ID &destination, /目的地址模式 sapi_epDesc.endPoint ); /目的EP if ( ret = ZSuccess ) /绑定成功 / Find nwk addr 发现网络地址,得到被绑定设备的短地址 ZDP_NwkAddrReq(pD

4、estination, ZDP_ADDR_REQTYPE_SINGLE, 0, 0 ); osal_start_timerEx( ZDAppTaskID, ZDO_NWK_UPDATE_NV, 250 ); else /未知目的扩展地址,即*pDestination=NULL ret = ZB_INVALID_PARAMETER; destination.addrMode = Addr16Bit; destination.addr.shortAddr = NWK_BROADCAST_SHORTADDR; /0xffff 描述符匹配请求:广播 /*检测输出簇;如果是输出簇,则去匹配一个处于允许绑

5、定模式的设备*/ if ( ZDO_AnyClusterMatches( 1, &commandId, sapi_epDesc.simpleDesc-AppNumOutClusters, sapi_epDesc.simpleDesc-pAppOutClusterList ) ) / Try to match with a device in the allow bind mode ret = ZDP_MatchDescReq( &destination, NWK_BROADCAST_SHORTADDR,AppProfId, 1, &commandId, 0, (cId_t *)NULL, 0

6、); /*检测输入簇;如果是输入簇,则去匹配一个处于允许绑定模式的设备*/ else if ( ZDO_AnyClusterMatches( 1, &AppNumInClusters,pAppInClusterList ) )AppProfId, 0, (cId_t *)NULL, 1, &commandId, 0 ); if ( ret = ZB_SUCCESS ) / Set a timer to make sure bind completes osal_start_timerEx(sapi_TaskID, ZB_BIND_TIMER, AIB_MaxBindingTime); sapi

7、_bindInProgress = commandId; return; / dont send cback event SAPI_SendCback( SAPICB_BIND_CNF, ret, commandId ); /create = false 删除绑定 / Remove local bindings for the commandId BindingEntry_t *pBind; / Loop through bindings an remove any that match the cluster while ( pBind = bindFind( sapi_epDesc.sim

8、pleDesc-EndPoint, commandId, 0 ) ) bindRemoveEntry(pBind);在上面已知扩展地址的绑定程序中调用了APS绑定函数APSME_BindRequest(),这个函数在两个设备间建立绑定,通过APSME_BIND.confirm原语返回,而且这两者是不可分割的。如果绑定成功,则调用函数ZDP_NwkAddrReq()得到目的设备的短地址。ZDP_NwkAddrReq()这个函数可以产生一个根据已知遥远设备的IEEE地址,请求得到16位短地址的信息.该信息以广播的方式发送给网络中的所有设备.2、未知扩展地址的绑定(simpApp例子中默认的绑定机制

9、)该绑定方式下,在发送绑定请求前,先要让被绑定的目的设备处于允许绑定模式。可以调用函数zb_AllowBind()进入该模式,函数如下:/函数设置设备处于允许绑定模式/timerout=0x00:不允许绑定/timerout=0xff:一直处于绑定模式/0timeoutEndPoint, FALSE); elseEndPoint, TRUE); /设置允许响应匹配描述符请求 if ( timeout != 0xFF ) if ( timeout 64 ) timeout = 64; /设置了允许匹配后,开启一个定时器,时间为timeout*1000, /时间一到触发sapi任务ZB_ALLOW

10、_BIND_TIMER事件,SAPI_ProcessEvent()对其的处理是 /afSetMatch(sapi_epDesc.simpleDesc-EndPoint, FALSE)而取消允许绑定 osal_start_timerEx(sapi_TaskID, ZB_ALLOW_BIND_TIMER, timeout*1000); 参数timeout是进入绑定模式持续的时间(s)。如果设置为OxFF,则设备在任何时候都在允许绑定模式;如果设置为OxOO,则设备将通过该命令取消允许绑定模式. 调用该函数使设备在给定时间内进入允许绑定模式.一个在允许绑定模式下同等的设备调用函数zb_BindDev

11、ice()能与之建立绑定,此时目的扩展地址为空(参见上面zb_BindDevice()未知目的扩展地址部分).zb_AllowBind()调用afSetMatch(),使之允许响应ZDO的匹配描述符请求. 以上设置目的设备允许绑定模式(比如simpleApp的灯设备),那在目的设备处于允许绑定模式的时间内,源设备(比如simpleApp的开关设备)可以调用zb_BindDevice()来发起绑定请求.此时执行的程序如下: else /未知目的扩展地址,即*pDestination=NULL /0xffff /*检测输出簇,如果是输出簇,则去匹配一个处于允许绑定模式的设备*/ /匹配一个在允许绑

12、定模式下的设备 /*检测输入簇,如果是输入簇,则去匹配一个处于允许绑定模式的设备*/ / Set a timer to make sure bind completes 设置一个时间,确保绑定完成 /允许基于commandId命令的绑定过程在之中调用了函数ZDP_MatchDescReq(),将建立和发送一个匹配描述符请求。用这个函数在一个应用中的输入/输出簇列表中搜索匹配某条件的设备/应用。该绑定响应处理在SAPI_ProcessEvent事件处理函数中 case ZDO_CB_MSG: /*ZDO信息数据*/ SAPI_ProcessZDOMsgs( (zdoIncomingMsg_t *

13、)pMsg );看下SAPI_ProcessZDOMsgs()函数/ SAPI_Init()函数中注册了以下两个ZDO信息 ZDO_RegisterForZDOMsg( sapi_TaskID, NWK_addr_rsp ); ZDO_RegisterForZDOMsg( sapi_TaskID, Match_Desc_rsp );void SAPI_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg ) switch ( inMsg-clusterID ) /- case NWK_addr_rsp: case Match_Desc_rsp: zAddrType_t

14、 dstAddr; ZDO_ActiveEndpointRsp_t *pRsp = ZDO_ParseEPListRsp( inMsg ); if ( sapi_bindInProgress != 0xffff ) /commandId / Create a binding table entry 创建一个绑定条目 dstAddr.addrMode = Addr16Bit; dstAddr.addr.shortAddr = pRsp-nwkAddr; /*调用这个函数来实现两个设备的绑定*/ if ( APSME_BindRequest( sapi_epDesc.simpleDesc-EndP

15、oint, sapi_bindInProgress, /簇IDdstAddr,/目的地址模式 pRsp-epList0 ) = ZSuccess ) /成功实现绑定后 /zb_BindDevice()中开启了一个定时器,用于接收Match_Desc_rsp计时 /如果接收到,则停止这个定时器,如下;如果溢出,则触发相应任务事件 osal_stop_timerEx(sapi_TaskID, ZB_BIND_TIMER); sapi_bindInProgress = 0xffff; / Find IEEE addr ZDP_IEEEAddrReq( pRsp-nwkAddr, ZDP_ADDR_R

16、EQTYPE_SINGLE, 0, 0 ); / Send bind confirm callback to application zb_BindConfirm( sapi_bindInProgress, ZB_SUCCESS ); break;以上内容摘自zigbee2006无线网络与无线定位实战这本书,根据协议版本的不同作了一些修改。实例中的两种绑定机制,第一种(已知扩展地址的绑定)流程,就是zb_BindDevice()根据扩展地址直接调用APSME_BindRequest()创建绑定条目实现绑定,再得到其16位网络地址;第二种(未知扩展地址的绑定),因地址未知,须先经过一个描述符匹配过程得到相匹配设备的16位短地址,然后通过APSME_BindRequest()创建绑定条目实现绑定,再得到其扩展地址.下面引用zigbee2006无线网络与无线定位实战对未知扩展地址的绑定流程的描述(以simpApp灯开关实验为例),根据协议版本不同作了相应修改:(1)首先调用zb_AllowBind(myAllowBindTimeout)函数,使管理设备(灯)处于允许绑定(匹配)响应模式(2)在myAllowBindTimeout规定的时间内,终端设备需要调用zb_BindD

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1