ZIGbee基础学习(一)

1.有三种设备:

协调器:启动网络,和配置网络。

路由器:允许其他设备加入,多跳路由等。

2.拓扑结构

ZIGbee基础学习(一)_第1张图片

星形、树形和mesh网络结构,在文件nwk_globals.h的文件里面有定义。

ZIGbee基础学习(一)_第2张图片

3.信标和非信标模式

信标模式:实现了网络中的所有设备的同步工作和同步睡眠。

信标模式下,协调器负责以一定的间隔时间(一般在 15ms-4mins 之间)向网络广播信标

帧。

非信标模式:

则只允许终端设备进行周期性休眠,协调器 和所有路由器 设备必须长期处于工作状态。

4.地址的定义

64位地址全球唯一,16位地址加入网络的时候分配的,协调器的网络地址是0x00

如何寻址:AF_DataRequest()设备发送数据函数

网络模式:单点传送、简洁传送、广播传送等三种

NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——数据包将被传送到网络上的所有设

备,包括睡眠中的设备。对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或

者消息超时(NWK_INDIRECT_MSG_TIMEOUT 在 f8wConifg.cfg 中)。

NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——数据包将被传送到网络上的所

有在空闲时打开接收的设备(RXONWHENIDLE),也就是说,除了睡眠中的所有设备。

NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——数据包发送给所有的路由器,包

括协调器。

ZIGbee基础学习(一)_第3张图片

5.端点

端点 EndPoint 是协议栈应用层的入口,也可以理解应用对象(Application Object)存在的

地方,它是为实现一个设备描述而定义的一组群集。每个 ZigBee 设备可以最多支持 240 这样

的端点,这也意味着在每个设备上可以定义 240 个应用对象。端点 0 被保留用于与 ZDO 接口,

这是每个 ZigBee 设备必须使用的端点,而端点 255 被保留用于广播,端点 241-254 则被保留用

于将来做扩展使用。

6.绑定

它能够通过使用 ClusterID 

为不同节点上的独立端点建立一个逻辑上的连接。以下图为例来说明绑定操作:

简单的理解就是,有一个任务的去控制两个任务

ZIGbee基础学习(一)_第4张图片

ZIGbee基础学习(一)_第5张图片

上图是协议栈分层架构和协议栈代码文件夹的对应关系。

下面就Z-stack的软件架构,进行分析,从而明白如何利用进行工程的开发Z-stask。

ZIGbee基础学习(一)_第6张图片

在函数osal_init_system()里的函数osallnitTask()的这个函数里就要定义用户的初始化函数

ZIGbee基础学习(一)_第7张图片

tasksCnt----------该变量保存任务的总个数

tasksEvent-------这是一个指针,指向了事件表的首地址

tasksArr-----------这是一个指针数组,数组的每一项都指向了一个函数指针,指向了事件处理函数。

事件表tasksEvent的每一项都和tasksArr中的每一项一一对应,这三个对理解OSAL如何执行的很重要。

zstack中的任务、事件和消息之间的关系

Zstack是Zigbee协议的具体实现,在实现的过程中为了能够更好的对各个模块和功能进行管理,所以加入了OSAL(OperatingSystem Abstraction Layer 操作系统抽象层)(以上为个人见解)。

 

  在OSAL中,提出了任务,事件,消息三个概念。它们之间的关系如下:

 

    任务是处理事件的一个功能集合,一般由一个事件处理函数实现(ProcessEvents)

 

    事件是当前系统中被触发的动作,例如有按键按下,接收到其他节点发送过来的消息等等

 

    消息则是事件编号和其对应事件内容的集合,发生事件并将其打包到消息队列,供事件处理函数进行处理

 

    大致的流程如下:

 

    事件发生后-->被打包为消息-->存放到消息队列-->事件处理函数取出消息并进行相应操作。

osal如何添加任务

添加新任务,只需编写两个函数:

新任务的初始化函数;GenericApp_Init( uint8 task_id )

新任务的事件处理函数;GenericApp_ProcessEvent( uint8 task_id, uint16 events)

将任务初始化函数添加在osal_Init_Tasks函数的最后;

将事件处理函数地址加入tasksArr[]

 

你可能感兴趣的:(zigbee)