我想让设备上电后如果之前已经加入到某一网络了就自动重新加入网络正常工作,如果之前没加过就等其它事件比如按键等触发之后再去搜索网络。
使用z-stack3.0.1,启用了NV-RESTORE,我想是应该去看NV存储器某个位置的数据,但几个文档都没有详细描述NV存储器具体什么位置保存什么信息以及各个信息的数据结构是什么样,也没有其他相关接口API的说明。
我该如何在上电之后判断设备在之前是否已经加入过某一个网络,已及获取已加入过的网络的信息?
Alvin Chen:
你去读一下_NIB.nwkPanId
user4975928:
回复 Alvin Chen:
看了,_NIB.nwkPanId在重新上电后都会变成初始值65534,无论断电前有没有加网。NV_INIT和NV-RESTORE都开启了。
Alvin Chen:
回复 user4975928:
NV 目录定义在ZComDef.h,下面是其中部分网络信息
#define ZCD_NV_USERDESC0x0081
#define ZCD_NV_NWKKEY0x0082
#define ZCD_NV_PANID0x0083
#define ZCD_NV_CHANLIST0x0084
#define ZCD_NV_LEAVE_CTRL0x0085
#define ZCD_NV_SCAN_DURATION0x0086
#define ZCD_NV_LOGICAL_TYPE0x0087
#define ZCD_NV_NWKMGR_MIN_TX0x0088
#define ZCD_NV_NWKMGR_ADDR0x0089
YiKai Chen:
回复 user4975928:
NV_INIT和NV-RESTORE都开启了的話,重新上电后你是在程序的哪裡查看_NIB.nwkPanId都会变成初始值65534?
user4975928:
回复 YiKai Chen:
在按键处理中通过串口打印出_NIB.nwkPanId的值
————————————————————————-case KEY_CHANGE:zclSensor_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
#if defined(DEBUG_ZIGBEE)DEBUG_print_str("_NIB.nwkPanId->");DEBUG_print_int((int)_NIB.nwkPanId);DEBUG_print_str("\n");
#endifbreak;
————————————————————————-
YiKai Chen:
回复 user4975928:
DEBUG_print_str是什麼?要不要設個斷點直接看_NIB.nwkPanId-
user4975928:
回复 YiKai Chen:
是我 自己写的串口打印函数,与设断点看到的_NIB.nwkPanId值是一致的。
目前还没解决这个问题,继续求求助~~
YiKai Chen:
回复 user4975928:
先設個断奌在ZDO_STATE_CHANGE裡面看看斷奌有沒有觸及
YiKai Chen:
回复 YiKai Chen:
我設定斷點在ZDO_STATE_CHANGE去讀_NIB.nwkPanId是可以看到正常值
user4975928:
回复 YiKai Chen:
你这个是加网成功之后吧,加网成功后我也能看到_NIB.nwkPanId是正常值的。
我目前的问题是如果节点加网成功后断电,再次上电后未加网之前怎么能知道之前是加过网还是没加过网呢 ?