TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

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

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

VV:

你好,

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,按照上面的逻辑你可以自己去加你想实现的,或者在已有的函数上,把你自己的东西加进去就可以了

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

谢谢

Martin1:

回复 VV:

感谢VV的回复,

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

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

谢谢!

Martin1:

回复 zheng wei tang:

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

赞(0)
未经允许不得转载:TI中文支持网 » Z-Stack Home中发送端的命令或请求是如何对应接收端的回调函数的
分享到: 更多 (0)