楼主: kennan

End device 节点失去父节点的重新入网处理办法

[复制链接]
doorsoasis 发表于 2012-8-23 09:25:03 | 显示全部楼层
毛毛老师 一个最简单测试环境是不是这样的:
一个coordinator
一个enddevice
然后enddevice 入网这个coordinator.然后将coordinator 远离这个enddevice, 或者直接断电。这个enddevice 就丢失了parent.
如果这样的话的应该是走ZDO_SyncIndicationCB里面的。
下面是TI 的 forum的一个讨论帖。我也做过实验。
http://e2e.ti.com/support/low_po ... 43/68891.aspx#68891
burstonthewing 发表于 2012-8-23 13:34:58 | 显示全部楼层
受益匪浅,非常感谢!
lizheng86312 发表于 2012-8-29 11:51:09 | 显示全部楼层
学到东西了。顶。。。
testfb 发表于 2012-8-29 14:20:19 | 显示全部楼层
如果不是协调器挂掉而是出于意外离线状态的话,后面只要协调器重新起来,那么终端还是在网络中的。
当协调器挂掉的时候,终端会不断的发送Beacon Request直到协调器在线,不知道这样分析是否可行呢?
分析的是Sensor Demo的飞比修改版本。。
burstonthewing 发表于 2012-8-31 14:41:46 | 显示全部楼层
本帖最后由 burstonthewing 于 2012-8-31 14:53 编辑

楼主的思路很给力,针对上面第二种方法,我用source inght搜索过,nwk_Status()函数只在下面三个地方出现过:
Nwk_globals.c (components\stack\nwk):431
* @fn       nwk_Status()
*
* @brief
Nwk_globals.c (components\stack\nwk):442
void nwk_Status( uint16 statusCode, uint16 statusValue )    //----------报告网络状态,added by xlq, 2012.8.22
{
#if defined ( LCD_SUPPORTED )   //由于板子没有LCD,故不会执行下面的代码
Nwk_globals.h (components\stack\nwk):391
extern void nwk_Status( uint16 statusCode, uint16 statusValue );

经过仔细查看,至少在SensroDemo、SampleApp等例程中,nwk_Status()函数没有被调用,应该是调用该函数的部分被TI屏蔽了吧!

经过实验,上述方法很有效,赞一个!
testfb 发表于 2012-9-13 15:43:05 | 显示全部楼层
不知道楼主是否有时间回复下我这个问题,ZDO_SyncIndicationCB()在飞比的Sensor Demo的例子程序里面有被调用。当协调器掉电后它执行DATA Request几次之后没有应答,然后发送了一个orphan notification,之后一直发送bean request,这个时候协调器上电时可以马上连接到网络中的。
maomi2000 发表于 2012-9-14 15:16:56 | 显示全部楼层
kennan 发表于 2012-8-22 11:18
ZDO_SyncIndicationCB,这个函数我试过,掉网没反应哦

已经进了这个函数,是_NIB.CapabilityFlags & ZMAC_ASSOC_CAPINFO_FFD_TYPE这个条件通不过所以没进if
feibit_d 发表于 2012-10-31 17:39:02 | 显示全部楼层
之前没注意,现在真碰到这个问题了
s361021609 发表于 2012-11-3 15:18:13 | 显示全部楼层
doorsoasis 发表于 2012-8-21 09:23
毛毛老师分析的很透彻
但我有个疑问,如果ED丢失了父设备的信息,感觉应该会走ZDO的同步丢失流程。
void  ...

不存在一直复位的问题,复位一次之后就重新回到搜索空间网络那边停在那直到再次入网
rsd1987 发表于 2012-11-8 21:19:49 | 显示全部楼层
不错 学到了 呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表