微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 怎样让协调器只接受router的入网请求?

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

时间:10-02 整理:3721RD 点击:

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

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

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

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

建议您开启并使用MTO route

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

你好,请问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这个参数是什么意思,是路由地址?

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

在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;
}

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

网站地图

Top