This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

一个协调器最多只能直接关联20个设备么?

测试环境:一个协调器,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,都时根据哪些条件判断的?相关代码再协议栈中看不到。