TI中文支持网
TI专业的中文技术问题搜集分享网站

怎样让协调器只接受router的入网请求?

我现在遇到的一个问题是这样的:一个网络有EndDevice100个,Router20个,同时上电,这样有时会出现coor下的节点都是EndDevice,导致Router不能入网,最后整个网络只有coor和21个EndDevice.

1、请问怎样才可以只允许Router连接到Coor?

2、有没有什么方法让EndDevic入网的时候只挑选Router作父节点?

Susan Yang:

关于Zigbee 大规模组网,TI有一份专门的文档  http://www.ti.com/lit/an/swra427c/swra427c.pdf

建议您开启并使用MTO route

另外强烈不建议您同时给所有节点上电,建议随机上电

one Man:

回复 Susan Yang:

你好,请问networkDesc_t这个结构体是作什么用的?

typedef struct{ uint16 panId; byte logicalChannel; byte routerCapacity; byte deviceCapacity; byte version; byte stackProfile; uint16 chosenRouter; uint8 chosenRouterLinkQuality; uint8 chosenRouterDepth; uint8 extendedPANID[Z_EXTADDR_LEN]; byte updateId; void *nextDesc;} networkDesc_t;

我在NLMEDE.h中和z-stack API中都没有找到解释。 特别是chosenRouter这个参数是什么意思,是路由地址?

one Man:

找到方法解决问题了,虽然有点不一样。

在void ZDO_beaconNotifyIndCB( NLME_beaconInd_t *pBeacon )中按照以下方法修改就可以了

//MSM:#if defined ( RTR_NWK ) if ( (capacity) && (selected) ) //原代码#else //添加的代码,禁止EndDevice保存Coor作为父节点入网 if ( (capacity) && (selected)&&( pBeacon->sourceAddr != 0x0000) )#endif //MSM

{ // this is the new chosen router for joining… pNwkDesc->chosenRouter = pBeacon->sourceAddr; pNwkDesc->chosenRouterLinkQuality = pBeacon->LQI; pNwkDesc->chosenRouterDepth = pBeacon->depth; }

赞(0)
未经允许不得转载:TI中文支持网 » 怎样让协调器只接受router的入网请求?
分享到: 更多 (0)