给位好,
请教个问题,使用zstack 2.51的sampleapp进行修改开发,开启了nv_store功能,现在想要对设备进行factory new操作,请问应该调用那些函数。
我所谓的factory new操作包含以下这些内容
1. 清除网络状态,重启后应该重新建立网络(对协调器)或者重新选择网络加入(对非协调器)
2. 清除系统自身的一些变量,比如boot_counter等
3. 清除aps层生成的项目比如绑定表,路由表,组信息表等
4. 清除用户自定义的nv item
经过实验,我暂时用这个方法清除网络状态和数据:
zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE|ZCD_STARTOPT_CLEAR_CONFIG);
SystemReset();
但是使用此方法协调器重新建网后,有这样的问题:
1. 如果没有设备加网,遇到重启网络状态不会保存,会新建一个网络。这不是一个大问题,VV也在另一个帖子里解释过。但是如果重启后,我用串口改一下panid或者是channel,在再次重启前如果没有设备加入该网络,那么这次修改就会失败,这样似乎比较麻烦。
2. 绑定表不能被清除
3. 用户自定义的nv item不能清除,需要自己用 osal_nv_delete进行删除,比较麻烦
请问给位大神,到底该如何对设备进行factory new操作? 就考虑zstack 2.51,不涉及zll和zha,谢谢大家
Best regards,
Stockton
Stockton Zhang:
自己研究了,用删除nv item的方法手动删除绑定表,如下方法成功!!!
nv_status = osal_nv_delete(ZCD_NV_BINDING_TABLE, (uint16)(gBIND_REC_SIZE * (1 + gNWK_MAX_BINDING_ENTRIES)) );