Part Number:CC2530Other Parts Discussed in Thread:Z-STACK
问题1.如果父节点想让一个已经掉线的设备(无法接收任何消息)子节点(低功耗终端)强制离开网络,并且仅清除父节点记录的单个子节点的相关信息
使得子节点在调用bdb_resetLocalAction()后可以正常入网。应当如何操作?例如很久没有收到心跳包以后将对应设备删除
产生问题的原因:父节点使用该函数NLME_LeaveReq()使子设备离开网络时,因为子设备已经断电,无法向父节点请求数据,
而向终端设备发送的消息需要终端向父节点请求数据,因此父节点无法发出Leave指令
问题2.父节点会存储下发给子节点的数据,等待子节点请求数据后下发,请问这些数据存放在哪里?如何在子节点轮询后告知应用程序已成功下发数据?
产生问题的原因:在数据发送时,虽然返回success,实际上相关数据仍保存在父节点中并等待子节点轮询
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛寻求帮助, 如有答复将尽快回复您。谢谢!
,
qh h:
我这边的需求是
假定我的父节点挂载了多个子设备,其中一个损坏了无法开机,那么我需要完全清除与其相关的信息,将NV/RAM空间腾出来给新设备
请问有什么常用的解决办法吗?
,
Cherry Zhou:
您好,
请问您使用的Z-Stack版本是多少?
qh h said:
问题1.如果父节点想让一个已经掉线的设备(无法接收任何消息)子节点(低功耗终端)强制离开网络,并且仅清除父节点记录的单个子节点的相关信息
使得子节点在调用bdb_resetLocalAction()后可以正常入网。应当如何操作?例如很久没有收到心跳包以后将对应设备删除
是通过child age management自动完成的,您可以通过更改 ZGlobals.h 中的 Z-Stack 3.0 project的 Nwk_end_dev_timeout_default 和 Nwk_end_device_leave_timeout 值来配置它。 已离网的子设备应使用 Leave 命令响应 Leave 请求,以便父设备知道要正式删除关联表条目。
qh h said:问题2.父节点会存储下发给子节点的数据,等待子节点请求数据后下发,请问这些数据存放在哪里?如何在子节点轮询后告知应用程序已成功下发数据?
传出数据包被保存在 Nwk_MAX_DATABUFF_* 中,总时间为 Nwk_indirect_MSG_TIMEOUT 秒,这些数据包之后会老化并从缓冲区中删除。 您可以使用 ZDApp.c 中的 AF_DATA_CONFIRST_CMD case通过跟踪 transID 值来确认发送的数据包。
,
qh h:
您好,
版本号是3.0.2
Cherry Zhou said:是通过child age management自动完成的,您可以通过更改 ZGlobals.h 中的 Z-Stack 3.0 project的 Nwk_end_dev_timeout_default 和 Nwk_end_device_leave_timeout 值来配置它。 已离网的子设备应使用 Leave 命令响应 Leave 请求,以便父设备知道要正式删除关联表条目。
在我的理解中,修改NWK_END_DEVICE_LEAVE_TIMEOUT参数就是修改心跳包最大等待时间。如果一个设备掉线/损坏无法发送心跳包,到期后父节点会自动消除部分信息。但是一个掉线/损坏的设备无法响应leave命令,如何让父设备正视删除关联表条目呢?
qh h said:
假定我的父节点挂载了多个子设备,其中一个损坏了无法开机,那么我需要完全清除与其相关的信息,将NV/RAM空间腾出来给新设备
请问有什么常用的解决办法吗?
我这边的需求就如上所示。需要在子节点无法响应leave命令的情况下,父节点正式删除关联表条目
,
Cherry Zhou:
好的跟进给工程师了,会尽快给到您答复。
,
Cherry Zhou:
您好,在 Nwk_end_dev_timeout_default 之后,设备被要求离开,并在 Nwk_end_device_leave_timeout 之后从关联表中删除。 因此,如果任何轮询速度低于 Nwk_End_device_leave_timeout 的终端设备都不会收到leave request,因为父设备不再识别该请求。 如果您是通过应用程序来监控终端设备的响应的话,那么也可以使用 AssocRemove 自行删除关联条目。