在z-stack-3.0.2,
终端使用以下函数退网
NLME_LeaveReq_t leaveReq;
// Set every field to 0
osal_memset( &leaveReq, 0, sizeof( NLME_LeaveReq_t ) );
leaveReq.removeChildren = 1;
leaveReq.rejoin = 1;
leaveReq.extAddr=NULL;
leaveReq.silent = FALSE;
// Leave the network, and reset afterwards
NLME_LeaveReq( &leaveReq );
if ( NLME_LeaveReq( &leaveReq ) != ZSuccess )
{
// Couldn't send out leave; prepare to reset anyway
ZDApp_LeaveReset( FALSE );
}
当 leaveReq.rejoin = 1;时不能进入其他协调器的网络, leaveReq.rejoin = 0时不能进入原来协调器的网络
协调器是用 以下函数进行建网的
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING);
NLME_PermitJoiningRequest(0xff);
终端是用以下函数入网
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING);
有什么方法既可以进入其他协调器的网络,又可以进入原来协调器的网络,应怎么配置?
gaoyang9992006:
leaveReq.rejoin=0;//1表示能再次入网,0需要协调器断电复位后才能重入
gaoyang9992006:
回复 gaoyang9992006:
有网友给出的解释是:
一般情况下,离网后是要重启的,如果不愿意重启,可以改,方法是离网时有个osal_set_event()函数设置了重启事件,把这个事件取消就可以了。
user6216905:
回复 gaoyang9992006:
有没有方法协调器不复位也重新进入
user6216905:
回复 gaoyang9992006:
这个怎么取消,流程大概怎么
Viki Shi:
回复 user6216905:
leaveReq.rejoin 是代表rejoin,如果为1则会rejoin原来的网络,leaveReq.rejoin = 0相当于彻底离网,可以重启作为新设备入网
取消重启请看这边:e2echina.ti.com/…/487006
YiKai Chen:
你應該要取消NV_RESTORE然後要进入其他协调器的网络前需要协调器断电复位后調用 bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING)入网,但是前提是你要入网的协调器permit join在當下是打開的
user6216905:
回复 Viki Shi:
leaveReq.rejoin = 0时,退网重启后,不能进入原来的协调器,但协调器重启,就可以进网,但不想协调器重启。该怎么配置
user6069081:
回复 user6216905:
协调器permit join