微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > zclGeneral_SendGroupAdd组播函数

zclGeneral_SendGroupAdd组播函数

时间:10-02 整理:3721RD 点击:

协调器源发送添加组播命令源码如下: 

 static uint8 addgroupnum =0;
 afAddrType_t DstAddr;
 aps_Group_t Groupsimg;
 Groupsimg.ID = 0x0001;
 osal_memcpy(Groupsimg.name,"group_1",7);

 DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
 DstAddr.endPoint = 8;
 DstAddr.addr.shortAddr = DevShortAdd;

zclGeneral_SendGroupAdd(8, &DstAddr,Groupsimg.ID,Groupsimg.name,false, addgroupnum++);

协调器单播发送添加组的命令到路由设备。抓包发现add group命令发送出去了,而且路由也有默认的响应函数,现在的问题是,路由进不到自己写的group回调函数中。调试发现路由接收到命令后执行到

if ( zcl_ServerCmd( pInMsg->hdr.fc.direction ) )

stat = zclGeneral_ProcessInGroupsServer( pInMsg );  

else

stat = zclGeneral_ProcessInGroupsClient( pInMsg, pCBs );

断点显示执行了if后的函数zclGeneral_ProcessInGroupsServer( pInMsg );  

后将if else的内容反了一下,才能进入到group的回调函数中static void zcl_FXSamplelightGroupRspCB( zclGroupRsp_t *pRsp )(自己定义的)。

是什么原因导致这个情况的呢?另外有这方面的例程么?

Group在ZigBee也是一个cluster,那么就是client和server的概念,

要看你的产品中group cluster里面是作为server还是client的,server一般是inputcluster,client一般是outputcluster

比方说灯,如果Group cluster,那就是server,在input cluster里面。

if else其实就是方向的问题,client到server,还是server到client

感谢,搞明白了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top