ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR,
SERIALAPP_PROFID, SERIALAPP_MAX_CLUSTERS, (cId_t *)SerialApp_ClusterList, SERIALAPP_MAX_CLUSTERS, (cId_t *)SerialApp_ClusterList, FALSE );
也叫匹配描述符绑定,一般相当于广播绑定,网络中可能有一个或多个与本节点端口匹配的设备,本节点只接受其中一个节点的设备信息,既一对一绑定。处理函数是:
case Match_Desc_rsp:
{ ZDO_ActiveEndpointRsp_t *pRsp = ZDO_ParseEPListRsp( inMsg ); if ( pRsp ) { if ( pRsp->status == ZSuccess && pRsp->cnt ) { SerialApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; SerialApp_DstAddr.addr.shortAddr = pRsp->nwkAddr; // Take the first endpoint, Can be changed to search through endpoints SerialApp_DstAddr.endPoint = pRsp->epList[0]; // Light LED HalLedSet( HAL_LED_4, HAL_LED_MODE_ON ); } osal_mem_free( pRsp ); } }
也叫终端绑定,当按键按下时,调用函数
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 );
终端绑定实际上是两个终端设备通过与协调器绑定,实现两个终端设备之间互相通信。处理函数
case End_Device_Bind_rsp:
广播模式一般采用匹配符绑定方式,和直接地址模式相似,只是在发送函数中加入下列语句
SerialApp_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;//自己添加
SerialApp_DstAddr.addr.shortAddr = 0xffff;//自己修改,用于协调器广播
然后会调用 AF_DataRequest函数,这样既可以将协调器数据发给网络中的所有设备。
aps_Group_t SerialApp_Group;
SerialApp_Group.ID = 0x0001; osal_memcpy(SerialApp_Group.name,"Broad Group",11); static afAddrType_t SerialApp_GrpDstAddr; SerialApp_GrpDstAddr.addrMode = (afAddrMode_t)afAddrGroup; SerialApp_GrpDstAddr.endPoint = SERIALAPP_ENDPOINT; SerialApp_GrpDstAddr.addr.shortAddr = SerialApp_Group.ID;
aps_AddGroup(SERIALAPP_ENDPOINT,&SerialApp_Group);
|
zigbee学习笔记——四种地址绑定模式
最新推荐文章于 2023-07-01 03:45:26 发布