zstack绑定.doc_第1页
zstack绑定.doc_第2页
zstack绑定.doc_第3页
zstack绑定.doc_第4页
zstack绑定.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【Z-Stack建立绑定关系之二-终端绑定请求方式】一2011-04-02 11:33ZDO终端设备绑定请求:设备能告诉协调器他们想建立绑定表格报告。该协调器将使协调并在这两个设备上创建绑定表格条目。在这里是以SerialApp例子为例。void SerialApp_HandleKeys( uint8 shift, uint8 keys ) zAddrType_t dstAddr; if ( shift ) if ( keys & HAL_KEY_SW_1 ) if ( keys & HAL_KEY_SW_2 ) if ( keys & HAL_KEY_SW_3 ) if ( keys & HAL_KEY_SW_4 ) else if ( keys & HAL_KEY_SW_1 ) if ( keys & HAL_KEY_SW_2 ) HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );/终端设备绑定请求 / Initiate an End Device Bind Request for the mandatory endpoint dstAddr.addrMode = Addr16Bit; dstAddr.addr.shortAddr = 0x0000;/ Coordinator ZDP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(), SerialApp_epDesc.endPoint, SERIALAPP_PROFID, SERIALAPP_MAX_CLUSTERS, (cId_t *)SerialApp_ClusterList, SERIALAPP_MAX_CLUSTERS, (cId_t *)SerialApp_ClusterList, FALSE ); if ( keys & HAL_KEY_SW_3 ) if ( keys & HAL_KEY_SW_4 ) HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );/描述符匹配请求 这也是两不同匹配方式,使用的按键不同 / Initiate a Match Description Request (Service Discovery) dstAddr.addrMode = AddrBroadcast;/广播地址 dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR; ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR, SERIALAPP_PROFID, SERIALAPP_MAX_CLUSTERS, (cId_t *)SerialApp_ClusterList, SERIALAPP_MAX_CLUSTERS, (cId_t *)SerialApp_ClusterList, FALSE ); 说明:从上面可以看到,SW2是发送终端设备绑定请求方式,SW4是发送描述符匹配请求方式。如果按下SW1的话,使用终端设备绑定请求方式,这里是要通过终端告诉协调器他们想要建立绑定表格,协调器将协调这两个请求的设备,在两个设备上建立绑定表格条目。(1)终端设备向协调器发送终端设备绑定请求 调用ZDP_EndDeviceBindReq()函数发送绑定请求。 ZDP_EndDeviceBindReq( &dstAddr,/目的地址设为0x0000; NLME_GetShortAddr(), SerialApp_epDesc.endPoint,/EP号 SERIALAPP_PROFID,/Profile ID SERIALAPP_MAX_CLUSTERS, /输入簇的数目 (cId_t *)SerialApp_ClusterList,/输入簇列表 SERIALAPP_MAX_CLUSTERS,/输出簇数目 (cId_t *)SerialApp_ClusterList,/输出簇列表 FALSE ); 该函数实际调用无线发送函数将绑定请求发送给协调器节点:默认clusterID为End_Device_Bind_req,最后通过AF_DataRequest()发送出去.fillAndSend( &ZDP_TransID, dstAddr, End_Device_Bind_req, len );最后通过AF_DataRequest()发送出去.AF_DataRequest( &afAddr, &ZDApp_epDesc, clusterID, (uint16)(len+1), (uint8*)(ZDP_TmpBuf-1), transSeq, ZDP_TxOptions, AF_DEFAULT_RADIUS );(2) 协调器收到终端设备绑定请求End_Device_Bind_req这个信息会传送到ZDO层,在ZDO层的事件处理函数中,调用ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr );UINT16 ZDApp_event_loop( byte task_id, UINT16 events ) uint8 *msg_ptr; if ( events & SYS_EVENT_MSG ) while ( (msg_ptr = osal_msg_receive( ZDAppTaskID ) ) ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr ); / Release the memory osal_msg_deallocate( msg_ptr ); / Return unprocessed eventsreturn (events SYS_EVENT_MSG); void ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr ) / Data Confirmation message fields byte sentEP; / This should always be 0 byte sentStatus; afDataConfirm_t *afDataConfirm; switch ( msgPtr-event ) / Incoming ZDO Messagecase AF_INCOMING_MSG_CMD: ZDP_IncomingData( (afIncomingMSGPacket_t *)msgPtr ); break; 在ZDP_IncomingData( (afIncomingMSGPacket_t *)msgPtr );函数中void ZDP_IncomingData( afIncomingMSGPacket_t *pData ) uint8 x = 0; uint8 handled; zdoIncomingMsg_t inMsg; inMsg.srcAddr.addrMode = Addr16Bit; inMsg.srcAddr.addr.shortAddr = pData-srcAddr.addr.shortAddr; inMsg.wasBroadcast = pData-wasBroadcast; inMsg.clusterID = pData-clusterId; inMsg.SecurityUse = pData-SecurityUse; inMsg.asduLen = pData-cmd.DataLength-1; inMsg.asdu = pData-cmd.Data+1; inMsg.TransSeq = pData-cmd.Data0; handled = ZDO_SendMsgCBs( &inMsg );#if defined( MT_ZDO_FUNC ) MT_ZdoRsp( &inMsg );#endif while ( zdpMsgProcsx.cl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论