测试环境:一个协调器,25个路由设备;
协议栈版本:ZHA1.2.2a
网络设备数量的设置使用的默认值:
#define NWK_MAX_DEVICE_LIST 20
测试过程:
1、为确保所有设备都是直接关联到协调器的,入网一个设备之后,都将此设备断电,再将下个代入网设备上电;
2、在进行前20个设备的入网操作中,入网都正常,进行数据抓包时,协调器发送的“Beacon”中的“router capacity”位也都是为1的;
3、入网第21个设备时,就关联不上了,协调器发送的“Beacon”中的“router capacity”位变成了0;
4、删除几个已入网的设备,第21个设备还是不能入网,协调器发送的“Beacon”中的“router capacity”位始终是0;
5、以上流程反复测试了多轮,现象都一样的;
代码修改再测试:
1、每个设备入网之后,手动删除协调器的关联表。使用函数:AssocRemover( extAddr );
没有起到作用,入网第21个设备的时候,协调器发送的“Beacon”中的“router capacity”位仍然是0;
2、入网第21个设备之前,将之前已入网的设备中的的其中几个进行离网。使用函数:ZDP_MgmtLeaveReq();
没有起到作用,入网第21个设备的时候,协调器发送的“Beacon”中的“router capacity”位仍然是0;
3、在离网设备时,再调用了函数:void ZDApp_LeaveUpdate( uint16 nwkAddr, uint8* extAddr,uint8 removeChildren ),看这个函数中的功能,将关于被离网的设备的地址表、邻居表、路由表都清除了。
没有起到作用,入网第21个设备的时候,协调器发送的“Beacon”中的“router capacity”位仍然是0;
请问:
1、对于一个zigbee设备,其能够直接关联的设备只能不超过20个了。除非将zigbee模块整体擦除,重新刷写程序。
有没有其他的办法,能够让协调器能够继续添加新的设备?
2、协调器发送的“Beacon”时,其中的“router capacity”位时1还是0,都时根据哪些条件判断的?相关代码再协议栈中看不到。