微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > Z-stack下,加入Associate时的白名单黑名单限制。

Z-stack下,加入Associate时的白名单黑名单限制。

时间:12-23 整理:3721RD 点击:

Associate是一个MAC层定义的动作,未加入网络的节点向协调器或者路由器发起Associate申请,协调器或者路由器返回一个AssociateRsp,并带有分配的网络地址。

 

第一种方法,在Zmac_cb.c文件中,找到函数MAC_CbackEvent,这个函数是MAC层把消息上传给NWK层的,可以过滤AssoReq命令。这个地方是判断MAC层生成的消息,并进一步传递给NWK,在传递给NWK前要用osal_msg_allocate分配消息空间,同时会进行一些预处理。其中有个对MAC_MCPS_DATA_IND事件的预处理,就是收到错误的数据包直接return,不上传给NWK。 我们可以在这里添加一个else if(event == MAC_MLME_ASSOCIATE_IND),然后判断pData->associateInd.deviceAddress是否合法,不合法直接return。

第二种方法,在ZDApp.c中找到ZDO_JoinIndicationCB,这里是直接接驳NWK层处理加入网络请求的。可以处理JOIN和REJOIN两种事件。参数type是加入网络的方式,ShortAddress是NWK分配好的网络地址,ExtendedAddress是加入网络的设备的物理地址。在这个地方加入白名单验证,不合法的,直接返回ZFailure。
通过协议分析仪观察,第一种方法,协调器收到AssoReq后不响应AssoRsp,节点超时后重新寻找其它网络。第二种方法,协调器返回的AssoRsp指令,分配的网络地址是0xFFFF,这个地址是不合法的,节点收到后会重新寻找其它网络。

 

感谢分享!第二种方法正解。当然这是一种专属或者私有的解决方法

我尝试了第二种方法,函数总是返回ZFailure,结果还是给子节点分配短地址,怎么办呢?

我尝试了第二种方法,函数总是返回ZFailure,结果还是给子节点分配短地址,怎么办呢?

上一篇:cc2530如何跳频
下一篇:simpliciTI 无AP模式

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top