找回密码
 立即注册

微信扫码登录

查看: 97|回复: 3

关于终端rejoin的问题

[复制链接]

18

主题

33

回帖

252

积分

华贵铂金

积分
252
发表于 2025-4-29 14:22:19 | 显示全部楼层 |阅读模式
information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: tlsr8258
SDK及版本: V3.6.7.4
你好,目前使用终端遇到一个问题,在终端失去父节点或者协调器时,会启动sdk内部的rejoin backoff机制,它会以很短的时间发起beacon request,因为低功耗设备短时间内发起beacon request会很耗电,期望它的间隔可以由应用层设置,比如开始时候是几秒钟一次,随着时间推移半小时,一个小时;于是将ZDO_REJOIN_TIMES设置0,它不会触发rejoin backoff机制,然后用软定时调用zb_rejoinReq(NLME_REJOIN_METHOD_REJOIN, zb_apsChannelMaskGet()),进行rejoin这样会带来另一个问题,如果终端经过路由入网,终端与路由由于距离或者信号问题无法通信时,终端将无法进行rejoin,此时即使很近的距离也无法进行rejoin,它的rejoin时入下图所示,在device annuonce 后直接进行data request,没有办法进行数据交互;


问:如何在终端离网后,发起的beacon request的时间可以应用层控制,不影响终端的rejoin?
期望得到你们的回复,谢谢

ac655d528e764fd41182347069126ef.png

27

主题

291

回帖

915

积分

版主

积分
915
发表于 2025-4-30 16:58:55 | 显示全部楼层
你好,

beacon request是由rejoin触发的,在调用zb_rejoinReq()后,协议栈会根据传进来的channel mask执行active scan(即在指定的channel mask上发送beacon request),
然后在收集到的所有beacon中筛选一个合适的作为意向父节点,并向它发起rejoin请求,rejoin成功后就会广播device announce告知周边的节点它已经入网成功。

因此,应用层可以通过控制调用zb_rejoinReq()的时间,来实现你的应用需求。

18

主题

33

回帖

252

积分

华贵铂金

积分
252
 楼主| 发表于 2025-4-30 18:02:12 | 显示全部楼层

dai

qiTL_YB 发表于 2025-4-30 16:58
你好,

beacon request是由rejoin触发的,在调用zb_rejoinReq()后,协议栈会根据传进来的channel mask执行 ...

你好,感谢你的回答,也许我表达还不够清楚,如果将应用层所有zb_rejoinReq屏蔽,当失去父节点后,协议栈还是会一直以一定的间隔发起beacon request,我意思是在无法和父节点通信时,让协议栈不 会一直发起beacon request,这个可以在我应用层管理,所以我尝试将ZDO_REJOIN_TIMES设置为0,达到我的要求,但是这样会有一个问题,如果终端经过路由入网,终端与路由由于距离或者信号问题无法通信时,终端将无法进行rejoin,此时即使很近的距离也无法进行rejoin,无法恢复网络与父节点通信,期待你的再次回答

27

主题

291

回帖

915

积分

版主

积分
915
发表于 1 小时前 | 显示全部楼层
haiou 发表于 2025-4-30 18:02
你好,感谢你的回答,也许我表达还不够清楚,如果将应用层所有zb_rejoinReq屏蔽,当失去父节点后,协议栈 ...

我的理解是,当你将ZDO_REJOIN_TIMES设置为0时,底层将不再主动rejoin,这就需要应用层来调用zb_rejoinReq()去触发rejoin。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-5-9 22:33 , Processed in 0.087771 second(s), 23 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表