打印
[Zigbee]

ZigBee 3.0 Z-Stack 3.01 终端设备入网过程全解析

[复制链接]
1318|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aoyi|  楼主 | 2020-2-1 18:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这篇**主要讲解一个处于“Factory New”状态(协议栈中的bdbNodeIsOnANetwork这个变量值为FALSE)下的“ZigBee终端设备”的入网过程。


一、概念补充


1、信道


(1)DEFAULT_CHANLIST


关于“DEFAULT_CHANLIST”的定义,位于“f8wConfig.cfg”文件中的。


之前的《ZigBee Z-Stack 4.02 基本网络参数设置》这篇**中有提及过,感兴趣的朋友可以去看一下,此处就不再赘述。


(2)BDB_DEFAULT_PRIMARY_CHANNEL_SET


我们姑且将其称为“主信道集”,其在协议栈中的定义位于“bdb_interface.h”文件中,具体定义如下:






(3)BDB_DEFAULT_SECONDARY_CHANNEL_SET


我们姑且将其称为“次信道集”,其在协议栈中的定义也位于“bdb_interface.h”文件中,具体定义如下:






仔细看一下这个宏定义,就能看出来:“次信道集”和“主信道集”其实互为补集。


使用特权

评论回复

相关帖子

沙发
aoyi|  楼主 | 2020-2-1 18:08 | 只看该作者
二、信道扫描(第一步)

1、获取“网络描述符清单”

首先,设备会扫描“主信道集”——BDB_DEFAULT_PRIMARY_CHANNEL_SET中定义的所有信道,搜寻这些信道中任何合适的网络。与此同时,该设备会在本地创建一个“清单”,用于记录扫描到的每一个网络的相关信息,最终保存到pBDBListNwk中,其定义位于“bdb.c”文件中:



我们姑且将pBDBListNwk称为“网络描述符清单”。由其定义可见,pBDBListNwk是一个networkDesc_t类型的指针,而关于networkDesc_t的定义位于“NLMEDE.h”文件中:



由此可见,“网络描述符清单”中的每一个条目都代表搜索到的一个网络的所有信息。而具体每个条目包含了哪些信息,如上图所示,有panId、logicalChannel、routerCapacity、deviceCapacity等等。

2、筛选/过滤/选择网络

协议栈中会通过bdb_RegisterForFilterNwkDescCB()来注册一个回调函数——pfnFilterNwkDesc(),用于对所有找到的网络进行筛选。“网络描述符清单”会作为一个参数,传递给该回调函数,进而实现网络的筛选。

当网络筛选完成后,对于那些被过滤掉(未被选择)的网络,协议栈中会调用bdb_nwkDescFree()将其相关的“网络描述符”给释放掉。

如果没有找到合适的网络,或者无法加入找到的网络(连接不成功或是无法获取“网络密钥”),设备将会扫描“次信道集”——BDB_DEFAULT_SECONDARY_CHANNEL_SET中定义的所有信道,并执行上述同样的步骤。


使用特权

评论回复
板凳
aoyi|  楼主 | 2020-2-1 18:09 | 只看该作者

三、关联和认证(第二步)


四、入网完成(第三步)



五、其他

1、pBDBListNwk,该“网络描述符清单”其实就是一个“链表”。

2、在信道扫描过程中,只有非零的信道才会被扫描,进行“网络发现”。


使用特权

评论回复
地板
kkzz| | 2020-2-2 10:52 | 只看该作者
z-stack协议栈由什么组成?  

使用特权

评论回复
5
lzmm| | 2020-2-2 10:54 | 只看该作者
如何建立自己的Z-stack程序

使用特权

评论回复
6
minzisc| | 2020-2-2 10:55 | 只看该作者
如何升级 Z-Stack 版本到2.6.1

使用特权

评论回复
7
selongli| | 2020-2-2 10:55 | 只看该作者
如何使用Z-STACK协议栈串口

使用特权

评论回复
8
fentianyou| | 2020-2-2 10:55 | 只看该作者
z-stack终端设备进入睡眠后还能接受命令吗

使用特权

评论回复
9
xiaoyaodz| | 2020-2-2 10:55 | 只看该作者
z-stack 2.6 和2.5的区别  

使用特权

评论回复
10
febgxu| | 2020-2-2 10:55 | 只看该作者
zigbee3.0能兼容z-stack2.5.1吗

使用特权

评论回复
11
sdlls| | 2020-2-2 10:56 | 只看该作者
Z-stack Home 1.2.0中,用什么做控制中心

使用特权

评论回复
12
pixhw| | 2020-2-2 10:56 | 只看该作者
z-stack协议栈代码包的各层协议有什么区别

使用特权

评论回复
13
fentianyou| | 2020-2-2 10:56 | 只看该作者
cc2530+rfx2401,在z-stack中怎么使能

使用特权

评论回复
14
kkzz| | 2020-2-2 10:56 | 只看该作者
在zigbee中什么是z-stack

使用特权

评论回复
15
selongli| | 2020-2-2 10:56 | 只看该作者
Z-Stack的终端节点如何尽早判断是否有网络存在

使用特权

评论回复
16
hudi008| | 2020-2-2 10:56 | 只看该作者
如何使用Z-Stack  

使用特权

评论回复
17
minzisc| | 2020-2-2 10:56 | 只看该作者
如何在z-stack中添加事件

使用特权

评论回复
18
lzmm| | 2020-2-2 10:56 | 只看该作者
zigbee组网,用z-stack程序如何修改

使用特权

评论回复
19
pixhw| | 2020-2-2 10:56 | 只看该作者
z-stack协议栈的怎么调用串口回调函数

使用特权

评论回复
20
sdlls| | 2020-2-2 10:56 | 只看该作者
z-stack协议栈是c还是c++

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

3301

帖子

3

粉丝