测试环境:
一个ZC ,5个ZED ,ZED 是电池设备 (均采用 zstack 1.2.2 或1.2.2a)
操作:
重复重启 ZC, 造成 ZED 断网寻网 。
目的:
验证 寻网一段时间,然后休眠一段时间 的新逻辑,(rejoin scan====》 rejoin backoff====》rejoin scan)
代码上增加:
在应用层 loop 中的 ZDO_STATE_CHANGE 事件中,
当DEV_NWK_DIS 时, 调用HAL_LED_BLINK() 函数 让LED1 一直闪
当DEV_NWK_BACKOFF 时, 调用HAL_LED_SET() 函数 将LED1 关闭
这样 断网的时候 LED1 就一直闪, 休眠(rejoin backoff)的时 ,灯就熄灭。
发现问题:
重刷了很多次之后, 发现 有些设备 断网后,LED1 一直闪,rejoin scan 的时间过完 ,还是无法进入rejoin backoff。
用抓包软件抓了一下, 发现有两种情况
情况1 : 设备是有发beacon request 出来的。 但是ZC 启动完成后, 设备仍然无法进入网络。
情况2: 设备只是闪LED1 ,但是 实际上没有发beacon request出来
以上两种情况 只是 设备无法 入网的 现象。
针对情况1 我的猜测:
让我不明白的 为甚么, 设备过了rejoin scan 规定时间后, 无法进入rejoin back off呢?
针对情况2 我的猜测 :
或者是设备已经 进入rejoin backoff 了,但 LED1 没有关闭。(即 设备的state 改变了 , 但是没有把改变 的状态 传到 应用层 的ZDO_STATE_CHANGE 事件上)