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

协调器怎么样自动切换成路由?

我使用的是1.2.2a的协议栈,写死了panid。现在想实现协调器上电后判断网络是否建立,如果已经建立则自动切换为路由加入网络,否则创建网络。请问要怎么实现?

Viki Shi:

看下这个帖子,修改节点类型: e2echina.ti.com/…/95303

Brightness L:

回复 Viki Shi:

感谢回复,当协调器发现自己的panid已经存在,就会将panid+1,请问这个是在哪里实现的?我想将它改为panid如果存在就改为路由设备,请问这个思路可以实现吗?

Alvin Chen:

回复 Brightness L:

你可以在发现:

/********************************************************************* * @fn ZDApp_CoordStartPANIDConflictCB() * * @brief Returns a PAN ID for the network layer to use during * a coordinator start and there is another network with * the intended PANID. * * @param panid – the intended PAN ID * * @return PANID to try */uint16 ZDApp_CoordStartPANIDConflictCB( uint16 panid ){ return ( panid + 1 );}

Brightness L:

回复 Alvin Chen:

感谢回复,找到了这个函数,但是没发现有被调用,请问在哪个位置调用?

Alvin Chen:

回复 Brightness L:

在网络层发现冲突会调用这个函数,你是看不见网络层的操作的,你应该是发现一个已有panid的网络,然后更改设备类型。

Brightness L:

回复 Alvin Chen:

是的,那我应该在哪里更改设备类型?就是如何发现已有panid的网络?

Alvin Chen:

回复 Brightness L:

如果你是一个已有panid网络,当一个新的协调器建立这个相同的就会触发的这个ZDApp_CoordStartPANIDConflictCB回调函数.
修改设备类型一般是建立网络之前,如果修改我相信在我们网站上检索一下就可以找到.

Brightness L:

回复 Alvin Chen:

1.好的,那我可否在ZDApp_CoordStartPANIDConflictCB这个回调函数里面进行设备的修改?

2.然后我现把return ( panid + 1 );改为return (panid ;发现网络中存在两个协调器。panid一样,短地址也一样。

这是为什么?

Viki Shi:

回复 Brightness L:

1、修改节点在网络建立之前,不要在ZDApp_CoordStartPANIDConflictCB里。方法参考之前发的帖子
2、return ( panid + 1 )改为return (panid)自然会导致panid一样了。

Brightness L:

回复 Viki Shi:

那这样一个网络中就会存在两个协调器了?会不会对网络造成什么影响?

赞(0)
未经允许不得转载:TI中文支持网 » 协调器怎么样自动切换成路由?
分享到: 更多 (0)