TI工程师:
您好,现在我在使用的是CC2530芯片,软件使用的是zstack 2007.
我想咨询下,在一个小的区域内同时存在多个协调器时,使用协议栈如何控制多个设备加入到对应的网络中呢?
我现在做的是智能家居方面的东西,如何在所有的协调器程序都一样的情况下,不会将邻居的设备添加到我家里。
kai liu3:
回复 VV:
按照您的方法,我尝试了一下,但是可能还是不是我要的效果。想请问您这个permit join这个方法的具体函数是哪一个呢?有可能是我的方法使用不当。谢谢
Aries Lord:
回复 kai liu3:
直接在函数ZDO_JoinIndicationCB里面做文章吧
kai liu3:
回复 Aries Lord:
您好,您能再描述的清晰一些吗?还是没搞清楚,谢谢
VV:
回复 kai liu3:
关于“permit join”的实现问题,你可以用NLME_PermitJoiningRequest( byte PermitDuration )函数来实现
关于你的问题“在咨询您一下 如果我打开了开关,并且加入了一个设备。那么当我把coordinator重新上电时候(启动了恢复网络功能)不打开加入功能,刚刚加入的设备是否还能加入到这个coordinator里面呢? 谢谢”
不打开就没法加入。因为当节点重新搜索网络的时候,收到的beacon里面,permit join位是No的,所以节点不会执行后续的入网过程。
alok chen:
回复 VV:
我在协调器上,执行NLME_PermitJoiningRequest(0),也执行StartOption= ZCD_STARTOPT_CLEAR_STATE|ZCD_STARTOPT_CLEAR_CONFIG;osal_nv_write(ZCD_NV_STARTUP_OPTION,0,sizeof(uint8), &StartOption);终端还是能加入网络,请教还需要什么条件,谢谢
VV:
回复 alok chen:
@alok
应该开启了NV RESTORE对吧。
使能Permit Join只对新入网的设备有效果,如果是已经入网的设备,即便Permit Join禁止了,也没关系,因为已经入网了。
你通过抓包就看的比较清楚了。节点不是通过Associate Request来加网的?
Aries Lord:
我们用的白名单管理机制,家庭主机向协调器输入设备的MAC地址,设备才能连入协调器。