Z-Stack中终端状态机存在不合理的地方,希望TI能够修改。
VV给出了Z-stack终端设备状态机的变化,但是这个状态机存在几个不合理的地方。
http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/104629.aspx
1,DEV_INIT只是一个初始化的状态,状态机中缺少一个IDLE的状态。倒是有很多其它状态,可以切换到DEV_NWK_DISC。
2,DEV_NWK_DISC状态由ZDApp_NetworkInit来触发,触发时就意味着调用了NLME_NetworkDiscoveryRequest,这时候需要等待ZDO_NWK_DISC_CNF,否则连续调用NLME_NetworkDiscoveryRequest会导致返回错误。
3,调用ZDApp_StopJoiningCycle应该在什么时候调用?ZDApp_StartJoiningCycle呢?低功耗节点在无可用父节点的时候,应该ZDApp_StopJoiningCycle关闭扫描网络,但是这样会导致停留在DEV_NWK_DISC。如果程序仅仅判断在DEV_NWK_DISC时调用ZDApp_StartJoiningCycle,是否又会导致NLME_NetworkDiscoveryRequest重复调用?
另外还有一个不合理,EndDevice在Parent的Child Ageing超时时,再向父节点发一个MAC DataRequest,父节点会回复一个LeaveReq,EndDevice会离开网络,重新Associate一次。合理的做法应该是EndDevice应该寻找新的父节点,并用Rejoin的方式再加一次。
非常感谢发表你的意见
1, 如果设置idel状态话,那么idle状态做什么事情?是休眠,还是唤醒?
2, 协议栈设计就是调用discovery以后等待cnf,会为什么会有连续调用
3,这里可以加个条件判断,防止误操作。
对的,这个你说的是对的,只要在Leave req里面,把rejoin=true就可以了