我使用的是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:
那这样一个网络中就会存在两个协调器了?会不会对网络造成什么影响?
TI中文支持网
