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

协调器如何在应用层处理路由器发送来的“update device command”命令?

协议栈:Z-Stack 3.0.1

处理器:CC2538

情况描述:网络中有一个协调器,一个路由器和一个终端节点,终端节点的父节点为路由器。当终端节点利用按键“恢复出厂设置”时,会广播范围为1的“Leave”命令。此时身为父节点的路由器收到“Leave”命令会发送一条“update device command”给协调器,我想在协调器的应用层利用这一条信息做终端节点的出网通知,可是找不到“update device command”命令的回调函数。找到的“ZDO_UpdateDeviceIndication()”也不能使用。

提出的问题:请问可以在协调器的应用层上处理“update device command”命令吗,如何处理?除了用这个方法实现子设备出网通知以外还有什么方法吗?

谢谢!

Alvin Chen:

这一次是封死的这是个回调函数,你可以在ZDO_UpdateDeviceIndication里面做你的功能,该函数提供extAddr和入网设备的状态(rejoin/newjoin/left).

Jesse Huang:

回复 Alvin Chen:

是啊,虽然看不到调用的地方,估计在APS层有调用,可是debug不到这个函数里面,实际测试了下发现协调器收到“update device command”命令后并没有回调到这个函数,请问是因为要在别的地方打开这个回调功能吗?

Alvin Chen:

回复 Jesse Huang:

这个函数是TC的通知,试着用 bdb_resetLocalAction();去恢复你的设备试一下。

Jesse Huang:

回复 Alvin Chen:

协调器要设置什么才能成为TC吗?我测试的情况如下:
网络存在一个协调器一个路由器一个终端设备,终端设备父节点为路由器,终端设备通过按键调用bdb_resetLocalAction()将自己恢复出厂设置,此时终端设备会广播一个“Leave”命令,可是半径为1,路由器收到“Leave”命令后就发送“update device”命令给协调器。然而我协调器的ZDO_UpdateDeviceIndication()函数却没有被调用,是没有设置协调器为TC吗?如果是的话要设置哪个参数?
谢谢!

Alvin Chen:

回复 Jesse Huang:

Trust Center是协调器具备的管理Trust Center Link Key.

这个无法进入情况你用例程试过吗?

正常当你leave之后你的ZR应该发送UpdateDevice的命令两次。

如果你用例程还有这个问题建议你post到

我们的同时会帮你确认一下这个问题。

Jesse Huang:

回复 Alvin Chen:

测试过了,抓包有抓到路由器发送“update device command”给协调器,但是我的协调器是没有进入ZDO_UpdateDeviceIndication()函数。

Alvin Chen:

回复 Jesse Huang:

我近期不在公司无法给你测试,我在E2E发了帖子让我同事帮忙,你在下面的帖子描述你的细节以及抓包文件。
e2e.ti.com/…/735588

Jesse Huang:

回复 Alvin Chen:

你同事还有在公司的并且还懂中文的么…我这个需求有点急…拜托了

赞(0)
未经允许不得转载:TI中文支持网 » 协调器如何在应用层处理路由器发送来的“update device command”命令?
分享到: 更多 (0)