这个库是我针对Zigbee的优化的一个库,基于z-stack而又比z-stack先进。
如何使用MAC地址过滤?
首先,用这个库,替换掉ZDO文件夹下所有的C文件,再替换所有的.h文件,其中新增了一个ZDEnhanced.h的文件,要加到你的工程中。
在osalInitTasks中,加入函数ZDE_Init,再在tasksArr加入函数ZDE_event_loop,也就是要把ZDE的任务加进去。
然后在你的程序的初始化的地方,调用函数ZDE_RegisterJoinDeniedCB,注册一个回调函数,回调函数的结构为void(*ZDE_JoinDeniedCb_t)(uint16 parent,uint8* extAddr,uint8 cap,bool rejoin);
其中Parent为节点正在加入的父节点地址,extAddr为正在加入节点的MAC地址,CAP为节点的类型,rejoin为节点入网方式。
这时,无论什么节点,都不能加入到网络中了。
如果是在协调器上操作,就调用函数ZDE_AcceptListInput,把MAC地址添加到协调器的白名单中,然后节点就可以入网了。注意,输入参数有个叫life,是该MAC地址的超时时间,单位为秒,只要这个节点在该时间内再次申请入网,才能加入网络。
如果你的网络里面有路由,在函数ZDE_JoinDeniedCb_t有个参数是父节点地址,你可以调用函数ZDE_JoinAcceptReq,把该节点的MAC地址发给其父节点(填写父节点的网络地址),或者用0xFFFC广播给所以的路由节点。
http://pan.baidu.com/s/1pJ9Hi6R
21IC无法上传,我共享到我的百度云。
|