新问题Zstack HA 1.22:我们的Enddevice产品在实际使用中发现设备会出现掉网的现象,掉网后一定的情况下会失去密钥甚至是恢复到出厂时的网络状态。
Zstack HA 1.22下发生的问题:我们公司的Enddevice产品在实际使用中发现设备会出现经常性的掉网的现象,掉网后一定的情况下会失去密钥甚至是恢复到了出厂时的网络状态,经过查看ZDO层的代码,发现确实有这样的交互机制,Enddeivce设备在掉网重连多次后会失去密码及网络信息。
我们的产品需求:在实际应用中,我们希望的是产品如果出现掉网,那不管网络环境多么差,都应该是一个反复性的Rejion网络恢复的过程,直到成功恢复为止,而不应该删除自己所保存的网络的信息,我想知道TI在协议栈这块有没有这样的机制?或者说如何来做调整。
把下面代码屏蔽下做测试
// Do a normal join to the network after certain times of rejoin retries
else if( AIB_apsUseInsecureJoin == true )
{
devStartMode = MODE_JOIN;
}
这个问题 我也遇到过。
我的做法是:
ZDApp_ProcessNetworkJoin()函数中 这段红色的代码 屏蔽
else if(devStartMode == MODE_REJOIN)
{
if ( ZSTACK_END_DEVICE_BUILD )
{
devStartMode = MODE_REJOIN;
_tmpRejoinState = true;
_NIB.nwkState = NWK_INIT;
if( prevDevState == DEV_NWK_SEC_REJOIN_CURR_CHANNEL )
{
runtimeChannel = MAX_CHANNELS_24GHZ;
prevDevState = DEV_NWK_SEC_REJOIN_ALL_CHANNEL ;
}
else if ( prevDevState == DEV_NWK_SEC_REJOIN_ALL_CHANNEL)
{
// Set the flag that will ask the device to do trust center network layer rejoin.
//_NIB.nwkKeyLoaded = FALSE;
//ZDApp_ResetNwkKey(); // Clear up the old network key.
#ifdef DEBUG_REJOIN
HalUARTWrite(0,"Don't clearing network key\n", sizeof("Don't clearing network key\n"));
#endif
runtimeChannel = (uint32) (1L << _NIB.nwkLogicalChannel);
prevDevState = DEV_NWK_TC_REJOIN_CURR_CHANNEL ;
}
应该就可以了
嗯 是的 我把那部分注释掉,然后把这一块的逻辑调整了一下,让终端设备即便掉网了,也是在本信道持续发送重连请求。