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

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

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

user3514461:

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

Susan Yang:

回复 user3514461:

可以先看一下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

user3514461:

回复 Susan Yang:

非常感谢!!

user3514461:

回复 Susan Yang:

刚才看了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

请赐教,谢谢!

user3514461:

回复 Susan Yang:

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

赞(0)
未经允许不得转载:TI中文支持网 » 如何让电池供电的终端节点只加入到路由器,而不加到协调器网络?
分享到: 更多 (0)