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.

ZLL关于zll_IsFactoryNew的问题

Other Parts Discussed in Thread: Z-STACK

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吗?

望各位好友们不吝赐教!

  • 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

    是通过抓包和debug发现这个问题的。classic join入网方式。

    HA网关设置PANID=0x1234,ZLL设置PANID=0x1235,PANID不同,发现ZLL加入了HA网关。


    classic join加网方式。

  • 能不能把抓包文件另外为,用附件上传啊

    另外你的PANID是在哪里设置的啊?