微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > Z-Stack Home中发送端的命令或请求是如何对应接收端的回调函数的

Z-Stack Home中发送端的命令或请求是如何对应接收端的回调函数的

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

我在学习Z-Stack Home1.2.1协议栈时,有如下两个问题,望各位指教,谢谢!

1. 不太明白发送端的命令或请求是如何对应接收端的回调函数的。例如:开关节点执行 zclGeneral_SendOnOff_CmdToggle函数,发送开关命令到灯节点,灯节点调用回调函数zclSampleLight_CmdCallbacks执行开关动作。我知道回调函数在zclSampleSw_Init()中都进过注册的,但是不明白这两个不同节点的函数之间是怎么对应的,两个函数之间是如何定义指向关系的?

2. 如果我要自定义两个设备之间的请求和响应的回调函数,协议栈中该如何修改?两个函数该如何关联,才能正确响应?

你好,

1, zclGeneral_SendOnOff_CmdToggle函数是给目的节点发送了一个ZCL的命令,指定目的地址 目的的End Point和cluster,cluster的操作方向,以及ON/OFF的命令号。

那么在接收端,刚开始注册的callback函数zclGeneral_RegisterCmdCallbacks

里面会把你ZCL的命令注册给

// Register as a ZCL Plugin
if ( zclGenPluginRegisted == FALSE )
{
zcl_registerPlugin( ZCL_CLUSTER_ID_GEN_BASIC,
ZCL_CLUSTER_ID_GEN_MULTISTATE_VALUE_BASIC,
zclGeneral_HdlIncoming );

}

当有这个命令来的时候,会去到zclGeneral_HdlIncoming函数里面做处理

在zclGeneral_HdlInSpecificCommands会去找对应的End Point和Cluster,

在对应的Cluster下面会去找对应的command

zclGeneral_ProcessInOnOff( zclIncoming_t *pInMsg,
zclGeneral_AppCallbacks_t *pCBs )

处理命令的最终函数就是用注册的callback函数来处理的

 pCBs->pfnOnOff( pInMsg->hdr.commandID );

2,按照上面的逻辑你可以自己去加你想实现的,或者在已有的函数上,把你自己的东西加进去就可以了

不知道你想实现的功能是什么。

谢谢

感谢VV的回复,

我想实现的功能是:协调器发送一个广播指令到网络中所有的灯节点(设备类型为路由器)。灯节点收到这个广播指令后,将自身的短地址和灯的开关状态发送给协调器,这样协调器就可以采集到当前网络中所有灯的状态,同时也可以根据采集到的灯节点的短地址发送指令控制任何一个灯。我想实现这个功能所以就有了上述提问。

请问在Z-Stack Home 1.2.1中有相同或者类似的功能吗?

谢谢!

用ZCL Foundation中的Read attributes命令广播来读light的ONOFF Cluster attributes是不是可以实现你要的功能啊

具体该调用哪些函数和指令,流程是怎样的啊?

extern ZStatus_t zcl_SendRead( uint8 srcEP, afAddrType_t *dstAddr,
uint16 realClusterID, zclReadCmd_t *readCmd,
uint8 direction, uint8 disableDefaultRsp, uint8 seqNum );

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

网站地图

Top