1.assocCnt,终端每断电重启一次,会加1,如果加到FF会有什么后果吗?
2.通过timeoutCounter去判断终端是否在线(终端会定期POLL),如果某些终端直接被移走了,
我也不知道他们的地址信息,我该如何在AssociatedDevList里删除这些终端的信息以释放空间给新的终端加入?
Viki Shi:
1、满了以后其他终端会加不进,所以要避免同一终端反复入网,或者定期清一下关联表
2、可以通过AssocRemove()删除,参考:e2echina.ti.com/…/385616
Alvin Chen:
你如果不用Stack 自带的Childaging,你就需要自己做心跳包的逻辑,超时收不到心跳包就去移除。
user5367314:
回复 Viki Shi:
byte AssocRemove( byte *extAddr );
extAddr这个地址我不知道啊,不知道这个地址的话怎么删除以及离线或者以及损坏的终端
Alvin Chen:
回复 user5367314:
问题来了?你地址都不知到你怎么确定设备不在线,所以如上所述尽量不要自己搞用childaging就行。
具体去看code:
// Child aging management default values // Values are specified in table of nwk_globals.h module //timeoutValue[15] //10, // 0 10 seconds //2, // 1 2 minutes //4, // 2 4 minutes //8, // 3 8 minutes //16, // 4 16 minutes //32, // 5 32 minutes //64, // 6 64 minutes //128, // 7 128 minutes //256, // 8 256 minutes //512, // 9 512 minutes //1024, // 10 1024 minutes //2048, // 11 2048 minutes //4096, // 12 4096 minutes //8192, // 13 8192 minutes // 16384 // 14 16384 minutes // // This value is used by the parent ROUTER #if !defined ( NWK_END_DEV_TIMEOUT_DEFAULT )#define NWK_END_DEV_TIMEOUT_DEFAULT8// Default value per ZigBee core specification is 8 #endif//Timeout after which an EndDevice will be removed from from the indirect MAC messages queue// NOTE: End devices which poll rate is slower than this will not receive the leave request #if !defined ( NWK_END_DEVICE_LEAVE_TIMEOUT )#define NWK_END_DEVICE_LEAVE_TIMEOUT 9#endif// Value used by END DEVICE when sending End Device Timeout Request // This is an index into table timeoutValue[] defined in nwk_globals.c #if !defined ( END_DEV_TIMEOUT_VALUE )#define END_DEV_TIMEOUT_VALUE8// Default value per ZigBee core specification is 8 #endif// Value used by END DEVICE when sending End Device Timeout Request #if !defined ( END_DEV_CONFIGURATION )#define END_DEV_CONFIGURATION0// Per ZigBee Core spec R21, 0 is the only valid value #endif当然你自己可以搞一个逻辑。
user5367314:
回复 Alvin Chen:
我的思路是:
需要删除离线终端的时候,把AssociatedDevList查询一遍,
对非0xFFFF的表,我再判断timeoutCounter,如果一段时间一直没有恢复到初始值,
我就把该终端删了,所以在这里可以看到终端的短地址,但是extAddr这个地址怎么看?
我们上面的思路可有问题?
Alvin Chen:
回复 user5367314:
可以先通过段地址来获取关联表里的设备
associated_devices_t *AssocGetWithAddress( byte *extAddr, uint16 shortAddr )
但是感觉你要做无用功,这个设备管理客户不用操作的,你可以设置时间长短。
user5367314:
回复 Alvin Chen:
终端一定时间没和协调器通信,协调器会把该终端放到NotmyChild里,
在NotmyChild里再倒计时,如果还是没有通信,就会把该终端删了
1.NotmyChild的counter时间是多长时间?哪里设置?
2.双方都开启NV,如果终端断电了,过了几天才修复,那么该终端就要重新恢复出厂再入网?
3.掉线问题,仿真发现,终端刚入网的时候AssociatedDevList[].devStatus为0x08,但是过一会就变为了0x68,
此时该终端就会出现每各几分钟就掉线重连问题,每次重连assocCnt就会加1,但是不掉线的终端一直是0x08,
不明白为什么变为0x68,变了之后为什么又经常掉线?
user5367314:
回复 Alvin Chen:
终端一定时间没和协调器通信,协调器会把该终端放到NotmyChild里,
在NotmyChild里再倒计时,如果还是没有通信,就会把该终端删了
1.NotmyChild的counter时间是多长时间?哪里设置?
2.双方都开启NV,如果终端断电了,过了几天才修复,那么该终端就要重新恢复出厂再入网?
3.掉线问题,仿真发现,终端刚入网的时候AssociatedDevList[].devStatus为0x08,但是过一会就变为了0x68,
此时该终端就会出现每各几分钟就掉线重连问题,每次重连assocCnt就会加1,但是不掉线的终端一直是0x08,
不明白为什么变为0x68,变了之后为什么又经常掉线?
Alvin Chen:
回复 user5367314:
你有看我让你看的那部分code吗,那里面写的清楚各种timeout。你第三个问题请你抓包看看,或者换个设备,我认为有可能是你硬件问题。
user5367314:
回复 Alvin Chen:
CC2530终端模块的链接如下:
PCB天线,4DB
https://item.taobao.com/item.htm?spm=a230r.1.14.54.41757d3cmpE567&id=538155647949&ns=1&abbucket=10#detail
抓包如下“”:
抓包1517.psd