TI中文支持网
TI专业的中文技术问题搜集分享网站

终端退网使用NLME_LeaveReq();清除信息问题!

协议栈:ZHA1.2  芯片:cc2530

终端调用了如下命令:

NLME_LeaveReq_t LeaveReq;

LeaveReq.extAddr = NULL;
LeaveReq.removeChildren =false;
LeaveReq.rejoin = true;
LeaveReq.silent = false;
NLME_LeaveReq(&LeaveReq);

执行退网后,终端自动重入网,终端信息并没有被删除。

那么我想在不改变上述命令的条件下,能否执行完退网命令后,不让他重新入网。并且删除自身的信息,使下次入网,网关能分配给新的地址。

Alvin Chen:

LeaveReq.rejoin = false;

你需要吧rejoin设置为false。

YiKai Chen:

rejoin要設定為false吧

user5032796:

回复 Alvin Chen:

可是设置为false后,每次执行后都要复位。{// 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 callSystemResetSoft();}
如果在复位期间我会再执行入网。就卡死了。
所以才问问在rejoin=true的情况下,有没有可能不自动重新入网,并且删除掉网络信息。

user5032796:

回复 YiKai Chen:

可是设置为false后,每次执行后都要复位。{// 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 callSystemResetSoft();}
如果在复位期间我会再执行入网。就卡死了。
所以才问问在rejoin=true的情况下,有没有可能不自动重新入网,并且删除掉网络信息。

YiKai Chen:

回复 user5032796:

試試參考Cetri在 e2e.ti.com/…/1343379 的回覆

user5032796:

回复 YiKai Chen:

试了一下,还是同样的,退网后,自动rejoin

YiKai Chen:

回复 user5032796:

不要自动重新入网可以試著移除Cetri的下面這些程序碼

+// For rejoin, specify the extended PANID to look for
+osal_cpyExtAddr( ZDO_UseExtendedPANID, _NIB.extendedPANID );
+
+_NIB.nwkState = NWK_DISC;
+
+zdoDiscCounter = 3;
+NLME_NwkDiscTerm();
+
+ZDApp_NetworkInit((uint16)(NWK_START_DELAY + ((uint16) (osal_rand() & EXTENDED_JOINING_RANDOM_MASK ))));

user5032796:

回复 YiKai Chen:

恩,解决一半了。可是退网后再入网是以rejoin的方式,短地址还是没变。请问有方法在退网后,清掉网络信息么。我希望再入网能重新获得新的地址。

Alvin Chen:

回复 user5032796:

你可以去除NV里面的数据。

user5032796:

回复 Alvin Chen:

感谢!问题解决了。zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);
+
SystemResetSoft(); //复位

赞(0)
未经允许不得转载:TI中文支持网 » 终端退网使用NLME_LeaveReq();清除信息问题!
分享到: 更多 (0)