节点有定义:
-DNV_RESTORE
-DNV_INIT
根据设计需要,节点有时需要复位到程序烧录后的首次状态,我是通过这一函数实现的:
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
但是,偶尔发现,执行以上函数后,仍然不能复位到原始状态,必须重新烧录一次程序才可以达到出厂状态,感觉NV中还有数据没被清除,请问还需要复位哪些参数?谢谢!
Susan Yang:
请问您现在使用的是哪款芯片以及协议栈版本?
user3514461:
回复 Susan Yang:
2530/2531 zigbee 1.2.2a 还有NV中什么参数需要擦除呢?谢谢
YiKai Chen:
回复 user3514461:
就是使用 zgWriteStartupOptions(ZG_STARTUP_SET, (ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE) ); 然後要做reset才能生效
user3514461:
回复 YiKai Chen:
在调用zgWriteStartupOptions(ZG_STARTUP_SET, (ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE) );后,我也调用了SystemResetSoft();程序可以看到是重启了
Susan Yang:
回复 user3514461:
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
SystemReset();就是使用上述的代码
“执行以上函数后,仍然不能复位到原始状态” 有什么具体现象吗?
您现在协调器的permit join是一直开着吗? 您试着disable permit join
user3514461:
回复 Susan Yang:
看到一个vv 2014年回复(e2echina.ti.com/…/67626),有必要吗?谢谢
uint8 ZDOInitDevice( uint16 startDelay )
{
uint8 networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;
uint16 extendedDelay = 0;if ( devState == DEV_HOLD )
{
// Initialize the RAM items table, in case an NV item has been updated.
zgInitItems( FALSE );
}ZDConfig_InitDescriptors();
//devtag.071807.todo – fix this temporary solution
_NIB.CapabilityFlags = ZDO_Config_Node_Descriptor.CapabilityFlags;#if defined ( NV_RESTORE )
// Hold down the SW_BYPASS_NV key (defined in OnBoard.h)
// while booting to skip past NV Restore.
if ( zdappHoldKeys == SW_BYPASS_NV )上电的时候如果某个按键处于按下并且Hold状态的话,会把NV数据全部擦除,重新启动。
{
zdappHoldKeys = 0; // Only once
networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;
}
else
{
// Determine if NV should be restored
networkStateNV = ZDApp_ReadNetworkRestoreState();
}if ( networkStateNV == ZDO_INITDEV_RESTORED_NETWORK_STATE )
{
networkStateNV = ZDApp_RestoreNetworkState();
}
else
{
// Wipe out the network state in NV
NLME_InitNV();
NLME_SetDefaultNV();
// clear NWK key values
ZDSecMgrClearNVKeyValues();
}
#endif
YiKai Chen:
回复 user3514461:
調用
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
SystemReset();
後不需要再按任何按鍵了