1、ZLL的【!zll_IsFactoryNew】是否是以入网成功分配到短地址来算的吗?代码里是通过读NV比较nwkAddr == INVALID_NODE_ADDR是否为FFFE来判断的,是不是说nwkAddr不等于INVALID_NODE_ADDR就代表ZLL已经入网,不是FactoryNew了?
2、实验(HA + ZLL):已有zigbee网络A存在(HA网关,当作干扰网络,permitjoin=0xff);不断复位ZLL(设置为固定panid与网络A的panid不同,xHOLD_AUTO_START);
发现ZLL会进入【!zll_IsFactoryNew】的代码,调用NLME_GetRequest( nwkNwkState, 0, &state ),发现state=0x08。这样ZLL就出现了既没有正确入网,又认为自己已不是FactoryNew的设备,从而导致即使重新复位也不再发送beacon req的问题。
难道ZLL可以加入到与自身不同的panid的网络吗?
(Z-Stack Lighting 1.0.2原始代码测试。使能了NV_RESTORE就会出现这个现象,xNV_RESTORE就不会出现)
3、HA网关发送ZDP_MgmtLeaveReq命令使ZLL离开网络后,ZLL如何重新搜网入网呢?ZLL搜网入网的前提必须是FactoryNew吗?
望各位好友们不吝赐教!
VV:
1, 是的,你也可以通过代码来理解
bool zll_IsFactoryNew( void ){ uint16 nwkAddr = INVALID_NODE_ADDR;
osal_nv_read( ZCD_NV_NIB, osal_offsetof( nwkIB_t, nwkDevAddress ), sizeof( uint16), &nwkAddr );
// Does the NIB have anything more than default? return ( nwkAddr == INVALID_NODE_ADDR ? TRUE : FALSE );}
2,你抓个包就一清二楚了。
3,你说的搜索网络是指classic join的方式去搜索网络额,还是通过touchlink方式去跟其他的设备配对?
小白杨:
回复 VV:
@vv
是通过抓包和debug发现这个问题的。classic join入网方式。
HA网关设置PANID=0x1234,ZLL设置PANID=0x1235,PANID不同,发现ZLL加入了HA网关。
classic join加网方式。
VV:
回复 小白杨:
能不能把抓包文件另外为,用附件上传啊
另外你的PANID是在哪里设置的啊?