TI中文支持网
TI专业的中文技术问题搜集分享网站

AssociatedDevList表相关问题

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

赞(0)
未经允许不得转载:TI中文支持网 » AssociatedDevList表相关问题
分享到: 更多 (0)