之前问过,说是路由节点不能睡眠,但我的任务是实现路由节点睡眠。现在发现路由节点之所以不能睡眠是halSleep函数里的MAC_PwrOffReq(MAC_PWR_SLEEP_DEEP) == MAC_SUCCESS条件一直没有满足,单步跟踪发现是macSleep函数if (macRxActive || macRxOutgoingAckFlag || macTxActive || macRxEnableFlags)条件一直满足,所以返回false。
我尝试着将macRxEnableFlags条件去掉,路由节点可以睡眠,通过z-sensor monitor发现可以和协调器组网通信,但无法实现路由功能啦,即终端节点不能连路由节点啦! 我也尝试着在MAC_PwrOffReq函数之前运用if ((!(macRxActive || macRxOutgoingAckFlag || macTxActive))&&(macRxEnableFlags))对macRxEnableFlags清0,就是恢复不知道在哪里对macRxEnableFlags恢复?试了几个地方,结果还是不能路由,但能和协调器通信!
请问改了这一块,路由节点为什么能和协调器继续通信,但不能路由啦?
可以通过改别的地方来解决这个问题吗?附一篇专利文章US20130039240A1,说的是实现路由节点睡眠,但它没说明!
谢谢!