协调器和单一终端通讯
配置如下:
zgPreConfigKeys = TRUE
加密:SECURE=1 ,ZG_SECURE_DYNAMIC=1;
不能入网了终端,ZG_SECURE_DYNAMIC=0也试过还是不能通讯,终端入网过后立即就退网了,不晓得怎么回事
在这个osal_memcpy( zgPreConfigKey, defaultKey, SEC_KEY_LEN );加入断点,主机的defaultKey和终端的defaultKey,都是一样的
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
协调器和单一终端通讯
配置如下:
zgPreConfigKeys = TRUE
加密:SECURE=1 ,ZG_SECURE_DYNAMIC=1;
不能入网了终端,ZG_SECURE_DYNAMIC=0也试过还是不能通讯,终端入网过后立即就退网了,不晓得怎么回事
在这个osal_memcpy( zgPreConfigKey, defaultKey, SEC_KEY_LEN );加入断点,主机的defaultKey和终端的defaultKey,都是一样的
好的,我试一下,
我断点调试的时候走到status = osal_nv_item_init( ZCD_NV_PRECFGKEY, SEC_KEY_LEN, zgPreConfigKey );
osal_nv_item_init()返回是NV_ITEM_UNINIT而不是ZSUCCESS所以没有进入
if ( status == ZSUCCESS )
{
if ( setDefault )
{
// Write the default value back to NV
status = osal_nv_write( ZCD_NV_PRECFGKEY, 0, SEC_KEY_LEN, zgPreConfigKey );
}
}
VV 大神我找到一点原因,就是我在NV操作的时候使用了
void ClearNCnetmessage(void)
{
uint8 pg;
for ( pg = OSAL_NV_PAGE_BEG; pg <= OSAL_NV_PAGE_END; pg++ )
{
HalFlashErase(pg);
}
}
函数,于是运行 status = osal_nv_item_init( ZCD_NV_PRECFGKEY, SEC_KEY_LEN, zgPreConfigKey );返回status的值总是不对
但是第一就是void ClearNCnetmessage(void)的目的是想清空网络保留的数据,他把密码部分也操作了。
还有就是就算不用 void ClearNCnetmessage(void)函数也仅仅是status == ZSUCCESS成立,setDefault的值还是零,而且我重新安装了协议栈到这一步的时候setDefault也为零。
if ( status == ZSUCCESS )
{
if ( setDefault )
{
// Write the default value back to NV
status = osal_nv_write( ZCD_NV_PRECFGKEY, 0, SEC_KEY_LEN, zgPreConfigKey );
}
}
YY大神我直接把程序改成这样了也不能通讯
status = osal_nv_item_init( ZCD_NV_PRECFGKEY, SEC_KEY_LEN, zgPreConfigKey );
status = osal_nv_write( ZCD_NV_PRECFGKEY, 0, SEC_KEY_LEN, zgPreConfigKey );
if ( status == ZSUCCESS )
{
if ( setDefault )
{
// Write the default value back to NV
status = osal_nv_write( ZCD_NV_PRECFGKEY, 0, SEC_KEY_LEN, zgPreConfigKey );
}
}
// clear local copy of default key
osal_memset(zgPreConfigKey, 0x00, SEC_KEY_LEN);
return (status);
}
清空网络保留的数据,不是用这个来做的,直接修改startoption,然后重启就可以了。
// Set the NV startup option to force a "new" join.
zgWriteStartupOptions( ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE );
// The device has been in the UNAUTH state, so reset
// Note: there will be no return from this call
SystemResetSoft();