在第三种情况下,我想删除NV,可以实现么?
因为让他退网,在开启NV的情况下,即使我禁止入网,也会直接恢复到以前的网络,我想通过清除NV,防止这个事情发生
YiKai Chen:
先調用 zgWriteStartupOptions( ZG_STARTUP_SET, (ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE) ); 然後呼叫SystemResetSoft();即可
user4711142:
回复 YiKai Chen:
我用的协议栈里有这个SystemReset();复位函数;在ZDO_ProcessMgmtLeaveReq中有一段代码是这么处理的,这样的结果有两个bug:
1、设备退网了,但是协调器没有接收到Mgmt_Leave_rsp。
2、当退网方式为不重新连接时,依然重新连接
不知道自己复位是不是影响了MAC层的退网操作
YiKai Chen:
回复 user4711142:
你是從协调器發出leave request還是從设备發出leave request?
user4711142:
回复 YiKai Chen:
协调器发出让终端设备退网的请求,终端设备检测到Mgmt_Leave_req后,终端调用ZDO_ProcessMgmtLeaveReq执行退网操作。
YiKai Chen:
回复 user4711142:
协调器发出让终端设备退网的请求,终端设备检测到Mgmt_Leave_req后,照理說终端不需要再调用ZDO_ProcessMgmtLeaveReq执行退网操作。
user4711142:
回复 YiKai Chen:
终端检测到Mgmt_Leave_req,协议栈会自动调用ZDO_ProcessMgmtLeaveReq,我是在这个函数里面添加了自定了的清除NV功能。但是在这添加会有上述所说的2个bug。想问一下如果我想让终端退网,终端退网后删除NV信息应该在哪执行?或者说添加到代码的哪个地方
YiKai Chen:
回复 user4711142:
终端检测到Mgmt_Leave_req,协议栈会自动调用DO_LeaveInd不是ZDO_ProcessMgmtLeaveReq
user4711142:
回复 YiKai Chen:
这个的意思是用ZDO_ProcessMgmtLeaveReq来处理Mgmt_Leave_Req的请求么
user4711142:
回复 YiKai Chen:
YiKai Chen:
回复 user4711142:
是的