zigbee组网调用

组网过程


初始化:

osal_init_system()->osalInitTasks()在OSAL.c中

osalInitTasks()->ZDApp_Init()在OSAL_GenericApp.c中

ZDApp_Init()->ZDOInitDevice()在ZDApp.c中

ZDOInitDevice()->ZDApp_NetworkInit()在ZDApp.c中

ZDApp_NetworkInit()->ZDO_NETWORK_INIT在ZDApp.c中


任务轮询:

osal_start_system()->ZDApp_event_loop在OSAL.c中

ZDApp_event_loop->events & ZDO_NETWORK_INIT->ZDO_StartDevice() 在ZDApp.c中

ZDO_StartDevice()根据不同的设备类型(协调器,终端)来形成网络在ZDObject.c中


本来想通过追踪组网的过程来查看在哪里触发GenericApp_ProcessEvent()中有关组网的事件(或者说确定一下

完成组网之后在APP中有没有相关的处理事件),但是很可惜,根据上面的查找思路,最后都趋向于调用下层API

所以就到此为止了。

我们都知道,zstack的组网是上电自动完成的,是不用我们过多操心的。但是我们怎么知道组网有没有成功,或者

怎么根据组网的状态进行下一步调用?(对于前者,LED、LCD会有指示,对于后者,应该是根据

GenericApp_ProcessEvent()中的case ZDO_STATE_CHANGE)。

至于ZDO_STATE_CHANGE,应该是当设备状态由DEV_INIT 改变为 DEV_END_DEV时由ZDO自动触发的(这个

我没有找到代码,是看TI论坛上有人这么说,应该是正确的)。也就是说,只要设备状态改变(这里的状态devState

也有很多定义,至于怎么变还不清楚,应该与组网有关)就会触发事件,所以不太适合处理接收到的信息,但是可

发送信息。

至于接收信息,用AF_INCOMING_MSG_CMD比较合适,具体在哪里触发,我也没找到……(晕,我今天都干了些

神马)


(关于AF_INCOMING_MSG_CMD,这篇文章讲的有点道理,但还有问题,先附上

http://zacard168.blog.163.com/blog/static/51980168201071322455/

(再补一篇参考比较多的文章,关于zigbee组网的硕士学位论文http://www.doc88.com/p-743861203783.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值