微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 如何让电池供电的终端节点只加入到路由器,而不加到协调器网络?

如何让电池供电的终端节点只加入到路由器,而不加到协调器网络?

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

如标题内容:如何让电池供电的终端节点只加入到路由器,而不加到协调器网络?希望能得到解答

补充下,就是让终端节点的父亲只能是路由器,而不是协调器

可以先看一下TI的文档 Using the Direct Join Request Feature in Z-Stack

http://www.ti.com.cn/cn/lit/an/swru124a/swru124a.pdf

该文档是讲由B发起将某个已知节点A加为子节点 

或者参考 http://zigbee-sh.cn/download.asp?id=23&language=cn

非常感谢!

刚才看了susan yang指示的链接,因我使用的是ZStack-CC2530-2.5.1a协议栈,感觉资料不匹配!

链接处资料:

zAddrType_t ZAddr;
ZAddr.addr.shortAddr = 0x796f;
ZAddr.addrMode = Addr16Bit;
ZDP_MgmtLeaveReq( &ZAddr, device_address, 0 );

//以上函数参数只有3个

而在ZStack-CC2530-2.5.1a栈中,

afStatus_t ZDP_MgmtLeaveReq( zAddrType_t *dstAddr, uint8 *IEEEAddr, uint8 RemoveChildren,

uint8 Rejoin, uint8 SecurityEnable )

参数有5个。

根据我的需求,终端节点只能加入到路由器,不加入到协调器。

所以:

1,在协调器上代码要这样做:DP_MgmtLeaveReq(&ZAddr, device_address,1,1,0)       

2,在路由器上代码要这样:NLME_DirectJoinRequest( device_address, mac_cap );

       不知路由器中这个代码是否必须?因为协调器请求终端离开,终端离开后,如果在周围有很多其它路由器,它一定会选择一个加入。

3,终端节点代码要修改:ZDApp.c 中

#if ( ZG_BUILD_RTRONLY_TYPE ) || ( ZG_BUILD_ENDDEVICE_TYPE )

//devStartModes_t devStartMode = MODE_JOIN; // Assume joining  原来默认的
devStartModes_t devStartMode = MODE_RESUME; // if already "directly joined"  to parent. Set to make the device do an Orphan scan  现在修改后要执行的的

#else
// Set the default to coodinator
devStartModes_t devStartMode = MODE_HARD;
#endif

请赐教,谢谢!

感觉文档不能很好解决问题,我的要求是,由B发起将某个子节点踢出,不让它加入自己,尽管很近! 

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

网站地图

Top